En muchos problemas de clasificación de imágenes podemos encontrarnos ante una dificultad: la escasez de las mismas, es decir, que una o varias clases se encuentren infrarrepresentadas con respecto al resto.
Como ejemplo de esto, ponemos un caso de estudio probado de clasificación de imágenes de radiografías de pulmón, donde hay que diagnosticar entre pulmones afectados por neumonía, por COVID-19 o sanos.
En la gráfica inferior, se puede ver cómo en los datos utilizados el número de imágenes sanas es bastante inferior a las afectadas por neumonía o COVID-19. Del mismo modo, los afectados por neumonía son inferiores a los afectados por COVID-19. Este sesgo en los datos de radiografías de pulmón se debe a que las bases de datos públicas se centran principalmente en el estudio de esta enfermedad y lo habitual no es realizar este tipo de pruebas a pacientes sanos.
El hecho de utilizar conjuntos de datos tan desbalanceados puede repercutir en una mala generalización por parte del modelo de clasificación entrenado. Por ello, para conseguir más imágenes de alguna de las clases se suelen aplicar transformaciones geométricas como pueden ser el volteo o el zoom.
Estas transformaciones geométricas son las más habituales a la hora de entrenar modelos de clasificación de imágenes. En el ejemplo siguiente vemos cómo de una imagen original de un coche, aplicando estas transformaciones, conseguimos dos imágenes extras.
El problema de estas técnicas de transformaciones geométricas para generar imágenes, es que, a veces, las imágenes conseguidas se alejan de la realidad. Si las aplicamos a nuestro caso concreto de radiografías de pulmón conseguiríamos algo parecido a esto:
Vemos cómo la imagen volteada y con zoom pierden el aspecto de una radiografía convencional y esto puede ocasionar errores en el modelo de clasificación de imágenes.
Por ello, se aplican otras técnicas de generación de imágenes a partir de las disponibles. Unas de las más novedosas, y que proponemos utilizar para este caso más abajo, son las basadas en GANs.
Técnicas de generación de imágenes basadas en GAN
Para solventar este problema, proponemos el uso de técnicas de generación de imágenes basadas en GAN. GAN son las siglas de Generative Adversarial Networks, una arquitectura de red presentada por Ian J. Goodfellow en 2014, para generar imágenes sintéticas a partir de un ruido aleatorio. Estas redes son conocidas por emplearse en la generación de los famosos Deepfakes.
La arquitectura GAN
La arquitectura GAN está constituida por dos redes neuronales: Generador (G) y Discriminador (D). D va a ser entrenado para distinguir lo mejor posible entre imágenes reales e imágenes generadas. Por otro lado, G tratará de generar imágenes lo más reales posibles para así “engañar” a D. Los resultados finales serán las imágenes que genera G.
A partir de la publicación de Goodfellow, se han presentado diversas arquitecturas como la CycleGAN, CUT, DCLGAN, etc. Estas resuelven el problema de traducción de imágenes por el cual, en base a imágenes de dos categorías diferentes, la red es capaz de transformar la imagen de una categoría en su versión equivalente en la otra categoría.
Algunas transformaciones que se han conseguido son: fotografía a pintura, fotografías diurnas a fotografías nocturnas o fotografías con paisajes de invierno a fotografías con paisaje de verano. Las tres arquitecturas mencionadas en concreto se encuentran en el estado del arte de las que mejores resultados obtienen a día de hoy.
Experimentación con las arquitecturas GAN
Evaluamos las tres arquitecturas mencionadas sobre un conjunto de datos ampliamente utilizado para este tipo de pruebas llamado horse2zebra, con el que a partir de imágenes reales de caballos se van a generar imágenes de cebras sintéticas. Antes de aplicarlas al caso de las radiografías, obtuvimos los siguientes resultados con este dataset:
En general, la arquitectura que mejor se comportó fue la CycleGAN, así que fue la que utilizamos en el caso de uso de clasificación de radiografías de pulmón.
Desarrollo y evaluación de la aumentación de datos
En primer lugar entrenamos con las imágenes originales una red convolucional mediante transfer learning, de forma que tuviéramos un modelo base al que batir con las imágenes generadas. Los resultados que obtuvimos con esa red fueron los siguientes:
Como la clase “Normal”, que representa a los pulmones sanos, es la que menos acierto consigue siempre, la estrategia que seguimos fue la de generar imágenes sintéticas de pulmones sanos a partir de pulmones afectados por neumonía. Con esto se pretende mejorar la clase “Normal” sin empeorar las clases “COVID-19” y “Neumonía”. Algunas de las imágenes que se consiguieron con la arquitectura de CycleGAN fueron las siguientes:
Generamos dos conjuntos de 100 y 200 imágenes sintéticas de radiografías de pulmones sanos a partir de radiografías de pulmón afectados por neumonía. Incluyendo estas imágenes sintéticas en el conjunto original, se entrenaron dos redes convolucionales y se evaluaron sus resultados. La forma de entrenar y evaluar ha sido la siguiente:
- Entrenamiento: combinación de imágenes originales con sintéticas o solo imágenes originales.
- Validación y testeo: solo imágenes originales, no usadas para generar imágenes sintéticas ni durante el entrenamiento.
En ambas redes, con imágenes sintéticas, se consiguió mejorar el acierto de la clase “Normal”, que es lo que se pretendía, ya que es con la que menos imágenes se contaba y la que peores resultados obtenía.
Al mejorar en la clase “Normal”, se empeora levemente el acierto en la clase “Neumonía”, aunque en ciertos problemas sacrificar el acierto de una clase por aumentar el de otra puede no suponer un problema.
También destaca el hecho de que, al usar técnicas tradicionales como el zoom y el volteo, los resultados en la clase sana empeoran. Esto es debido a que estas transformaciones, como se comentó antes, alteran características inmutables de las radiografías como, por ejemplo, la orientación en la que se encuentra.
Aumentación de imágenes usando técnicas basadas en GAN
En el caso de uso estudiado de clasificación de radiografías de pulmón, estas técnicas basadas en arquitecturas GANs sí que aportan un beneficio frente a las técnicas tradicionales de aumentación de datos.
A la hora de aplicarlas a otros problemas, habría que evaluar si se puede realizar la generación de imágenes de forma correcta. En el IIC, tenemos experiencia en la aplicación de las últimas tecnologías de visión artificial y aplicamos diversas técnicas para adaptarnos a la naturaleza particular de cada caso, además de mantenernos actualizados sobre los distintos avances que se van realizando en este campo.
Qué es el CycleGan? Puede utiliarse en una computadora común?