Tómatelo a pecho: Detección de tumores malignos de cáncer de mama con Inteligencia Artificial

La Paz. Machine Learning. Segunda edición. 2020

Introducción

El cáncer de mama es la primera causa de muerte por tumores malignos en las mujeres a nivel mundial. Al menos en el año 2019 murieron cerca de 688 mil debido este padecimiento, lo cual nos da una tasa de mortalidad para mujeres mayores de 20 años de 24.7 por cada 100 mil.

Motivación

Existe una brecha de mortalidad por cáncer de mama entre países por nivel de ingresos, el 70%(483,000) de los fallecimientos ocurren en los países de ingresos medios y bajos. ¿A qué se deberá?, sucede que en los países de ingresos medios y bajos, hay una falta de acceso a servicios de diagnóstico y tratamiento de esta enfermedad.

Tasa de mortalidad e incidencia

  1. Norteamérica 22%
  2. Latinoamérica y el Caribe 38%
  3. África Sub-Sahariana 65%

Entre el 50 y 63% de las muertes por cáncer de mama en todo el mundo son prevenibles con detección temprana y tratamiento adecuado. Entre el 66 y 74% de estas muertes que son prevenibles ocurren en países en desarrollo. Asimismo, el cáncer de mama, detectado a tiempo y con tratamiento adecuado puede curarse. Y en caso de que no, puede elevar la calidad de vida de las pacientes al menos hasta 5 años (en Norteamérica).

De esta problemática surge nuestro proyecto social. Sabemos que la situación es muy desfavorable para las mujeres, así que podemos contribuir a generar un modelo de machine learning que pueda ayudar a la predicción de este tipo de tumores con el cual, en un futuro muchas mujeres podrían acceder a un método de detección barato y digno, aumentando así su calidad de vida al enfrentarse con esta enfermedad genética.

https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781783980284/5/ch05lvl1sec30/using-decision-trees-
Detección de cáncer de mama usando el dataset de Diagnosis Wisconsin

Objetivo

Explorar distintos algoritmos de ML (Machine Learning, por sus siglas en inglés) supervisados y no supervisados utilizando el dataset de Wisconsin sobre diagnóstico (explicado más adelante), para compararlos y verificar cual es el que nos proporciona el mejor modelo de detección de cáncer de mama, así como revisar que variables proporcionan mayor información sobre la detección.

Como objetivo sería plantear una generalización de base de datos que pudiera implementarse en cualquier país al que se lleve este diagnóstico.

Proyecto

Se trabajó en una comparativa de ciertos modelos supervisados y no supervisados para determinar la precisión de cada uno y posteriormente utilizarlo para la predicción.

Dataset

Los datos que vamos a utilizar para este primer ejercicio son los proporcionados en el dataset de diagnóstico de Wisconsin que contiene variables sobre la forma del tumor (en términos de núcleo de las células) y su dianóstico, como se muestra a continuación:

  1. id: etiqueta por observación.
  2. diagnóstico: variable binaria que clasifica el tumor. (M=maligno, B=benigno)
  3. radio: media de las distancias del centro al perímetro.
  4. textura: desviación estándar de los valores gradiente de las imágenes.
  5. perímetro: medida del contorno del núcleo celular.
  6. área: medida del área del núcleo celular.
  7. suavidad: variación local de las longitudes del radio
  8. compacidad: medida calculada por ((perímetro²/area) -1)
  9. concavidad: severidad de las porciones cóncavas del contorno
  10. puntos de concavidad: número de las porciones cóncavas del contorno
  11. simetría: similitud entre partes con respecto a ejes.
  12. dimensión fractal: índice comparativo sobre el detalle de un patrón observado de células.

De las variables 3–12 asociamos las métricas: media, error estándar, error extremo.

Descripción del dataset con sus métricas

Análisis exploratorio

Después de haber revisado las variables del dataset procedemos a evaular la distribución del feature diagnostico para saber el balanceo de los datos, esto tiene una repercusión a la hora de entrenar a los modelos, porque como podemos ver en la gráfica siguiente tiene una mayor cantidad de datos asociada a diagnóstico de tumores benignos.

Variable diagnóstico

Posteriormente procederemos a ver los mapas de correlaciones entre variables para identificar si hay que hacer algún preprocesamiento antes de entrenar los modelos.

Mapa de correlaciones con las métricas

Las gráficas anteriores ilustran que en general los tres mapas muestran correlaciones similares, los promedios muestran una correlación más intensa que los valores extremos y a su vez, los valores extremos muestran una correlación más clara que el error estándar, sin embargo en los tres mapas se mantiene la tendencia entre variables.

Destacaremos las correlaciones más evidentes:

  1. radio con perimetro/área/puntos de concavidad: se debe a la forma de calcular estas variables dependen directamente del radio.
  2. perímetro con área/ concavidad/puntos de concavidad: estas correlaciones tienen que ver con lo mencionado en el 1.
  3. suavidad con compacidad
  4. compacidad con concavidad/puntos de concavidad/simetria

Después se realizaron los mapas de correlaciones más específicos que incluyen las tres métricas de las variables con relaciones más destacadas mencionadas anteriormente.

Mapas de correlaciones con las tres métricas

La siguiente gráfica tiene una particularidad, se observa que para las métricas del área los extremos están altamente correlacionados con la media. Y el error estándar es la métrica menos correlacionada con respecto a las otras dos.

Mapa de correlaciones del área

Por último mostraremos las distribuciones y diagramas de dispersión para la media por el tipo de diagnostico, lo cual nos da un indicador de como se comportan las densidades que se puede englobar en los siguientes grupos:

  1. Existe una separación casi total entre densidades: no comparten ni forma ni soporte.
  2. Existe una separación regular entre densidades: comparten forma o soporte.
  3. Existe una separación mínima entre densidades: comparten forma y soporte excepto ligeras variaciones.
Distribuciones sobre la media utilizando la variable diagnostico

Algoritmos no supervisados

PCA

Proponemos este análisis debido a que la estructura de nuestra base de datos tiene una dimensión alta (30 variables) por lo tanto esta técnica de análisis no supervisado nos ayudará a reducir la cantidad de componentes (variables) de nuestra base de datos, proyectando las variables originales a un subconjunto de las mismas.

El conjunto final de las variables escenciales después de este análisis, eliminará las que estén posiblemente correlacionadas. Tenemos ahora una aproximación apriori que terminará de definirse con este análisis, dado que queremos formar dos clusters por la forma binaria que tiene nuestra variable objetivo diagnostico.

La siguiente tabla muestra el porcentaje de varianza que acumula cada una de las componentes principales, consideramos en principio 10 componentes principales, como se observa en la tabla la primera y segunda componente explican el 44.27% y el 18.97% de la varianza respectivamente, lo que implica que las primeras dos componentes explican el 63.24% de la varianza.

PCA con n_components = 10

Así que repetiremos el procedimiento pero para ahora solo sacar 2 componentes, ya que obtienen más del 60% de la varianza total.

Distribución de 2 clústers para la variable diagnostico

Ahora vamos a intentarlo con n=3 y podremos observar el mismo comportamiento que con dos dimensiones. En conclusión hay un agrupamiento claro con respecto al tipo de diagnóstico, incluso podría separarse linealmente (con una recta en el caso bidimensional y con un plano en el caso tridimensional) salvo algunas observaciones que se diseminan por completo.

PCA n_componentes = 3

K-Means

Para este algoritmo de ML, utilizamos el dataset sin reducción, y entrenamos el modelo para que realizara una maximización de la separación de los clústers dadas las características que tenemos (28 variables, removiendo el label).

Para este caso una visualización tipo silueta puede ayudar mucho a explicar los resultados. El Silhouetter Score fue de 0.697 es decir, que tan bien separados están los clústers, recordando que 0 quiere decir que hay overlapping y 1 que están perfectamente delimitados.

Visualización de Silueta para los 2 clústers principales de la variable diagnostico

Para probar este modelo decidimos generar datos random con las variables seleccionadas del dataframe y estos fueron los resultados:

El modelo es capaz de clasificar si están en 1 (Benigno) y 0 (Maligno) dependiendo de los valores entrantes que fueron generados de manera random. Esto posteriormente con datos reales, podría detectar tumores de mama hasta con una probabilidad de 69%, lo cual es poco deseable. Más adelante con los algoritmos supervisados podremos elevar este porcentaje.

Algoritmos Supervisados

Regresión Logística

Nuestro proyecto entra en la categoría de clasificación binaria, debido a que tenemos una variable diagnostico que solo nos muestra si es benigno o maligno. Por tanto, este modelo nos beneficia al darnos una primera aproximación para la resolución del problema. En primera instancia, aplicamos el algoritmo de regresión logística para los datos en sus 30 dimensiones y para ver claramente como está funcionando este clasificador, emplearemos una matriz de confusión como se muestra a continuación.

Matriz de confusión sobre falsos positivos, falsos negativos, verdaderos negativos y verdaderos positivos

Dada la predicción anterior podemos incluir la precisión del modelo calculada con la métrica de sklearn accuracy_score fue de 0.962765. Resultado que es mucho mejor que nuestro anterior modelo no supervisado (KMeans).

Un diagnóstico más específico es la probabilidad de predicción por observación, es decir, qué tan probable es que esa observación sea clasificada como Benigno o Maligno. Así que vamos a ver su desempeño por cross-validation. Cross-Validation Accuracy Scores [0.94871795 0.92105263 0.94736842 0.92105263 0.97368421 0.97368421 0.97368421 0.94736842 0.92105263 0.94736842].

Por lo anterior concluimos que en promedio tenemos una precisión del 94.6%, sin embargo es necesario revisar la estructura del modelo y los supuestos del mismo.

Regresión Logística paso por paso

Después de la pasada primera aproximación del modelo es momento de revisar si se cumplen ciertos supuestos requeridos para el desarrollo de la regresión logística, algunos de estos supuestos los enunciaremos a continuación.

  1. La variable objetivo debe ser binaria. En nuestro caso diagnostico es ‘M’ o ‘B’.
  2. El resultado de la variable de interés asociado al “éxito” debe ser 1.
  3. Solo deben incluirse las variables significativas.
  4. Las variables deben ser independientes entre sí, para evitar el problema de multicolinealidad.
  5. Debe haber un tamaño de muestra “suficiente”

