Mejora de la detección del cáncer con StyleGAN-2 ADA |  de Ian Stebbins |  enero de 2024

Transferencia de aprendizaje y red neuronal convolucional

Para comparar la efectividad de nuestros datos generados sintéticamente, primero entrenamos un modelo CNN con nuestros datos originales. Una vez que tuvimos una precisión de referencia en el conjunto de prueba, volvimos a entrenar el modelo con cantidades cada vez mayores de datos sintéticos en la combinación de entrenamiento.

Para introducir nuestros datos en el modelo, utilizamos generadores de datos de Keras que fluyen las muestras directamente desde un directorio específico al modelo. El conjunto de datos original tiene 4 clases para diferentes tipos de cáncer; sin embargo, para simplificar, convertimos esto en un problema de clasificación binaria. Las dos clases con las que decidimos trabajar a partir del conjunto de datos original de Kaggle fueron las clases normal y escamosa.

# Define directories for training, validation, and test datasets
train_dir = 'Your training data directory'
test_dir = 'Your testing data directory'
val_dir = 'Your validation data directory'

# Utilize data genarators to flow directly from directories
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(224, 224),
batch_size=20,
class_mode='binary', #Use 'categorical' for multi-class classification
shuffle=True,
seed=42 )

val_generator = val_datagen.flow_from_directory(
val_dir,
target_size=(224, 224),
batch_size=20,
class_mode='binary',
shuffle=True )

test_generator = test_datagen.flow_from_directory(
test_dir,
target_size=(224, 224),
batch_size=20,
class_mode='binary',
shuffle=True )

Para construir nuestro modelo, comenzamos utilizando la arquitectura base ResNet50 y los pesos del modelo. Elegimos utilizar ResNet50 debido a su arquitectura de tamaño moderado, buena documentación y facilidad de uso a través de Keras. Después de importar ResNet50 con los pesos del modelo Imagenet, congelamos las capas de ResNet50 y agregamos capas densas entrenables en la parte superior para ayudar a la red a aprender nuestra tarea de clasificación específica.

También optamos por incorporar la normalización por lotes, que puede conducir a una convergencia más rápida y un entrenamiento más estable al normalizar las entradas de las capas y reducir el cambio de covariables interno. [3]. Además, puede proporcionar un efecto de regularización que puede ayudar a prevenir el sobreajuste en nuestras capas densas entrenables agregadas.

Nuestra arquitectura modelo

Al principio, nuestro modelo no funcionaba bien. Resolvimos este problema cambiando nuestra función de activación de ReLU a ReLU con fugas. Esto sugirió que nuestra red puede haber estado enfrentando el problema de ReLU moribundo o de neuronas muertas. En resumen, dado que el gradiente de ReLU siempre será cero para números negativos, esto puede provocar que las neuronas “mueran” y no contribuyan a la red. [4][5]. Dado que Leaky ReLU es distinto de cero para valores negativos, usarlo como función de activación puede ayudar a combatir este problema.

Resultados

Para probar nuestros datos sintéticos, entrenamos la CNN anterior en 5 instancias separadas con 0%, 25%, 50%, 75% y 100% de muestras sintéticas adicionales. Por ejemplo, 0% de muestras sintéticas significaba que todos los datos eran originales, mientras que 100% significaba que el conjunto de entrenamiento contenía cantidades iguales de datos originales y sintéticos. Luego, para cada red, evaluamos el rendimiento utilizando una métrica de precisión en un conjunto real de datos de prueba invisibles. El siguiente gráfico visualiza cómo las diferentes proporciones de datos sintéticos afectan la precisión de las pruebas.

Precisión de la prueba en la clasificación binaria (tumor normal versus escamoso)

El entrenamiento del modelo fue inestable, por lo que descartamos iteraciones en las que la precisión era 1,0 o extremadamente baja. Esto nos ayudó a evitar iteraciones de entrenamiento que estaban demasiado ajustadas o insuficientes.

Podemos ver que del 0 al 25% vemos un fuerte aumento en la precisión de las pruebas, lo que sugiere que incluso aumentar el conjunto de datos en una pequeña cantidad puede tener un gran impacto en problemas donde los datos son inicialmente mínimos.

Dado que solo entrenamos nuestra GAN en 80 KIMG (debido a limitaciones informáticas), la calidad de nuestros datos sintéticos podría haber sido mejor, dadas más iteraciones de entrenamiento de GAN. En particular, un aumento en la calidad de los datos sintéticos también podría influir en el gráfico anterior. Nuestra hipótesis es que un aumento en la calidad sintética también conducirá a un aumento en la proporción óptima de datos sintéticos utilizados en el entrenamiento. Además, si las imágenes sintéticas pudieran adaptarse mejor a la distribución real de nuestros datos de entrenamiento, podríamos incorporar más en el entrenamiento del modelo sin sobreajuste.

Conclusión

En este proyecto, el uso de GAN para aumentar datos limitados ha demostrado ser una técnica eficaz para ampliar los conjuntos de entrenamiento y, lo que es más importante, mejorar la precisión de la clasificación. Si bien optamos por un problema pequeño y básico, esto podría ampliarse fácilmente de varias maneras. El trabajo futuro puede incluir el uso de más recursos computacionales para obtener mejores muestras sintéticas, introducir más clases en la tarea de clasificación (convirtiéndola en un problema de múltiples clases) y experimentar con arquitecturas GAN más nuevas. De todos modos, el uso de GAN para aumentar pequeños conjuntos de datos ahora puede traer muchos problemas que antes estaban limitados por datos al alcance de las redes neuronales profundas.

Conjunto de datos de Kaggle

Recopilamos nuestras imágenes aumentadas y redimensionadas en lo siguiente Conjunto de datos de Kaggle. Contiene 501 imágenes sintéticas normales y 501 escamosas de 224×224 que se pueden utilizar para experimentación adicional.

Nuestro Repositorio de GitHub

Citas

[1] Hany, Mohamed, Imágenes de tomografía computarizada de tórax Conjunto de datosKaggle (2020).

[2] Karras, Tero y otros, Entrenamiento de redes generativas adversarias con datos limitados (2020), Avances en los sistemas de procesamiento de información neuronal 2020.

[3] Ioffe, Sergey y Christian Szegedy, Normalización de lotes: acelerar el entrenamiento profundo de la red reduciendo el cambio de covariables interno(2015), Conferencia internacional sobre aprendizaje automático. pmlr, 2015.

[4] Él, Kaiming y otros, Profundizando en los rectificadores: superando el rendimiento a nivel humano en la clasificación de imagenet(2015), Actas de la conferencia internacional IEEE sobre visión por computadora. 2015.

[5]Bai, Yuhan, Revisión de la función RELU y la función derivada(2022), SHS Web de Conferencias. vol. 144. EDP Ciencias, 2022.