Procederemos a la construcción de la regresión lineal cuidando estos supuestos.

En un principio detectamos que nuestra muestra no estaba balanceada en cantidad de observaciones malignas (~37%) y benignas (~62%), para lo cual se utilizó la biblioteca SMOTE debido a que realiza una generación aleatoria de las observaciones faltantes basada en KNN.

Balancenado las observaciones para tener la misma cantidad de observaciones B y M

Nota: Solo sobremuestreamos en el conjunto de datos de entrenamiento, puesto que la información que hay en los datos de prueba no será incorporada en el modelo de entrenamiento.

Para “Solo deben incluirse las variables significativas”, es necesario identificar las variables que tengan el mejor rendimiento, así poder incluir finalmente variables o características más pequeñas y más representativas. Estas fueron las variables elegidas:

“radio_medio”,”textura_medio”,”perimetro_medio”,”area_media”,”suavidad_media”,”compacidad_media”,”concavidad_media”,”puntos_concavidad_media”,”simetria_media”,”dim_fractal_media”,”radio_ee”,”textura_ee”,”perimetro_ee”,”area_ee”,”suavidad_ee”,”compacidad_ee”,”concavidad_ee”,”puntos_concavidad_ee”,”simetria_ee”,”dim_fractal_ee”,”radio_extremo”,”textura_extremo”,”perimetro_extremo”,”area_extremo”,”suavidad_extremo”,”compacidad_extremo”,”concavidad_extremo”,”puntos_concavidad_extremo”,”simetria_extremo”,”dim_fractal_extremo”

Ahora implementaremos el modelo con las nuevas variables seleccionadas y los datos balanceados:

Verificando manualmente el valor p de cada una de las variables, quitamos aquellas tales que el valor p exceda .05 que es nuestro nivel de confianza. Ahora vamos a revisar el supuesto de independencia revisaremos nuevamente las correlaciones con las variables finales de nuestro modelo.

Correlaciones para las variables finales

El mapa de correlaciones anterior sugiere una alta correlación para radio_medio y perimetro_extremo por lo que quitaremos una de las dos basándonos en la calificación obtenida en el desempeño del modelo.

Logit sobre el modelo y ver la mejor calificación de radio_medio vs perimetro_extremo

Ahora las variables seleccionadas muestran una correlación en general baja, lo que aporta a la hipótesis de independencia. Ahora calificaremos nuevamente el desempeño de nuestro modelo. Primero obtendremos la nueva matriz de confusión y posteriormente la precisión.

Ya no hay variables dependientes o con altas correlaciones

Ahora nuestra precisión es de 0.918. Así se ve la matriz de confusión:

Matriz de confusión

Por último, vamos a comprobar con un ROC Curve que es una herramienta usada en modelos de clasificación binarios, la forma de interpretar esta gráfica es que un clasificador preciso debe estar lo más lejos de la línea identidad (excepto en los extremos).

ROC Curve para verificar la precisión del modelo

Después de este procesamiento, podemos concluir que tenemos una precisión del 92% en promedio la cual es inferior a la propuesta en el primer modelo de regresión logística, la ventaja de este último modelo es la reducción de dimensión de 30 variables a 6 además de que se apega más a los supuestos del modelo de Regresión Logística, esto puede tener implicaciones en cuanto a generalización (que funcione en otras bases de datos) y costo computacional (menos tiempo de procesamiento).

SVM

Este algoritmo tiene como objetivo clasificar con base en distancias a hiperplanos diferentes clases de observaciones, es preferido por su nivel de precisión y su bajo costo computacional. Además otra ventaja de este algoritmo es que funciona bien para grandes dimensiones, es decir para gran cantidad de variables explicativas.

Después de esta implementación obtuvimos una precisión del 92.98% sin embargo, hay ciertas observaciones que es importante resaltar sobre este algoritmo.

  • Este algoritmo no es muy preciso cuando no hay una clara separación entre las clases de variables, en nuestro caso puede observarse en la visualización de PCA que existen observaciones que están mezcladas entre clases.
  • Este algoritmo optimiza distancias, es decir que no existe un fundamento estadístico para la clasificación, no considera la distribución de los datos.

KNN

Implementaremos ahora el algoritmo de KNN que es un algoritmo no paramétrico usado con frecuencia como modelo de clasificación o regresión.

Primero graficaremos el número de clústers que maximiza la función.

La maximización de clústers

Obtuvimos una precisión del 96.27% que es mayor a las precisiones obtenidas en los modelos anteriores, sin embargo hay que hacer ciertas observaciones sobre este modelo:

  • Este modelo no tiene un buen desempeño cuando hay gran cantidad de variables. Esto implica que para un nivel de precisión fijo, conforme crece el número de variables explicativas la cantidad de observaciones debe crecer de manera exponencial.
  • Tiene poco poder de generalización, es decir, tiene problemas de sobreajuste.
  • Los puntos anteriores implican que existe un gran costo computacional correr este algoritmo.

And last but not least…

Random Forest

Como esperábamos este modelo tiene una precisión del 97.36% que es la más alta con respecto a los demás modelos, algunos comentarios sobre este modelo son:

  • Este modelo es fundamentalmente predictivo, no explicativo, no tiene un sentido claro del procesamiento de información.
  • Para problemas complejos el costo computacional puede crecer demasiado.

Conclusiones

Después de probar los modelos anteriores notamos que cada una de las implementaciones tienen ventajas y desventajas, además existen modelos que se complementan entre sí como observamos en el caso de PCA, regresión logística y SVM, en donde un modelo de aprendizaje no supervisado puede trazar las posibilidades de clasificación y reducción de dimensiones, posteriormente implementar un modelo de aprendizaje supervisado para la predicción de la variable dependiente.

Cada problema tiene un contexto particular que debe ser considerado para la propuesta de modelos específicos, la cantidad y tipo de variables explicativas configuran el marco de referencia para la implementación de modelos.

En el caso particular de nuestro problema, el objetivo de predicción de la variable dependiente diagnóstico puede ser abordado en general desde dos perspectivas:

  • Por un lado, tenemos la meta de pronósticar con la mayor precisión si el diagnóstico para la paciente es favorable o lamentablemente desfavorable, de acuerdo a las métricas obtenidas si seguimos esta única meta el modelo de Regresión Logística nos da una precisión superior a los demás lo que se traduce en un error mínimo al clasificar, sin embargo es cuestionable su generalización a otras bases de datos relacionadas con este problema.
  • Por otro lado, tenemos la meta de generalizar este modelo a otras bases de datos, por lo que en este sentido nos inclinamos por el modelo de Regresión Logística paso a paso, dado que además de que se apega mejor a los supuestos específicos del modelo disminuye la dimensión del problema de 30 variables explicativas a 6 varaiables, esto último tiene impacto positivo en términos de procesamiento computacional y almacenamiento/recolección de datos.

Es cierto que para el objetivo de generalización perdemos puntos porcentuales de precisión (dado que la Regresión Logística paso a paso tiene una precisión del 92% en promedio) pero la ventaja de generalizar este modelo es una prioridad específicamente dadas las cifras de mortalidad que actualmente están asociadas al cáncer de mama.

Extender este modelo a bases de datos generadas por otros países, especialmente los de menor ingreso y peor cobertura de salud pública se traduce en menores tiempos de espera en diagnóstico, menor costo de procedimientos y tratamiento oportuno para las pacientes.

Otra ventaja en términos prácticos que sigue el mismo eje, es que las variables relevantes incluídas en el modelo final son 6, lo que representa una disminución del 80% en la dimensión del problema, para los países con menor presupuesto para investigación y salud será más barato crear bases de datos con solo 6 métricas por observación, también el almacenamiento y el posterior procesamiento de la información será más fácil y oportuno.

Referencias

Los datos presentados en la introducción fueron obtenidos de los siguientes artículos:

Integrantes

  • María José Sedano Castañeda
  • Dante Fernando Bazaldua Huerta
  • Carlos Alberto Gomez Vazquez

Presentación del proyecto: DemoDay

Repositorio

En el siguiente repositorio se encuentra el código usado para desarrollar esta aplicación: https://github.com/SaturdaysAI/Projects/tree/master/Lapaz/2021.ML2/Equipo%204

¡Más inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

0_OQ2gYZrD8JOFzhzB

Deep Learning aplicado a detección temprana de incendios forestales

La Paz. Segunda Edición. 2021

En el mundo, los incendios forestales constituyen la causa más importante de destrucción de bosques. En un incendio forestal no sólo se pierden árboles y matorrales, sino también casas, animales, fuentes de trabajo e inclusive vidas humanas.

Como se puede apreciar en la Fig.1 en Bolivia los últimos siete meses este fenómeno se multiplicó de manera alarmante el área afectada debido a múltiples factores la Fig. 2 muestra algunas de las causas estudiadas para los incendios forestales. Otro factor importante identificado es el cambio climático que debido al aumento de temperatura en los lugares afectados, aumenta las áreas afectadas de manera alarmante.

Fig. 2 Causas identificadas de los incendios forestales (Vélez)

Debido a las consecuencias de los incendios forestales no controlados ni planificados se deben tomar diferentes estrategias que permitan mitigar su ocurrencia en zonas protegidas o prohibidas para esta actividad.

Descripción del problema

En base a lo mencionado anteriormente se plantea el siguiente problema:

¿Cómo identificar de manera oportuna incendios forestales no controlados para minimizar su impacto?

Objetivo general

Se plantea como objetivo general implementar un modelo de Deep Learning para la detección temprana de incendios forestales mediante el reconocimiento de humo en las áreas llanas/boscosas utilizando imágenes del lugar.

El siguiente gráfico muestra la idea central del proyecto.

Fig. 3 Propuesta del proyecto

Recolección de la información

El dataset para realizar el entrenamiento de los modelos se realizó mediante la descarga de imágenes clasificadas como “incendio forestal” (imágenes tomadas en perspectiva con presencia de humo en zonas forestales) y “no incendio forestal” (imágenes tomadas en perspectiva en zonas forestales sin presencia de humo o fuego).

Las imágenes descargadas (4 grupos de imágenes) fueron llevadas a un repositorio github para su importación sencilla en Google Colab.

Impresión de las 8 primeras imágenes de entrenamiento y 8 primeras imágenes de validación:

Selección de los modelos

La selección de los modelos parte de las siguientes consideraciones:

  • Facilidad de su implementación.
  • Rendimiento del modelo.
  • Limitación de cálculo.

Estas consideraciones son debido a los recursos que se tienen para realizar el objetivo general. Los modelos a desarrollarse son:

  • CCN Personalizado
  • VGG-16

Técnicas implementadas

La principal técnica utilizada para compensar el dataset de tamaño limitado por la limitación de búsqueda de imágenes en Google fue la de “data augmentation” realizada por la librería de kerasImageDataGenerator”.

Fig 5. Data Augmentation
Fig. 6 ImageDataGenerator en Keras

Evaluación de modelos

1. CNN personalizado

2. VGG-16

Análisis de resultados

A continuación se muestran los resultados del modelo CNN personalizado y VGG-16.

1. Precisión y Curva de ROC de CNN personalizado:

Curva ROC de CNN personalizado

2. Precisión y Curva de ROC de VGG-16:

Precisión de VGG-16.
Curva de ROC de VGG-16.

Las predicciones de los modelos a continuación:

1. CNN Personalizado

2. VGG-16

Conclusiones

El modelo CNN personalizado tiene un desempeño adecuado para la detección de incendios forestales. El modelo VGG-16 con el elemento de pre-entrenamiento requiere más elaboración para obtener resultados más precisos. De esta manera un modelo Deep Learning no siempre requiere tener una alta complejidad para realizar la clasificación de manera eficiente.

El modelo desarrollado obtiene muy buenos pronósticos para el problema planteado y es una solución complementaria al problema de incendios forestales.

La utilización de modelos de AI Deep Learning pueden ser mejor explotados como complemento a la solución de problemas coyunturales.

Integrantes

Presentación del proyecto: DemoDay

¡Más Inteligencia Artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

Machine Learning aplicado a la Industria textil

La Paz. 2021

El proyecto comenzó con esta pregunta: ¿Será posible mejorar la toma de decisiones en al Industria textil con Machine Learning? Después de decidir que queríamos responder a la incógnita decidimos la industria y como sabemos en Bolivia y encontramos a la industria textilera que hasta el 2015, tuvo una contribución de la industria textil boliviana al Producto Interno Bruto (PIB) era del 0,9%, equivalente a 451 millones de dólares,sin embargo este sector se ve severamente afectado por varios problemas tales como:

  • Mercadería Ilegal que ingresa al País
  • Ropa usada
  • Prendas chinas

Porque vimos estos problemas y creemos que Bolivia puede mejorar su competitividad escogimos al sector de la industria textil para aplicarle Machine Learning.


DESARROLLO

Encontramos el dataset en Kaggle, este tenía las siguientes variables (están traducidas al español al lado):

date – Fecha ()

smv – valor promedio por trabajo

day – Dia (Lun-Dom)

wip – trabajos en cola

quarter – 5 periodos / mes

over time – sobrehora

department – departamento

incentive – incentivo

teamno – # de equipo

idle time – tiempos ociosos

no of workers – # de trabajadores

idleman – # de trabajadores ociosos

no of style change – # de cambios

actual productivity – productividad actual

targeted_productivity – productividad esperada

Nuestro dataset obtenido de Kaggle tenía esas características, después de ver las variables vimos que la variable SMV valor (promedio de trabajo) tenía algunos huecos,por lo que viendo su distribución decidimos rellenarla con la tendencia de la media y así ya obtuvimos todos los datos listos para trabajar.

Comenzamos con la idea de regresión pero los métodos parecían no servir o nos daban unos resultados muy bajos por lo cual tuvimos que cambiar de aproach, después se procedió a un problema de clasificación, realizamos una normalización de los datos y ya con los datos trabajados comenzamos a trabajar,acá un ejemplo de la matriz de correlación que logramos obtener una vez pasamos a la parte de clasificación de datos con datos ya normalizados.

Después se comenzó a probar modelos,el con mejores resultados predictivos fue ADAboost(insertamos imagen referencial)

Logramos un 0.82 de accuracy lo cual fue simplemente increible despues de ver como otros métodos no llegaban ni al 0.50, decidimos probar con varios modelos adicionales como Random Forest, pero la precisión era menor (no por mucho)

Al final nos quedamos con Adaboost y logramos un trabajo excelente.


CONCLUSIONES

  • Con los modelos de regresión de acuerdo al rendimiento (scores de 0.5) calculado, no se acomodan al dataset propuesto, se realizó un tratamiento al target para volver un problema de clasificación.
  • Los modelos de clasificación aplicados al dataset dieron resultados favorables en especial Adaboost con un score de 0.82
  • Los mecanismos y procesos de machine learning permitieron en el problema reutilizar el modelo como uno de clasificación.

Saturdays.AIFollow


WRITTEN BY

Jhonpoolcastro Jcs

Saturdays.AI


¡Más inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!Saturdays.AI

Ideas de decoración: cómo plantar un 'huerto inteligente' en una casa  pequeña y sin terraza — idealista/news

Machine Learning aplicado al Huerto Inteligente

Ideas de decoración: cómo plantar un 'huerto inteligente' en una casa  pequeña y sin terraza — idealista/news

La Paz. Deep Learning. 2021

Todos sabemos la importancia de las plantas y a muchas personas les gustaría tener plantas en casa, pero existen varios problemas que lo impiden como por ejemplo el tiempo disponible para cuidarlas. El presente proyecto plantea resolver estos problemas por medio del Machine Learning creando un huerto inteligente que reconoce que planta va a cuidar y aplica un protocolo de cuidado adecuado. Las tecnologías usadas son redes neurales convolucionales, visión artificial, python y arduino.

Las plantas son una parte importante de nuestro diario vivir y no nos damos cuenta de su importancia. Las plantas en casa vienen con muchas ventajas como es la reducción de contaminación del aire, la reducción de estrés, y la reducción de la contaminación acústica. Pero, con tantas ventajas ¿porque no´ todos tenemos plantas en casa?

Esto pasa porque existen algunos problemas a la hora de tener plantas en casa. Los tres principales problemas son: La falta de conocimiento, descuido y falta de tiempo. El proyecto consiste en un huerto inteligente para los hogares de personas que quieren tener plantas en casa. El huerto reconocería la planta que va a cuidar por medio de visión artificial y redes neurales convolucionales y aplicaría un protocolo adecuado para la planta. Gracias a esto cualquier persona podrá tener plantas en casa sin tener el tiempo o el conocimiento que esto conlleva.


TECNOLOGÍA USADA

· CNN

· Visión artificial Python

· Arduino

· Dataset propio

El modelo utilizado para la creacion del huerto inteligente aplicando Machine Learning es una red YOLOv5 la cual se modifica para aceptar las clases de nuestro dataset. Por ahora el dataset solo cuenta con siete clases (tipos de plantas) por el tiempo que implica crear un dataset, aun así, se logró un funcionamiento aceptable. El código se realizó en Jypiter y el dataset en la web Roboflow.


FUNCIONAMIENTO

El huerto, por medio de una cámara, recoge la imagen de la planta que se procesa por medio de redes neurales convolucionales y visión artificial para así obtener una predicción de que planta está en el huerto. Después, esa predicción hace que se mande una señal, dependiendo de la planta que se identificó, a un arduino el cual al recibir esta señal selecciona el protocolo de cuidado dependiendo el tipo de planta y así controla los tiempos de regado y la cantidad de agua.

Figura 2. Detección de Frambuesa


OBSERVACIONES

Figura 3. Matriz de confusión
Figura 4. Resultados

Como se puede observar en los resultados, después del entrenamiento, se logró una precisión de 0.52 sin llegar a un overfeating. Esto se debe a la falta de datos en el dataset. También se puede observar que hay una gran confusión entre las plantas de Aloe y Cinta, posiblemente el error se debe al parecido de las hojas y la falta de imágenes en el dataset. Aun así, en las pruebas realizadas en otras plantas como la orquídea y la frambuesa son satisfactorias.


PROXIMOS AVANCES

Actualmente se continua la mejora del dataset para obtener más imágenes y de esta manera el huerto pueda reconocer mayor cantidad de plantas y con mayor precisión. También se está experimentando con diferentes modelos de deep learning para mejorar el funcionamiento del huerto.

Se planea mejorar mucho la estructura para tener un diseño más estético y cómodo para los hogares de personas en el área urbana. Además, se planea mejorar la parte del hardware para minimizar costos de producción y controlar más factores externos como la temperatura y la luz.

Finalmente se espera poder implementar una versión del huerto para cultivos a gran escala.

Presentación del proyecto: DemoDay


¡Más inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!Saturdays.AI

Saturdays.AIFollow


WRITTEN BY

Kenneth Bonilla

Saturdays.AI

Saturdays.AI

Saturdays.AI is an impact-focused organization on a mission to empower diverse individuals to learn Artificial Intelligence in a collaborative and project-based way, beyond the conventional path of traditional education.

GANs: Inteligencia Artificial para colorear videos

La Paz. Deep Learning. 2021

Durante la última década, la explosión de la cantidad de datos disponibles, la optimización de algoritmos y la evolución constante de la potencia informática han permitido que la inteligencia artificial (IA) realice cada vez más tareas humanas [1]. Y desde hace un tiempo la inteligencia artificial se ha convertido en una poderosa herramienta para devolvernos al pasado. Lo demuestran la cada vez mayor cantidad de imágenes y videos restaurados a través de diferentes técnicas de inteligencia artificial, como por ejemplo la capacidad de colorear videos en blanco y negro.

En términos de coloración de imágenes y videos la Inteligencia artificial ha evolucionado y durante los últimos años se ha observado una mejora significativa. Ya que la coloración manual requiere una gran cantidad de tiempo y es un proceso costoso, la aplicación de técnicas de inteligencia artificial es una gran opción para este tipo de tareas porque es capaz de trabajar por sí misma y colorear automáticamente en un corto periodo de tiempo [2].


Problemática

Existen pocos registros filmográficos que capturen la vida cotidiana de antaño de nuestro país es por ello que quisimos tener otra perspectiva de estos videos añadiendo color a los pocos que encontramos.


Objetivo

Extraer imágenes de videos antiguos para darles color haciendo uso de una red GAN, para posteriormente generar un video a color.


Dataset

El dataset se pudo obtener a partir de videos encontrados en youtube, de tipo documental y grabaciones de los distintos paisajes de Bolivia, se usaron 10 videos distintos ya que se tienen videos antiguos a color, que tienen un color más opaco, otros videos de los paisajes con un color más definido pero con una calidad no mayor a 480p, y otro con una calidad mayor. No se tomaron todos los frames de estos ya que se optó por usar los frames significativos y asi no tener varios frames de una misma escena.



Selección del modelo y técnicas usadas

La arquitectura usada para colorear mediante Inteligencia Artificial fue la de Unet-GAN por su gran capacidad para sintetizar las características de las imágenes lo que mejora ampliamente los resultados finales.

Una red generativa antagonica (GAN) tiene dos redes. Una es el discriminador que intentará discriminar entre imágenes reales y falsas. Y la segunda red de la GAN ​​es el generador que se encargará de generar imágenes falsas pero muy cercanas a las imágenes originales más bien podemos decir que las imágenes falsas estarán en la misma distribución de las imágenes originales.

UNET se utiliza básicamente en problemas de segmentación de imágenes donde las dimensiones de entrada y salida son las mismas. GAN intenta generar nuevas imágenes a partir de un ruido aleatorio. Entonces, el generador de GAN tiene muy pocas dimensiones en la entrada, pero la salida es en gran dimensión. Puede usar UNET como generador en el GAN ​​(pix2pix usa esto).

En este caso, generará imágenes falsas no a partir de ruido aleatorio sino de otra imagen de referencia. Tiene otras opciones como red deconvolución, codificador automático, etc.

Al inicio se realizó la obtención de videos, se segmentó los videos en frames que se usaron como ground truths, se estandarizó las imágenes a un tamaño y se hizo la conversión de los frames RGB a grayscale para usarlos como inputs. Al finalizar con el proceso de colorización se unió los frames resultantes para convertirlos de nuevo en video.


Análisis de resultados

En la gráfica 1 podemos observar la pérdida del discriminador y la del generador y se puede ver que existe una tendencia exponencial y que la pérdida es estacionaria en el valor 0.4 para el discriminador y 0 para el generador.

Gráfica 1. Pérdida del discriminador y del generador

Se puede apreciar en las imágenes de entrenamiento con 600 épocas que se llega a tener un color correcto, pero no tan intenso como en las imágenes RGB reales, también se puede ver que llega a tener errores cuando se tiene una sección con mayor brillo en la imagen, como ser rayos del sol o secciones de blanco.

Con las imágenes de testeo se puede ver que las imágenes se llegan a colorear pero se sigue teniendo el problema con las secciones de brillo y que tiene una mayor predisposición a la gama de rojos y azules.

En las imagenes del video en blanco y negro elegido para poner a prueba nuestro modelo se tiene una buena coloracion siendo que al ser una grabacion de la ciudad de La Paz-Bolivia se tiene más imagenes de edificios no se necesita tener una gran variedad de colores, el color más intenso que se ve es en el cielo.


Conclusión y recomendaciones

Se logró implementar un modelo con arquitectura Unet-GAN capaz de colorear imágenes en blanco y negro y con el conjunto de las imagenes coloreadas se obtuvo un video a color, todo este proceso nos permitio familiarizarnos con modelos de Inteligencia Artificial del tipo Deep Unsupervised Learning, preparación de datasets, lenguaje Python, librerias especializadas en Deep learning y Colab como herramienta para la implementacion de nuestro modelo. Los resultados son aceptables sin embargo quedan algunas falencias que subsanar como que ciertas imágenes con brillo que forman parte de nuestro dataset de entrenamiento presentan error al momento de ser reproducidas por la GAN, además algunas colorizaciones no son completas, esto debido a que el dataset no contaba con muchas variaciones de color, por lo tanto es recomendable ampliar la paleta de colores con las que se realiza el entrenamiento.project_color.mp4Edit descriptiondrive.google.com


Bibliografía

[1] Una introducción básica a las GAN (Generative Adversarial Networks). (n.d.). Retrieved December 4, 2021, from https://ichi.pro/es/una-introduccion-basica-a-las-gan-generative-adversarial-networks-217887110266867

[2] film colorization, colorize video, colorize black and white videos, colorize video software, film colorization software, colorization of film. (n.d.). Retrieved December 4, 2021, from https://pixbim.com/film-colorization


Códigos

  • Código para la recoleccion del dataset a partir de videos descargados de youtube

Coloracion-de-videos-/Recoleccion_Dataset.ipynb at 41b78017da7ae1f54cff0276e1407a57892d8090 ·…Proyecto final Saturdays AI, consiste en la coloración de videos con GANs …github.com

  • Código para el entrenamiento del modelo

Coloracion-de-videos-/Entrenamiento_modelo_Proyecto.ipynb at…Proyecto final Saturdays AI, consiste en la coloración de videos con GANs …github.com

  • Código para la implementación de los pesos del modelo previamente guardados

Coloracion-de-videos-/Implementacion_modelo.ipynb at 41b78017da7ae1f54cff0276e1407a57892d8090 ·…Proyecto final Saturdays AI, consiste en la coloración de videos con GANs …github.com

Presentación del proyecto: DemoDay

Repositorio

En el siguiente repositorio se encuentra el código usado para desarrollar esa aplicación: https://github.com/SaturdaysAI/Projects/tree/master/Lapaz/2021.DL/Coloracion-de-videos-main


¡Más inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!Saturdays.AI

WRITTEN BY

Daniela Centellas Yucra

Saturdays.AI

Saturdays.AI

Saturdays.AI is an impact-focused organization on a mission to empower diverse individuals to learn Artificial Intelligence in a collaborative and project-based way, beyond the conventional path of traditional education.

PANGEA: IA conversacional para viajeros

La Paz. Deep Learning. 2021

Existen diversos servicios para viajeros, desde páginas de hoteles hasta ofertas turísticas a unos cuantos clics de distancia, no obstante, el ser humano ha conseguido su información por siglos y siglos a través de preguntas y bases de conocimiento, por lo que le es más natural hacer consultas de esa forma, así surge Pangea, como un servicio web de Inteligencia Artificial conversacional con el que el viajero puede interactuar y conseguir las respuestas a sus más inquietantes preguntas.

Un viajero prudente nunca se lanza a viajar si no tiene la información más relevante de su destino, en su cabeza se encuentran preguntas que en primera instancia cuestionan su seguridad, por lo que investiga al respecto y logra resolver sus dudas en probablemente muchos minutos, de igual forma si ya se aventuró a viajar y necesita conocer alguna costumbre, plato típico, música o lugares para visitar, son tantas las preguntas y mucho el tiempo invertido en responderlas, de esa forma los viajeros pierden tan importante recurso.

Por lo que al usar textos como datos a analizar en la tarea de respuesta a preguntas se requiere el uso de Natural Language Processing (NLP) o en español conocido como el procesamiento del lenguaje natural, entiéndase como la rama de la Inteligencia artificial (IA) que entrena a una computadora para comprender, procesar y generar lenguaje (conversacional).


Descripción del problema

Concretamente el problema es el tedioso y tardío acceso a respuestas inmediatas sobre dudas y consultas acerca de un destino turístico, como ser: comida, hospedaje, actividades turísticas, transporte, centros de salud, cultura, música, conflictos políticos, entre otros.


Objetivo

Desarrollar mediante Inteligencia Artificial un servicio web conversacional de pregunta-respuesta para viajeros aplicando NLP mediante la aplicación de un modelo de deep learning.


Técnicas implementadas

Se presentan las técnicas complementarias a la resolución del problema, ya que todo modelo de Deep Learning requiere ser alimentado por datos.


Búsqueda de datos

La Inteligencia Artificial conversacional Pangea se centra en responder preguntas y no sería posible sin cantidades ingentes de información con las cuales interactuar y usarlas como una fuente de conocimiento (contexto), en ese sentido, se realizó la búsqueda de páginas web que contengan las respuestas más coincidentes de acuerdo a la pregunta del usuario viajero; hacerlo de forma manual representaría demasiado trabajo, por lo cual, se decidió usar la biblioteca de Python, Google Search, el cual emplea al motor de búsqueda Google como fuente de información para brindar las URLs de los sitios webs requeridos.


Captura de datos

Una vez obtenidas las URLs de los sitios webs que contienen la información requerida, se empleó la técnica del Web Scraping para obtener el contenido literal de dichos sitios, es decir, los distintos párrafos y textos presentes en el sitio. Web Scraping es una técnica cuyo objetivo es recolectar información de la web a través de código. En este caso se usó la biblioteca Beautiful Soup disponible en pypi.


Selección y evaluación del modelo

Modelo Bert: es un codificador bidireccional de transformers, que aprende a interpretar el lenguaje.

Cuando al modelo Bert se le añade capas adicionales y es entrenado con un propósito o tarea especializada, se obtiene un modelo Bert que resuelve una tarea en específico.

En el proyecto se aplicó ya modelos ajustados para la tarea de pregunta y respuestas, que fueron previamente ajustados mediante el dataset de los conjuntos de datos de respuesta a preguntas Stanford(SQuAD).

Ambos modelos fueron obtenidos y reutilizados de la biblioteca hugging Face Transformers. Dichos modelos reciben una pregunta y un contexto para procesarlo y analizarlo con el fin de devolver las respuestas que mejor se ajusten a la pregunta.

La elección del mejor modelo fue dado en base a los resultados:

  • Bert en inglés:bert-large-uncased-whole-word-masking-finetuned-squad
  • Bert en español (Beto): distill-bert-base-spanish-wwm-cased-Finetuned-spa-squad2-es
Tabla 1. Evaluación de Modelos

Se seleccionó y grafico un caso en específico, para demostrar como se comportan ambos modelos a una misma pregunta y cuales son las respuestas textuales que dan cada uno en su respectivo lenguaje, figura 1.

Figura 1. Gráfico de barras — Representación de respuestas Modelo Bert y Beto a la misma pregunta.


Flujo de Trabajo del Sistema

El sistema consta de distintos procedimientos para resolver una determinada pregunta, por lo que el usuario viajero debe partir lanzando una pregunta, posteriormente el sistema realiza una búsqueda con Google Search en relación a tal pregunta y devuelve unas cuantas URLs (máximo 5) con las que el web scraper realiza la tarea de extraer todo el texto (párrafos) del sitio hospedado en la URL para pasarle como contexto al modelo, el modelo utiliza el contexto, la pregunta y lanza una respuesta, se captura la respuesta y la url,ambas son representadas en formato de mensaje de chat, figura 2.

Figura 2 . Elaboración propia


Análisis de resultados (Bert vs Beto)

Pangea devuelve las respuestas y la URLs de donde han sido obtenidas tales respuestas, según la cantidad de pruebas se puede observar que el uso de Beto se adecua más según el porcentaje de aciertos. Y en las gráficas se visualiza como el modelo Beto da respuestas con mayor precisión a la misma pregunta realizada en ambos idiomas de acuerdo al modelo.


Conclusión y recomendaciones

Las conclusiones obtenidas tras el desarrollo y resolución del objetivo general son:

  • Se obtuvo un 64.7 % de respuestas correctas de un total de 17 preguntas por parte del modelo BERT en español en relación al 30% del modelo BERT en inglés, en ese sentido, el modelo BERT pre-entrenado con mayor precisión en sus respuestas es el español, ya que las preguntas tuvieron a Bolivia como contexto principal y es razonable puesto que no muchos sitios en inglés tienen información actualizada y específica de Bolivia.
  • La técnica del Web Scraping aportó correctamente el contenido web necesario para que el modelo BERT pudiese responder las preguntas adecuadamente.
  • Dado que el servicio (Pangea) se desplegó por un momento se logró registrar el uso de 2.5 GB de memoria RAM con una demora de aproximadamente 30 segundos mientras el modelo responde a la pregunta.
  • El Servicio Web que se ofreció por unos instantes logró capturar la curiosidad y asombro de los usuarios por su diseño minimalista e interesante forma de interactuar.

Por otra parte las recomendaciones al respecto son:

  • El modelo BERT empleado fue afinado (fine-tuning ) con el dataset SQUAD el cual tiene un formato pregunta-respuesta de dominio parcialmente general, por lo que se tiene mayores expectativas con un afinado específico para el área de turismo.
  • La información recolectada por el servicio proviene de Google que es un motor de búsqueda, el sistema funcionaría mucho mejor y tendría una mayor calidad en sus respuestas si el motor de búsqueda y los datos que en él residen fueran recolectados cautelosa y selectivamente.
  • Como Pangea se centra en el servicio para viajeros y turistas, es recomendable incrementar distintos modelos BERT en varios lenguajes.


Autores del proyecto

  • Ana Paola Céspedes Sejas
  • Mauricio Serginho Matias Conde

«Equipo ElementAxiom»


Referencias

Google search, https://pypi.org/project/googlesearch-python/

Beautifulsoup, https://pypi.org/project/beautifulsoup4/

Modelo Bert en español, https://huggingface.co/mrm8488/distill-bert-base-spanish-wwm-cased-finetuned-spa-squad2-es

Modelo Bert en inglés, https://huggingface.co/bert-large-uncased-whole-word-masking-finetuned-squadSaturdays.AI

Saturdays.AIFollow


WRITTEN BY

Ana Paola Cespedes Sejas

Saturdays.AI

Presentación del proyecto: DemoDay

¡Más Inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

Saturdays.AI

Saturdays.AI is an impact-focused organization on a mission to empower diverse individuals to learn Artificial Intelligence in a collaborative and project-based way, beyond the conventional path of traditional education.

Digitalización de fotografías y Restauración de fotografías con Inteligencia Artificial

La Paz. Deep Learning. 2021

La Paz 2021. Las técnicas de Inteligencia Artificial tienen muchas aplicaciones actuales en el campo de las fotografías. Una de ellas tiene que ver con la manipulación de imágenes, campo en el cual se inscribe nuestro proyecto.

En particular, la restauración de imágenes (image restoration) es el proceso de recuperar una imagen a partir de una versión degradada. Image restoration es un caso de estudio que normalmente es tratado con procesamiento de imágenes. Se parte de la idea de que la imagen ha pasado a través de una función de degradación y se le ha añadido ruido; la restauración entonces consistirá en revertir el proceso y recuperar la imagen original.

El propósito de este proceso es “compensar” o “deshacer” aquellos defectos que generaron la degradación de la imagen, obteniendo un estimado de la imagen original.

La degradación puede provenir de diferentes fuentes, como la difuminación de movimiento (motion blur), ruido, desenfoque de la cámara o una combinación de todas éstas. También hablaremos de degradación al referirnos a aquellas fotografías impresas o negativos que sufrieron cualquier tipo de desgaste debido al envejecimiento del papel, polvo, manchas, etc.

De manera tradicional, una vez identificado el tipo de degradación, es posible procesar la imagen con un tratamiento de procesamiento de imágenes. Existen diferentes estudios y especializaciones con respecto a estos procesos, especialmente para revertir el ruido agregado a la función de degradación. Cada caso es único, por lo cual el tiempo de procesamiento puede llegar a ser muy largo. Al mismo tiempo, podemos encontrar estudios de fotografía que ofrecen el servicio de restauración aplicando técnicas de edición digital, lo cual resulta costoso.

Ejemplo de restauración de imágenes

Por otro lado, tenemos los films negativos fotográficos producidos por las cámaras analógicas que son preservados por varios tipos de usuarios, desde historiadores y bibliotecarios hasta quienes simplemente desean conservar recuerdos familiares. Estas películas normalmente deben pasar por un proceso químico (revelado) para la obtención de la fotografía física que describe la escena que fue capturada con la cámara analógica.

Revelado digital de negativo

Existen técnicas de manipulación de la imagen digital de un negativo para obtener la imagen que correspondería a la revelada en el proceso tradicional. Estas técnicas siguen una secuencia de pasos que consisten en ajustar ciertos parámetros de la imagen que van más allá de la inversión de colores, algo que también se debe hacer imagen por imagen.


DESCRIPCIÓN DEL PROBLEMA y OBJETIVO

La selección de la técnica de procesamiento de imágenes que debe aplicarse a la imagen degradada proviene de una apreciación visual y resulta subjetiva. Muchas veces debemos aplicar varias técnicas en cascada para obtener un resultado óptimo. Este proceso consume tiempo, es específico a cada caso que se presente y en la mayoría de los casos no se puede paralelizar.

¿Y si pudiéramos utilizar la inteligencia artificial para crear un solo modelo que sea capaz de restaurar la imagen degradada sin necesidad de categorizar el tipo de degradación, cómo también realizar el revelado de las fotografías a partir de los negativos en film?

Éste es precisamente nuestro objetivo. Utilizaremos técnicas de Inteligencia Artificial para construir un modelo de restauración de fotografías que podrá recuperar la imagen original a partir de las degradaciones descritas y/o a partir de los negativos fotográficos. Para hacer el desafío más interesante incluiremos además imágenes en formato blanco y negro que deberán ser coloreadas; y también imágenes con regiones suprimidas, es decir taparemos regiones de la escena simulando manchas o rasguños que pudieran haber eliminado por completo estas regiones. Por más que existen modelos que hacen ciertas funciones que describimos, una de las dificultades será el de combinar todas estas restauraciones (colorización, revelado, restauración e incluso generación creativa) en un sólo modelo.


SELECCIÓN DE LOS MODELOS

El proyecto presentado está basado en varias librerías de Fast.ai, que proporcionan herramientas de manipulación de fotografías mediante inteligencia artificial, de datasets para entrenamientos e incluso de modelos pre entrenados que son un buen punto de partida. La arquitectura general escogida es la de trabajar con una GAN (Generative Adversarial Network), que es apropiada para resolver nuestra problemática.

La estructura general utilizada consiste en un generador de imágenes, que intenta crear imágenes con la mejor calidad posible, ya sea en el color, la resolución, la textura… Por otra parte se entrena un discriminador que debe distinguir entre las imágenes reales dadas cómo input y las imágenes generadas por el generador. Finalmente se hace un tercer entrenamiento donde se combinan los dos modelos anteriores, lo que crea la GAN: en este proceso ambos modelos compiten y obligan a mejorarse el uno al otro.

Nuestro modelo generador ya viene pre entrenado y consta de dos partes. La primera son las convoluciones que llevan una imagen de input hacia dimensiones cada vez más pequeñas, y la otra parte es cuando se hace el camino inverso para recuperar una nueva imagen de las mismas dimensiones que la que se tiene como input. La arquitectura total es UNET, que tiene como particularidad que cierta información del proceso de reducción de la imagen se le envía directamente a su contraparte (cuando las dimensiones son equivalentes). Este proceso se puede ver en la siguiente imagen.

Unet

De igual manera, las diferentes operaciones y convoluciones utilizadas están basadas en una arquitectura CNN (Convolutional Neural Network) Resnet34 (34 capas de profundidad), que utiliza bloques residuales o de identidad durante las operaciones de convolución. Cuando cargamos este modelo, se puede entrenar solo la parte de la derecha (aproximadamente 20 millones de parámetros) utilizando la opción freeze(), o se puede entrenar el modelo entero (aprox. 40 millones de parámetros) con la opción unfreeze(). En este momento del proceso, y viendo que se utiliza una loss function de Mean Squared Error (MSELossFlat()), el generador solo intenta acercarse lo más posible a los valores de los píxeles de la imagen original. Sin embargo, esto no es suficiente para capturar, por ejemplo, el entorno de los píxeles, en específico ciertas texturas que son muy importantes para obtener una imagen correcta y de buena resolución. Es por eso que se utiliza el generador junto al discriminador en una estructura GAN.

El discriminador (también llamado critic) utiliza una loss function de cross-entropy con logits permitiendo una clasificación binaria (BCEWithLogitsLoss()), que está bien adaptada a su objetivo. Antes de entrenar la GAN, el discriminador se puede entrenar entre imágenes creadas por el generador y los input reales. Sin embargo, lo que más nos interesa es el entrenamiento de la GAN.

En esta etapa, los dos modelos generador y discriminador se entrenan juntos. La idea es utilizar un switcher que decidirá si es momento de entrenar el generador para mejorar las imágenes creadas y confundir al discriminador, o al contrario entrenar el discriminador cuando un cierto umbral de imágenes están siendo clasificadas como reales cuando en realidad son creadas por el generador.

Este proceso se lo puede realizar iterativamente cambiando el tamaño de las imágenes con las cuales va trabajando el modelo, yendo de dimensiones más pequeñas a las más grandes. De esta manera, el modelo va mejorando progresivamente. Esta técnica se utiliza por ejemplo para mejorar la resolución de las imágenes que se le da al modelo de Inteligencia Artificial y mejorar así las fotografías.


PREPARACIÓN Y CONSTRUCCIÓN DEL DATA SET

Es bien sabido que uno de los aspectos más importantes en la construcción de cualquier modelo inteligente son los datos. Es así que pusimos énfasis en la obtención, preparación y construcción de un dataset que nos pudiera proporcionar todo el espectro de degradaciones que requerimos que nuestro modelo sea capaz de reconstruir y que contemos con la cantidad y variedad necesaria.

Trabajamos con el dataset VOC2012 y ColorizationDataSet como datos iniciales (imágenes variadas a color y sin defectos). Decidimos utilizar 9895 imágenes en total. A una mitad se le aplicó un proceso de negativización artificial gracias a un preprocesamiento de imagenes y para la otra mitad se tomó en cuenta las imágenes en blanco y negro. A todas éstas imágenes se le aplicó un segundo procesamiento de imágenes dónde a un 65% se le aplicó algún tipo de degradación como ser compresión jpeg, ruido sal y pimienta, difuminado (blur), entre otros; y a un 25% se aplicó una degradación más importante cómo son unos huecos o manchas en varios sectores de las imágenes. A continuación podemos ver varios ejemplos de este tratamiento.

Imágenes degradadas generadas artificialmente

Para el entrenamiento del modelo, se dividió el dataset en un train set de 8906 imágenes y un test set de 989 imágenes.


EVALUACIÓN DE MODELOS

Para entrenar nuestro modelo, utilizamos la GPU proporcionada por Google Colab. Antes del entrenamiento de la GAN, se puede entrenar el generador y el discriminador con sus respectivas loss function detalladas en el punto 4.

Para el generador, vemos que existe una cierta mejora al avanzar el número de épocas, tanto para el train set como para el test set. Hay que tener en cuenta que esto es sólo una parte del entrenamiento del generado,que en realidad se hará durante el entrenamiento de la GAN.

Curva de Loss function en uno de los entrenamientos del Generador

Para el discriminador, de igual manera se lo puede entrenar solo, y en esta etapa podemos llegar a un accuracy de hasta 95 %, lo que demuestra que antes de entrenar la GAN, le es muy fácil distinguir las imágenes reales de aquellas producidas por el generador.

Durante el entrenamiento de la GAN, se utilizan otras loss function un tanto modificadas tanto para el generador como discriminador. Sin embargo, para evaluar el modelo final, se necesita hacer una verificación visual ya que las loss function de ambos no nos proporcionan información relevante porque ambas funciones irán mejorando y empeorando en función de qué modelo se esté entrenando.


ANÁLISIS DE RESULTADOS

Para el entrenamiento del modelo de Inteligencia Artificial especializado en las fotografías se preparó un conjunto de datos de 9895 imágenes de negativos fotográficos (artificiales) y 9895 imágenes a color, cada uno de los negativos tiene una imagen a color relacionada..

El conjunto de datos se dividió en 2 grupos uno de entrenamiento y otro de validación, bajo el siguiente detalle:

– Train (8906 imágenes)

– Valid (989 imágenes)

Para el entrenamiento se consideraron los siguientes grupos de imágenes:

a) Imágenes en blanco y negro.

b) Imágenes sin degradación.

c) Imágenes con ruido gaussiano.

d) Imágenes con degradación y supresión de regiones


Resultados Train:

– Imágenes en blanco y negro

Imagen: image2669.jpg

De izquierda a derecha: Imagen Original, Imagen degradada blanco y negro, predicción en el entrenamiento


– Imágenes en negativo sin degradación

Imagen: 2007_000039.jpg

De izquierda a derecha: Imagen Original, Imagen en negativo, predicción en el entrenamiento

Podemos ver que el modelo hace un buen trabajo al colorear ciertas imágenes negativas, encontrando el color correcto en la mayoría de los objetos de la imagen.

– Imágenes en negativo con ruido gaussiano.

Imagen: 2007_003118.jpg

De izquierda a derecha: Imagen Original, Imagen en negativo con ruido, predicción en el entrenamiento

La restauración de ruido hacia una mejor resolución no está completamente realizada, incluso para el train set. Podemos concluir que hace falta más tiempo de entrenamiento para continuar con el proceso.

– Imágenes en negativo con regiones suprimidas

Imagen: 2007_000033.jpg

De izquierda a derecha: Imagen Original, Imagen en negativo con supresión de regiones, predicción en el entrenamiento

Imagen: 2007_000027.jpg

De izquierda a derecha: Imagen Original, Imagen en negativo con supresión de regiones, predicción en el entrenamiento

Para las imágenes degradadas con partes enteras faltantes, el modelo reconoce el color que le debe dar a la zona oscura. Por el momento, la resolución es mala, pero con más entrenamiento, esto puede ir mejorando.


Resultados Test Set:

– Imágenes en blanco y negro.

Imagen: image0476.jpg

De izquierda a derecha: Imagen Original, Imagen degradada blanco y negro, predicción en el testing


– Imágenes en negativo sin degradación.

Imagen: image1027.jpg

De izquierda a derecha: Imagen Original, Imagen en negativo, predicción en el testing


– Imágenes con ruido gaussiano.

Imagen: image0850.jpg

De izquierda a derecha: Imagen Original, Imagen con ruido, predicción en el testing


– Imágenes con Degradación

Imagen: image4988.jpg

De izquierda a derecha: Imagen Original, Imagen en negativo con supresión de regiones, predicción en el entrenamiento


Resultados de imágenes que no forman parte del dataset:

A continuación presentamos resultados de predicción del modelo en imágenes completamente nuevas que no se utilizaron durante el entrenamiento. Podemos observar que dependiendo la imagen en blanco y negro, la colorización se hace de manera aceptable en algunas pero casi nada en otras. De igual manera en la segunda imagen se observa que la imagen del resultado ha mejorado la calidad de la imagen en cuanto al ruido que presenta la original. En cuanto a la imágenes en negativo, el modelo hace un buen trabajo en detectar los objetos de la imagen y colorearlos acorde a lo detectado.


CONCLUSIÓN

Este proyecto de Deep Learning nos permitió familiarizarnos con ciertas técnicas de manipulación de imágenes, código en Python, librerías especializadas en Deep Learning así como técnicas de entrenamientos de modelos en ciencia de datos, usando la Inteligencia Artificial aplicándola a las fotografías. Los resultados son aceptables considerando las limitaciones en tiempo de entrenamiento así como en GPU que se tuvieron. Vimos que el modelo puede trabajar tanto con negativos fotográficos como con fotografías antiguas en blanco y negro que pudieran presentar degradaciones leves o fuertes. Sin embargo, queda mucho margen de mejora como por ejemplo vimos que algunas restauraciones de negativos tienen un tinte azul de fondo, probablemente debido al hecho de haber utilizado negativos solo creados artificialmente y no “reales”. Estos negativos pueden presentar diferentes calidades químicas, de material… que pueden variar por modelo o marca. De igual manera es probable que utilizar imágenes degradadas reales aumente el poder del modelo.


BIBLIOGRAFÍA

Saturdays.AI


Silvana Dávila

Saturdays.AI

Presentación del proyecto: DemoDay

¡Más Inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

WomanLife: Deep Learning for the detection and classification of breast cancer

La Paz. Deep Learning. 2021

Today, thanks to deep learning algorithms of artificial intelligence, we have the possibility to automate the classification of images, so this tool can help medical personnel in the classification and early detection of breast cancer. In this way, women suffering from this disease could be diagnosed automatically, in time to start treatment.

Breast cancer is the most common type of cancer in women and is also one of the main causes of death according to the WHO (WHO, 2020). Early detection is the single most important factor in lowering cancer treatment costs and mortality. To make it possible it is necessary to have medical ultrasound images and specialists who can explain them. However, the lack of these creates a gap in access to early treatment in countries with little or not enough access to specialized diagnostic services and whose population receives low and middle income.


Description of the problem

Our project consists of the detection and classification of breast cancer in women between 25 and 75 years old. This is possible from the development of an deep learning model trained with images obtained using ultrasound scanners that result in the segmentation of the type of cancer that could be suffered.


Objective

Allow women suffering from breast cancer to be automatically diagnosed using a deep learning model so that they can start treatment early and safely, reducing costs and the mortality rate. To meet this objective, we have proposed a tool that uses artificial intelligence to provide greater agility to the process through self-diagnosis with ultrasound images.


Model selection

The breast cancer detection and classification project works with ultrasound images of three types, labeled as benignmalignant and neutral, so the deep learning model selected for its execution is convolutional networks with TensorFlow Keras.


Datasets

The dataset was collected from Baheya Hospital for Early Detection and Treatment of Women’s Cancer, Cairo, Egypt. It contains 780 breast ultrasound images, in women between 25 and 75 years old (133 normal, 437 benign and 210 malignant) with an average image size of 500 x 500 pixels, some of which are seen below,

Fig. 1. Samples of images

The images from the original dataset contain mask images that do not provide meaningful information to the model we developed, for this reason Shell statements were used to remove them from the dataset we are using.


Implemented techniques

We must emphasize that until now there is a shortage of public data sets of breast cancer ultrasound images and it prevents the good performance of the algorithms. Because of this, the authors who made public the dataset we used, recommend augmenting data using GANs.

Our project developed GAN networks for each class in order to obtain more accurate results and 150 epochs were used.

However, it failed to create usable images, for this reason we declined the use of this technique. The challenge is to develop the GAN with a greater number of epochs and with a better neural network configuration to obtain more realistic images.

Fig. 2. MALIGNANT
Source: Compiled by authors using Matplotlib
Fig. 3. BENIGN
Source: Compiled by authors using Matplotlib
Fig.4. NORMAL
Source: Compiled by authors using Matplotlib


Network definition

Within the possible design patterns in Keras, subclassing has been implemented to use the low-level APIs of Keras. You can consult more information about this in the following article:

https://towardsdatascience.com/3-keras-design-patterns-every-ml-engineer-should-know-cae87618c7e3

The structure of the network consists of:

  • Preprocessing layer: Resizing, Rescaling and Normalization
  • Conv2D: 32 filters, 4 strides, ‘same’ padding and ReLU activation
  • MaxPooling2D: pool_size of (3,3), ‘same’ padding and 2 strides
  • Flatten
  • Dense: 512 neurons and ReLU activation
  • Dropout (0.4)
  • Dense: 3 neurons and SoftMax activation

We are based on AlexNet architecture, on which we made some adjustments like number of neurons, fully connected layers and dropout values.

We use Adam optimizer with learning rate of 0.0001, the Sparse Categorical Crossentropy loss function and Sparse Categorical Accuracy function.

Fig. 5. Model summary — Source: Compiled by authors


Training

TensorBoard was used to observe the real-time behavior of the accuracy and loss values, which provides useful graphs to analyze results and many controls for their manipulation.

Fig. 6. Dashboard TensorBoard — Source: Compiled by authors

Earlystopping

We use EarlyStopping as a form of regularization to avoid overfitting when training the model. For example, if the loss value stops decreasing, the training will stop even though all iterations have not been completed.


Conclusions and future works

WomanLife is intended to be an easy-to-access, low-cost medical diagnostic tool.

This AI is not only beneficial for women who use it but also has the potential to become a medical assistant. We want to clarify that WomanLife does not intend to replace medical specialists but to provide a tool that facilitates their work.

From now on we intend to optimize the model using a GAN network to obtain greater precision and use techniques that find the correct parameters for training the model (Hyperparameter tuning).

Our project also developed an application that, given an image scanned with the camera or selected from the gallery, goes through the developed network and returns a series of probabilities related to the type of cancer suffered.

The model was developed in pure TensorFlow, converted, saved and exported to TensorFlow Lite.

Fig. 7. Sample of the operation of the application prototype — Source: Own elaboration
Fig. 8. Conversion from TensorFlow to TensorFlow Lite architecture — Source: Own elaboration


Sources

You can access to notebook and mobile application through my GitHub repositories bellow:

https://github.com/edcalderin/BreastCancerDetection_CNN

https://github.com/edcalderin/BreastCancerDetection_app

Here, you will can find more projects related to Data Science and Machine Learning. In summary, it contains all my work so far. Any reply or comment is always welcome.


About the authors

Erick Calderin Morales

Systems engineer with experience in software development, master’s student in systems engineering and master’s degree in data science with an affinity for artificial intelligence.

Linkedin: https://www.linkedin.com/in/erick-calderin-5bb6963b/

Sharon Maygua Mendiola

Mechatronics engineering student with a degree in physics.

Linkedin: https://www.linkedin.com/in/sharon-sarai-maygua-mendiola-22288019a/

References

Saturdays.AI

Presentación del proyecto: DemoDay

Repositorio

En el siguiente repositorio se encuentra el código usuado para desarrollar esta aplicación:

https://github.com/SaturdaysAI/Projects/tree/master/Lapaz/2021.DL/BreastCancerDetection_CNN-master/BreastCancerDetection_CNN-master

WRITTEN BY

Erick Calderin

Systems Engineer passionated to Deep Learning and Artificial Inteligence

Saturdays.AI

¡Más inteligencia artificial!

Saturdays.AI is an impact-focused organization on a mission to empower diverse individuals to learn Artificial Intelligence in a collaborative and project-based way, beyond the conventional path of rogramas intensivos donde se realizan proyectos para el bien (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

facturas

Detección de datos de facturas manuales

La Paz. Deep Learning. 2021

Introducción

La declaración de facturas es uno de los deberes que tienen un porcentaje de la población boliviana, ya sean contribuyentes dependientes o independientes. Si bien es posible importar los datos de una factura electrónica por medio del escaneo de un código QR. El realizar dicha transcripción de una factura manual llega a ser más complicado, lento y moroso, a la hora de transcribir el número de NIT, el número de autorización y el número de factura de cada una. Especialmente para personas que no son muy familiarizadas con sistemas computacionales, siendo este una parte importante de la población adulta en Bolivia.

facturas

Figura 1. Imágenes de una Factura Manual

facturas

Figura 2. Imágenes de una Factura Manual y una Factura Digital

Es por ello, que el presente proyecto es un prototipo de un sistema de reconocimiento óptico de caracteres que identifique los valores previamente mencionados. Y por consiguiente permita al usuario exportar dicha información en un archivo CSV o XLSX, para su fácil importación en la plataforma de declaración de facturas SIAT (Sistema Integrado de Administración Tributaria).

Figura 3. Pantalla principal de la plataforma SIAT, para la importación de datos de facturación.

Figura 4. Botón de importación de archivos xls o xlsx.

Descripción del problema

El problema identificado es la cantidad de tiempo que se invierte a la hora de transcribir la información de cada una de las facturas manuales; tanto a personas con tiempo limitado por múltiples actividades personales o profesionales, como a personas con poca habilidad computacional.

Objetivo

El proyecto busca facilitar la detección de los datos más largos de facturas manuales, siendo estos el número de NIT de la empresa, el número de autorización, y el número de factura. Para su posterior exportación en formatos CSV o XLSX para su posterior importación en la página de Mis Facturas del SIAT (Sistema Integrado de Administración Tributaria).

Selección del modelo

CRAFT

Se utiliza CRAFT (Character-Region Awareness For Text detection) [1], esto debido a que nos permite localizar las regiones de caracteres individuales y vincular los caracteres detectados a una instancia de texto. Se podría haber utilizado Tesseract el cual es un módulo de ORC pero falla en textos con curvas y formas irregulares en ciertos tipos de fuentes.

CRAFT

Figura 5. Ilustración esquemática de la Arquitectura del modelo CRAFT

La arquitectura se basa en la red neuronal convolucional CNN, VGG-16 [2], es esencialmente para la extracción de características que se utiliza para codificar la entrada de la red en una determinada representación de características y el segmento de decodificación de la red CRAFT.

Figura 6. Modelo de la CNN VGG-16.

Técnicas implementadas

Las técnicas implementadas por el modelo CRAFT son las básicas para la detección de caracteres, como ser: cortes, rotaciones y/o también variaciones de colores.

Figura 7. Procedimiento de división de caracteres para lograr anotaciones a nivel de caracteres a partir de anotaciones a nivel de palabra: 1) Se recorta la imagen a nivel de palabra; 2) Se predice la puntuación de la región; 3) Se aplica el algoritmo watershed; 4) Se obtienen los cuadros delimitadores de caracteres; 5) Se desempaquetan los cuadros delimitadores de caracteres.

Evaluación de modelos

Al ser un modelo pre-entrenado de KERAS-OCR, con el modelo de CRAFT [3]. Podemos ver su eficacia con respecto a otros modelos similares para la detección de caracteres:

.

Figura 8. Comparativa de diferentes modelos, donde se utilizaron los dataset ICDAR y MSRA-TD500. Dónde: P es la Precisión, R es Recall, H es la H-mean y FPS los cuadros analizados por segundo [4].

Análisis de resultados

Una vez importada la imagen de la factura, se obtienen todos los valores que son detectados en la misma. Por lo que cortamos la imagen en dos, para tener solamente la parte derecha; donde se encuentran los datos que intentamos recopilar. Ya que como se ve en la Figura 9, la cantidad de datos es excesiva.

Figura 9. Detección de caracteres de una factura manual.

Una vez tenemos todos los datos detectados y convertidos en tipo STRING, en un dataframe creado con Pandas. Comparamos cada una de las columnas, buscando el texto deseado. Por tal motivo, comparamos la cantidad de caracteres que tiene el NIT del proveedor (de 8 a 10 caracteres), el Número de autorización (14 a 16 caracteres) y el Número de factura (4 a 6 caracteres). Por lo que, hallamos tras la búsqueda de columnas el valor deseado.

Figura 10. Detección de valores deseados, transformación a un dataframe con Pandas y conversión de los datos a STRING para su posterior comparación.

Finalmente, guardamos estos valores en un dataframe creado, con la misma distribución que pide el sistema de mis facturas de la plataforma SIAT. Y exportamos en CSV, o XLSX. Y como se ve en la figura 11.

Figura 11. Exportación de datos generados a los archivos CSV y XLSX.

Conclusión

Por medio de este prototipo, se puede identificar los valores más relevantes y complicados de transcribir para la mayoría de las personas que realizan su declaración de facturas. Además, que el importarlos desde una foto o imagen escaneada reduce drásticamente el tiempo de transcripción de datos. Lo que sería de mucha ayuda para personas no muy familiarizadas con las computadoras, como un buen porcentaje de adultos mayores en el país.

Si bien, muchos datos son identificados. El mayor problema reside en la calidad de la imagen tomada, ya que si esta no tiene una buena nitidez o tamaño llega a tener problemas con la identificación de algunos caracteres. Y que para trabajos futuros se podría intentar solventar con un entrenamiento más personalizado y no basándose en uno pre entrenado.

A su vez, el realizar una GUI (Interfaz gráfica de usuario), ayudaría bastante en poder llevar a este prototipo a ser más amigable con el usuario. Y por ende, facilita la importación de imágenes o facturas escaneadas para su reconocimiento de caracteres y exportación final.

Código

https://github.com/albmarale/SaturdaysAIDeepLearning

Bibliografía

[1] “PyTorch: Scene Text Detection and Recognition by CRAFT and a Four-Stage Network | by Nikita Saxena | Towards Data Science.” https://towardsdatascience.com/pytorch-scene-text-detection-and-recognition-by-craft-and-a-four-stage-network-ec814d39db05 (accessed Jul. 13, 2021).

[2] M. ul Hassan, “VGG16-Convolutional Network for Classification and Detection,” en l{\’\i}nea].[consulta 10 abril 2019]. Dispon. en https//neurohive. io/en/popular-networks/vgg16, 2018.

[3] F. Morales, “keras-ocr — keras_ocr documentation,” 2021, Accessed: 13-Jul-2021. [Online]. Available: https://keras-ocr.readthedocs.io/en/latest/.

[4] Y. Baek, B. Lee, D. Han, S. Yun, and H. Lee, “Character region awareness for text detection,” in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2019, pp. 9365–9374.

Este proyecto fue elaborado por:

  • Albert Martínez Alegría
  • Alvaro Alanoca Huaycho
  • Belinda Alcón Sullcani
  • Rodrigo Aliaga

Para el programa Saturdays.AI La Paz.

Presentación del proyecto: DemoDay

Repositorio

En el siguiente repositorio se encuentra el código usado para desarrollar esa aplicación: https://github.com/SaturdaysAI/Projects/tree/master/Lapaz/2021.DL/Deteccion-facturas-manuales-main

¡Más inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) a la vez que se realizan proyectos de impacto social (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más sobre este proyecto (y otros) únete a nuestra comunidad en o aprende a crear los tuyos en nuestro programa AI Saturdays.

PCR test

Detección de COVID-19 en imágenes de rayos X con Machine learning

La Paz. Deep Learning. 2021

INTRODUCCIÓN

La COVID-19 es la enfermedad causada por el nuevo coronavirus conocido como SARS-CoV-2. La OMS tuvo noticia por primera vez de la existencia de este nuevo virus el 31 de diciembre de 2019, al ser informada de un grupo de casos de «neumonía vírica» que se habían declarado en Wuhan (República Popular China).

Se llama SARS-CoV-2, por las siglas:

  • “SARS” porque puede producir un “Síndrome Respiratorio Agudo Grave” (siglas en inglés: Severe Acute Respiratory Syndrome, SARS).
  • “CoV” porque es un coronavirus.
  • “2” porque ya existió un virus parecido en 2002–2003 que producía también SARS.

 

¿QUÉ PRUEBAS SE UTILIZAN PARA DIAGNOSTICAR EL COVID-19?

PCR

Las PCR (siglas en inglés de “Reacción en Cadena de la Polimersa”), son un tipo de pruebas de diagnóstico que se llevan utilizando durante años en diferentes crisis de salud pública relacionadas con enfermedades infecciosas. Estas pruebas se están usando desde los primeros días del estallido de la pandemia de coronavirus en España. Sin embargo, los test rápidos se han incorporado recientemente y, como su nombre indica, son más rápidos y sencillos. Ambos sirven para comprobar si una persona está infectada o no por el Covid-19.

PCR test
ANTÍGENO

Prueba de antígeno. Esta prueba para la COVID-19 detecta ciertas proteínas en el virus. Se usa un hisopo para tomar una muestra de fluido de la nariz, y las pruebas de antígeno pueden dar resultados en minutos.

Test antígeno
RADIOGRAFIA DE TORAX

Los escáneres o las radiografías producen una imagen de los órganos y estructuras (corazón, pulmones y vías respiratorias) del tórax. Pueden detectar bloqueos, inflamación y exceso de líquido.

  • Las radiografías utilizan una pequeña cantidad de radiación para producir una imagen en dos dimensiones. Por lo general, las realiza un radiólogo en el hospital mediante un equipo fijo, pero también se pueden hacer con una máquina portátil.
  • La tomografía computarizada (TC) utiliza una computadora para fusionar varias radiografías tomadas desde diferentes ángulos y producir así una imagen bidimensional que se puede convertir en una imagen tridimensional. Requiere de un equipo muy especializado y la realiza en el hospital un radiólogo especialista.

Se pueden realizar en un hospital o en otros centros sanitarios, como la consulta de un médico o una clínica.

PROBLEMATICA

Dado que hay kits de prueba de COVID-19 son de acceso limitado para la población en general, debemos confiar en otras medidas de diagnóstico.

IMÁGENES DE RAYOS X

En el campo de la medicina se utilizan con frecuencia radiografías y tomografías computarizadas para diagnosticar neumonía, inflamación pulmonar, abscesos y / o ganglios linfáticos agrandados. Dado que COVID-19 ataca las células epiteliales que recubren nuestro tracto respiratorio, podemos usar rayos X para analizar la salud de los pulmones de un paciente.

Una gran mayoría de los hospitales tienen máquinas de imágenes de rayos X, se plantea la siguiente pregunta: ¿Cómo se podría detectar COVID-19 en imágenes de rayos X?, sin los kits de prueba dedicados.

OBJETIVOS

  • Recopilar las entradas del modelo en datasets para el entrenamiento, pruebas y validación.
  • Desarrollar un modelo de diagnóstico del covid a través de imágenes de rayos X usando deep learning, con un porcentaje de confiabilidad aceptable.
  • Evaluar los resultados del modelo a través de la matriz de confusión.

DESARROLLO DEL MODELO

Para el desarrollo del modelo se ha utilizado un dataset del repositorio de kaggle que tiene un total de 5.856 imágenes, se ha usado radiografías de pacientes que tenían neumonía porque estos pacientes tienen una alta probabilidad de tener covid-19.

https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia

SELECCION DEL MODELO Y TECNICAS IMPLEMENTADAS

Para la construcción del modelo se utilizó Redes Neuronales Convolucionales, porque son redes neuronales diseñadas y ampliamente usadas para trabajar con imágenes.

Las redes convolucionales contienen varias hidden layers, las cuales se encargan de detectar líneas, curvas y así con las convoluciones se permitirá detectar formas más complejas como siluetas, rostros, etc.

Las herramientas utilizadas son: Tensorflow y keras. Tensorflow es una plataforma de código abierto usada para aprendizaje automático compuesta por un conjunto de herramientas, librerías y recursos que facilitan el trabajo en el desarrollo e implementación de soluciones con inteligencia artificial (IA). Keras es una librería, actualmente es API de alto nivel que proporcionan interfaces que simplifican el trabajo en el desarrollo de aplicaciones con IA, a partir de la versión 2.0 keras ya viene integrada dentro de Tensorflow.

DESARROLLO DEL PROYECTO

Debido a que es una pequeña prueba de concepto de clasificación de imágenes para un curso introductorio a Deep Learning, se ha subido las imágenes del dataset a una carpeta de google drive y el desarrollo del modelo se utilizó los servicios de colab.research de Google.

Las imágenes fueron ajustadas a un tamaño de 500×500, para poder entrenar, en la siguiente imagen se observa una radiografía de un paciente normal.

Modelo

Con la integración de Keras con Tensorflow, se tienen nuevas clases como “ImageDataGenerator” que facilitan la carga de imágenes:

Las imágenes fueron divididas en 3 grupos: entrenamiento, pruebas y validación.

El modelo de clasificación se puede observar en la siguiente gráfica:

EVALUACION DEL MODELO

Para realizar la evaluación se ha utilizado la matriz de confusión:

Donde se puede observar que el modelo ha identificado:

  • Para personas que estaban sanas y que el modelo predijo como personas sanas fueron 175 casos de verdaderos negativos (VN).
  • Para personas que estaban enfermas y que el modelo predijo como personas enfermas fueron 384 casos de verdaderos positivos (VP).
  • Para personas que estaban enfermas y que el modelo predijo como personas sanas fueron 59 casos de falsos negativos (FN).
  • Para personas que estaban sanas y que el modelo predijo como personas enfermas fueron 6 casos de falsos positivos (FP).

Con estos datos podemos calcular los siguientes indicadores:

Exactitud = (VP + VN) / (VP + VN + FN + FP)

Exactitud = (175 + 384) / (175 + 384 + 59 + 6)

Exactitud = 0,8958

La exactitud es la cantidad de predicciones que fueron positivas que fueron correctas y se llegó a un valor de 89,58%

Precisión = VP / (VP + FP)

Precisión = 384 / (384 + 6)

Precisión = 0,9846

La precisión es el porcentaje de casos positivos detectados llegó a un valor de 98,46%

Sensibilidad = VP / (VP + FN)

Sensibilidad = 384 / (384 + 59)

Sensibilidad = 0,8668

La sensibilidad es la proporción de casos positivos correctamente identificados llegó a un valor de 86,68%

Especificidad = VN / (VN + FN)

Especificidad = 175 / (175 + 59)

Especificidad = 0,7478

La especificidad trata de la cantidad de casos negativos correctamente identificados llegó a un valor de 74,78%.

ANALISIS DE RESULTADOS

Del proceso de desarrollo del modelo, de acuerdo a las librerías de Keras y Tensorflow pudimos llegar a una precisión del 89,59 %.

Con los resultados obtenidos podemos observar en la figura que el valor de la precisión se mantuvo por encima del 80%, el valor de la pérdida fue inferior al 20 %.

machine learning results

Presentación del proyecto: DemoDay

¡Más inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) a la vez que se realizan proyectos de impacto social (#ai4good). Si quieres aprender más sobre este proyecto (y otros) únete a nuestra comunidad en o aprende a crear los tuyos en nuestro programa AI Saturdays.

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

WRITTEN BY