Anxietweet AI

Anxietweet AI: Detección de estrés en tweets mediante Inteligencia Artificial

Detección de estrés en tweets durante la pandemia SARS-CoV-2(COVID-19)

Anxietweet AI

Latam online. Primera Edición 2020

El estrés: una ‘epidemia’ silenciosa que puede afectar a cualquier persona durante la era moderna, ahora es más notoria debido a la mayor crisis sanitaria enfrentada durante este siglo. Los niveles de preocupación, impacto económico y emocional que han tenido que afrontar las personas han sido factores que han impactado no solo la salud física también la mental de millones de personas.

En este trabajo de inteligencia artificial (ciencia de datos), se realiza un esfuerzo para analizar, predecir y determinar, si una persona está estresada con el uso de sus mensajes a través de la red social de Twitter.

Problema general

¿Es posible que una máquina pueda determinar si una persona está estresada solo con la expresión escrita?

Motivación

Social: ayudar a identificar y reconocer el estrés durante la crisis sanitaria para así conocer el estado emocional de las personas sin necesidad de un estudio en persona

Profesional: obtener, extender y aplicar los conocimientos sobre ciencia de datos e inteligencia artificial, en el análisis de lenguaje humano y en reconocimiento de emociones

Metodología

La metodología con la que se trabajó en este proyecto está basada en la metodología tradicional de CRISP-DM [1]. A continuación se muestra el diagrama general de los pasos que se llevaron a cabo en este trabajo.

Diseño del modelo de reconocimiento:

Recolección de datos

Para llevar a cabo el análisis se recolectaron datos de tweets de 3 diferentes ciudades para poder tener muestras variadas y esperar resultados diferentes. Las ciudades fueron elegidas solamente tomando en cuenta que fueran ciudades grandes en diferentes países angloparlantes.

Las ciudades de las que se obtuvieron los datos fueron las siguientes:

  • Brisbane, Australia (2225 tweets)
  • San Francisco, Estados Unidos (5000 tweets)
  • Vancouver, Canadá (1699 tweets)

Cabe mencionar que los datos fueron recolectados el 24 de octubre y los tweets tienen fecha máxima de publicación una semana anterior a la fecha de recolección y mínima del mismo día de la recolección.

Las palabras claves que se utilizaron para la recolección fueron las siguientes:

covid OR COVID OR coronavirus OR corona OR coronavirus OR #coronavirus OR #covid19 OR covid19 OR sarscov2 OR #covid-19 OR #sarscov2 OR sars OR cov2 OR sars OR #quarantine OR pandemic OR #pandemic OR #2019ncov OR 2019ncov OR quarantine OR lockdown OR #lockdown OR social distancing OR #socialdistancing OR #COVID OR #covid”

La estructura de los datos es idéntica para los 3 datasets. Cada dataset está organizado en 3 columnas:

  • user_location: Ubicación aproximada del usuario (si su ubicación está activada).
  • date: Fecha de publicación del tweet.
  • text: Texto del tweet.

Los datos anonimizados se obtuvieron a través de la API de Twitter a través de un script de Python utilizando Tweepy [2].

tweepy

Etiquetado

Para el etiquetado de los datos, fue utilizada una herramienta llamada TensiStrength, la cuál está desarrollada en Java, y ayuda a evaluar el nivel de relajación o ansiedad que se puede encontrar en un texto sencillo. Esta herramienta funciona por medio de diccionarios de emociones en los cuales se asignan valores a las palabras positivas o negativas y a su vez también cuenta con un diccionario de palabras (booster words) que incrementan el valor de la expresión/emoción.

TensiStrength logra catalogar los textos de dos maneras disponibles, binaria o ternaria; la ternaria los clasifica en 1, 0, -1, positivo, neutral y negativo respectivamente. El esquema para la clasificación de emociones utilizado en nuestro modelo, utiliza la clasificación de tipo binaria, que consiste en usar las etiquetas 1 y 0, las cuales corresponden a “estrés” y “no estrés”.

Las clases se encuentran distribuidas con un porcentaje de:
Tweets con estrés = 49.972%
Tweets sin estrés = 50.028%

Exploración de los datos:

Cantidad de tweets con estrés.

Porcentaje de estrés por ciudad

Porcentaje de estrés por ciudad, representa la cantidad de tweets con estrés respecto al total de tweets.

Palabras más usadas en los tweets, excluyendo conectores.

Palabras más usadas en los tweets, excluyendo conectores y palabras relacionadas con Covid.

Distribución de las palabras en los Tweets según su longitud

Pre-procesamiento de los datos:

Después de recolectar los datos, se llevó a cabo un pre-procesamiento con el fin de que los datos se pudieran utilizar para entrenar un modelo clasificador. Este paso es uno de los más importantes y es aquel que comúnmente consume más tiempo en un proyecto de aprendizaje de máquina.

  • Reducción de Ruido: se eliminaron espacios extras, carácteres especiales y ligas a otras páginas.
  • Normalización: los carácteres se transformaron a minúsculas, se eliminaron puntuaciones y se expandieron las contracciones.
  • Eliminación de palabras vacías o Stopwords: se removieron aquellas palabras que no tienen un significado por sí mismas (artículos, pronombres, preposiciones y algunos verbos)
  • Lematización: se llevó a cabo una lematización, la cual consiste en convertir la palabra a su forma base (i.e. mesas a mesa).
  • Tokenización: finalmente los textos se separaron en palabras, también llamados tokens.

Antes del pre-procesamiento, el texto se visualiza de la siguiente manera:

Posterior a la limpieza y previo a la tokenización, el texto se visualiza de la siguiente manera:

Visualización de datos

Fue realizada por medio de nubes de palabras, en general y dividiendo los datos por clase.

Palabras más recurrentes en general:

Palabras más recurrentes dentro de los datos clasificados como SIN estrés

Palabras más recurrentes dentro de los datos clasificados como CON estrés

LDA (Latent Dirichlet Allocation)

Se utilizó un clasificador de modelo generativo LDA (no supervisado), que permite que a partir de una bolsa de palabras, se genere un conjunto de observaciones que puedan ser explicadas por algunas de las partes de los datos que son similares o que tienen cierta concordancia. Este es un modelo de categorías y fue presentado como un modelo de grafos para descubrir categorías por David Blei, Andrew Ng y Michael Jordan en 2002.

En nuestro trabajo se utilizó a partir de de la vectorización de la data tratada y limpia de los tweets obtenidos, una tokenización y generando una vectorización de las palabras.
Obteniendo un clasificador de 2 tópicos, en las cuales sus principales palabras fueron:

Tópico 0: Covid case new health vaccine death year trump plan day

Tópico 1: Covid people trump go new case mask know say need

y utilizando la librería pyLDAvis
se obtuvo el visualizador:

Modelado

Para este proyecto se evaluaron cinco modelos de Machine Learning. Como modelo base se utilizó Naive Bayes y se comparó con:

  • Regresión Logística
  • K-Nearest Neighbors
  • Random Forest
  • Gradient Boosting.

Para la vectorización [4] de los tweets se evaluaron 2 técnicas: Bag of Words y TF-IDF (term frequency — inverse document frequency) y dos estrategias para sus n-gramas: Bigrama y Trigramas [5].

Los resultados se midieron por medio del AUC (Area Bajo la Curva) y se evaluaron con validación cruzada (k = 10). Tanto el preprocesamiento, entrenamiento y evaluación del modelo se llevaron a cabo dentro de un “pipeline” creado dentro de una clase utilizando el lenguaje de programación de Python.

Nivel de precisión para cada modelo implementado con “Bigrams”
Nivel de precisión para cada modelo implementado con “Trigrams”

En las gráficas de AUC previas se muestra que la combinación ganadora es la de: RFt + BoW + Bigramas, ya que es la mejor en discernir los mensajes que tienen alguna relación con estrés de aquellos que no la tienen.

A continuación podemos observar la matriz de confusión del modelo ganador, así como los resultados de sus métricas.

Optimización (‘Tuneo’) del modelo:

El ajuste fue realizado para tres modelos con el fin de mejorar su desempeño.

Logistic Regression
Se genera una búsqueda de grilla utilizando grid search al cual se le definen ciertos valores con los que se ejecutará el modelo para obtener la versión con mejor Accuracy. Para esto se consideró:
1.- Valor C
2.- Penalty del modelo: L1 (Lasso) y L2 (Ridge)

Random Forest Classifier
Se genera una búsqueda de grilla utilizando grid search al cual se le definen ciertos valores con los que se ejecutará el modelo para obtener la versión con mejor Accuracy. Para esto se consideró:
1.- Número de Estimadores: número de árboles utilizados en el bosque. Este valor empezará en 200 e irá de 10 en 10 hasta llegar a 2000.
2.- Max_Features: es el número de atributos a considerar para la mejor división. Se prueba con “auto” que se refiere a que el máximo de atributos será la raíz cuadrada del número de atributos.
3.- Max_depth: esto se refiere a la máxima profundidad del árbol. Para este caso se parte en 10 hasta 110 avanzando de 11.
4.- Min_Samples_split: es el número mínimo de muestras requeridas para la división interna del nodo. Se prueba con 2, 5 y 10.
5.- Min_samples_leaf: el número mínimo de muestras requeridas para ser una hoja de nodo. Se considera 1, 2 y 4 para realizar la búsqueda de grilla.
6.- Bootstrap: Si es Verdadero, usará bottstrap en la construcción de los árboles. Si es falso no se utilizará. Se probará con ambas.

Gradient Boosting Classifier
Se genera una búsqueda de grilla utilizando grid search al cual se le definen ciertos valores con los que se ejecutará el modelo para obtener la versión con mejor Accuracy. Para esto se consideró:
1.- Loss: se usa desviance para evaluar como regresión logística la función de pérdida
2.- Learning:rate: es la medición que mide la contribución de cada árbol.
3.- Max_Features: es el número de atributos a considerar para la mejor división. Se prueba con “sqrt” que se refiere a que el máximo de atributos será la raíz cuadrada del número de atributos, en el caso de “log2” se usa el logaritmo del número de atributos.
4.- Max_depth: esto se refiere a la máxima profundidad del árbol. Para este caso se usa 3, 5 y 8.
5.- Min_Samples_split: es el número mínimo de muestras requeridas para la división interna del nodo. Se prueba con un linspace de 0.1, 0.5 y 12.
6.- Min_samples_leaf: el número mínimo de muestras requeridas para ser una hoja de nodo. Se prueba con un linspace de 0.1, 0.5 y 12.
7.- Numero de Estimadores: número de árboles utilizados en el bosque. Este valor empezará en 200 e irá de 10 en 10 hasta llegar a 2000.

Evaluación:

El modelo generado con mayor eficacia fue el de Random Forest, ya que es capaz de reconocer si un tweet contiene o no estrés con una precisión de 88%, lo cual es una métrica muy buena, ya que la velocidad con la que se puede evaluar un conjunto masivo de tweets con esta exactitud ayuda enormemente en una tarea que un humano tardaría mucho más tiempo, y de esta manera es posible encontrar o tratar posibles casos que requieran asistencia sin necesidad de esperar a que esto lleve a un problema mayor como lo es la depresión.

Análisis de resultados:

Para poder adentrarnos más en por qué el modelo se comporta de la manera que lo hace, hicimos uso de SHAP, una técnica de teoría de juegos utilizada para explicar los modelos. El modelo utilizado fue un Random Forest con 100 estimadores.

En este caso utilizamos un TreeExplainer de la librería shap. Para calcular estos valores se tuvo que usar solamente el 5% de los datos de entrenamiento y 10,000 features, de otro modo, el tiempo de ejecución sobrepasa la hora y media en Google Colab.

Resultados para tweets que NO tienen estrés:

Resultados para tweets que SÍ tienen estrés:

Casos de uso para el modelo generado:

Instituciones públicas, gubernamentales o privadas que estén interesadas en conocer o monitorear el estado anímico de una población, o conjunto de personas por zona geográfica, para evaluar el nivel de estrés.

Personal que labore en el área médica enfocada en la salud mental, para lograr identificar las condiciones sobre la estabilidad emocional de algún sector de la población.

Empresas privadas que puedan ofrecer servicios de consultoría para el bienestar emocional y que ofrezcan análisis o proyección de campañas de salud mental en la sociedad.

Desarrollo de Modelo en un App Web

Para alojar nuestro modelo de Machine Learning usamos el framework Flask. Este es usado por su facilidad de uso, ser muy escalable y además, está desarrollado para Python. Lo cual permite en un lenguaje realizar todo el desarrollo. Hay que tener claro que una aplicación web tiene dos partes fundamentales.

Partes de una App Web:

  1. El Front-end el cual es una página desarrollada con Html y Css. Sin ninguna parte de JavaScript ya que es una app sencilla de utilizar.
  2. El Back-end será desarrollado con Flask, donde permite crear la integración con el Front-end y además correr el modelo ya entrenado.

Desarrollo de la interfaz de usuario

En esta parte fueron utilizadas dos herramientas en línea bastante útiles que son Flask y Heroku.
Flask es un framework para desarrollo web con gran interacción con Python; Heroku es usado como un servidor para el despliegue y disponibilidad pública de la aplicación.

La aplicación se encuentra disponible en:

ANXIE-TWEET Heroku

Integrantes

  • Elías Garcés (Ing. Civil)
  • Daniela Gómez (Ing. Industrial y de Sistemas )
  • Enrique Ramos García(Lic. en Matemáticas )
  • Fernando Vizcarra Salva( Ing. Mecatrónico )
  • Jonathan Chávez(Desarrollador Web)

Presentación del proyecto: DemoDay

Repositorio

En el siguiente repositorio de encuentra el código usado par desarrollar esta aplicación: https://github.com/SaturdaysAI/Projects/tree/master/LATAM_remote/DataExtraction-master

¡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!

tac

Transformación de Imágenes de Angiotomografía por medio del uso de Inteligencia Artificial.

Latam online. Segunda Edición. 2021

Angiotomografías con contraste ¿Cuál es el problema?

El reto

Los medios de contraste vía endovenosa que se usan en las angiotomografias contrastadas pueden tener incidencia en la salud nefrológica de los pacientes, sobre todo en aquellos que tienen antecedentes de hipertensión arterial, hipercolesterolemia, antecedentes genéticos, en edad adulta mayor (60 años en adelante) y un riesgo cardiovascular aumentado (1), es decir, son más propensos a:

  • tener accidentes cerebrovasculares,
  • infarto agudo de miocardio,
  • enfermedad arterial periférica y,
  • enfermedades de la aorta en general

Existe la posibilidad de realizar angiotomografias simples que no requieren el uso de medios de contraste y que tienen un costo menor (alrededor de $200,00 de diferencia), pero estas no permiten una visualización completa de las estructuras aórticas con claridad (2), por lo que no son útiles en muchos casos, como en el de Jesús.

Por qué escogimos Angiotomografías?

La oportunidad ¿Cómo proponemos solucionarlo?

ANGIOP.AI (Sistema de Transformación de Imágenes de Angiotomografía) genera avances significativos en el análisis de imágenes médicas mediante modelos de análisis de inteligencia artificial para angiotomografias, brindando una alternativa que signifique un menor impacto para la salud de los pacientes que, por su diagnóstico y estado general, requieren realizarse este tipo de análisis de manera recurrente.

Figura 1. Estructura del modelo GAN aplicado a la transformación de imágenes de Angiotomografía

ANGIOP.AI basa su funcionamiento en el entrenamiento, validación y evaluación de un modelo CycleGAN para procesar imágenes de angiotomografias sin contraste y transformarlas en imágenes similares a las que se obtendrían usando métodos de contraste; se entrena un CycleGan para leer una imagen de un dataset X (imágenes sin contraste) y transformarlo para que parezca como si perteneciera a un dataset Y (imágenes con contraste).

¿Cuáles son los beneficios?

ANGIOP.AI está alineada al cumplimiento de los objetivos de desarrollo sostenible de las Naciones Unidas al 2030.

Lo explicamos paso a paso: metodología, modelo usado y datasets

Los datasets utilizados corresponden a los provistos por el Dr. Gonzalo Pullas, director de la carrera de Medicina en la Universidad de las Fuerzas Armadas; quien facilitó las imágenes de angiotomografias con contraste y angiotomografias simples (sin contraste) de 10 pacientes anónimos.

El total de imágenes facilitadas fueron de 5.144, de tamaño 512 x 512, en escala de grises, a las que se les aplicó una exploración de los datos — análisis estadístico para descartar imágenes a color y en 3D, sin datos atípicos y con Diferencias en distribución de pixeles (zonas / cortes). Es importante mencionar que las angiotomografías fueron tomadas en la misma zona anatómica, pero en diferentes oportunidades, es decir, las imágenes no corresponden a una paridad 1:1.

El modelo utilizado es CycleGan con pre-procesamiento de imágenes de escala -1 a 1 para la entrada del modelo. Los discriminadores son redes convolucionales con 5 capas que receptan imágenes de 256×256. Las 4 capas son de definición de patrones y una capa de clasificación. El generador utiliza tres capas convolucionales y seis bloques residuales. Para el cálculo de las funciones de costos, tanto para las imágenes reales como falsas, se está utilizando el proceso del error cuadrático medio (mean squared error).

El modelo utiliza los siguientes parámetros:

  • 20000 épocas
  • Tasa de aprendizaje del 0,0001

Para el entrenamiento se aplicaron los siguientes pasos:

  • Seleccionar una cantidad de imágenes reales
  • El generador toma las imágenes reales y les agrega ruido para crear una cantidad de imágenes falsas
  • Entrenar al discriminador, haciendo que clasifique las imágenes como falsas o verdaderas un cierto número de veces o épocas
  • Generar otra cantidad de imágenes falsas para entrenar el generador
  • Se entrena al modelo
  • Para finalizar el modelo, se debe revisar la veracidad de la ejecución, revisando el gráfico de pérdidas a través del tiempo y revisando las muestras generadas por el modelo.

Veamos los resultados:

Lecciones aprendidas

  • Enseñar al modelo a validar las imágenes de entrada si corresponde a la zona angio toráxica.
  • Aumentar el Dataset para futuros entrenamientos.
  • Se requiere una validación de las imágenes generadas con un panel de expertos médicos.

Lo que se viene: Futuro de ANGIOP.AI

  • Usar la data generada para medir el impacto del uso del sistema en reducción de incidencia de enfermedades renales.
  • Desarrollar una aplicación Web.

Referencias

(1) Cueva Torres, Dr., F. (2021). Epidemiología y Manejo de las Enfermedades de la Aorta — SIAC. Sociedad Interamericana de Cardiología.

(2) RadiologyInfo para pacientes (2020). Materiales de Contraste.

(3) World Heart Federation (2016) World Congress of cardiology & Cardiovascular Health

(4) Ferreira, J (2017) Actualidad en nefropatía por medio de contraste. Universidad Pontificia Bolivariana, Medellín — Colombia. ELSEVIER Volumen 14 Número 2

Integrantes

Diego Chiza, Ana Gayosso, Gabriela Jiménez, Paola Peralta, Patricia Román José Daniel Sacoto, María Teresa Vergara, Hilario Villamar, David Medrano.

Presentación del proyecto: DemoDay

Repositorio

El código fuente de este proyecto se puede encontrar en: github

¡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!

Descubriendo la calidad del sueño con técnicas de Machine Learning

Latam online. Segunda Edición. 2021

El brote de COVID-19 y las respuestas sociales adoptadas para combatir su propagación (por ejemplo, el confinamiento y el distanciamiento social) han tenido consecuencias de gran alcance, pero han brindando también una oportunidad única para examinar los efectos que el estrés crónico y la incertidumbre pueden tener en los patrones de sueño de la población en general.

Está bien documentado que el sueño puede verse afectado cuando se está bajo estrés y que los cambios en el sueño pueden tener consecuencias negativas en las emociones y el bienestar mental. Un metanálisis reciente mostró que la pandemia de COVID-19(1) ha provocado una alta prevalencia de trastornos del sueño, que afectan aproximadamente al 40 % de las personas de la población general.

Se sabe que además del estrés debido a la pandemia por COVID-19, hay otros factores que podrían alterar la resiliencia mostrada bajo estrés, por ejemplo,la falta de interacción social, la falta de ejercicio físico, el bienestar económico etc.

Este proyecto tiene como objetivo determinar qué factores pueden afectar la calidad del sueño de la población cuando están sujetas a situaciones de estrés crónico como es el caso de una pandemia. Predecir dichos factores permitiría emitir consejos útiles para la población, de tal forma que estén mejor preparados para futuras pandemias y/o situaciones de estrés crónico que permitan mitigar el impacto emocional causado por la mala calidad de sueño.

Metodología

La base de datos seleccionada para este proyecto ha sido la publicada por la Universidad de Boston2, que consiste de una serie de encuestas realizadas a 1,518 personas a través de redes sociales para evaluar el impacto de la pandemia en el bienestar emocional y mental de las personas dependiendo diversos factores como la edad, el impacto económico, la condición de minoría y o el estado de riesgo.

Una vez seleccionada la base de datos proseguimos a la limpieza y procesamiento de los datos. Después de este proceso, el número de variables de nuestra base de datos fue de 216 y el tamaño de la muestra se redujo a 839 sujetos debido a que no toda la información estaba completa.

Las variables principales incluyen información demográfica (edad, identidad de género, ingresos, etc.), información relativa a los hábitos de sueño, niveles de ansiedad, regulación emocional cognitiva, y personalidad, entre otras.

La métrica elegida para evaluar la calidad del sueño fue la variable del índice total de calidad del sueño de Pittsburgh (PSQI), que tiene una escala de 0 a 21. En dicha escala, una puntuación global de 5 o más indica una mala calidad del sueño; cuanto mayor sea la puntuación, peor será la calidad.

Análisis del dataset

Observamos la distribución de los datos

Histograma Calidad del sueño por género
Puntuación sueño
Barplot Calidad del sueño por estado civil
Barplot Calidad del sueño por ingresos

Observamos la correlación que entra la calidad de sueño con otras variables no asociadas al sueño:

  • Diferencia de cronotipo pre y post covid
  • Variable de ansiedad (No consigue dejar de preocuparse)
  • Variable de personalidad (Se considera relajado)
  • Variable de ansiedad social (Miedo a extraños post covid)

Modelos

Clasificación

En el conjunto de datos, nuestra métrica elegida para evaluar toma valores del 0 al 18 (no se han observado casos de 19 a 21). Si tomamos estos valores como si fueran clases o subconjuntos podemos aplicar un método de clasificación.

Hemos elegido aplicar el algoritmo de RandomForestClassifier con el que en un principio obtenemos valores muy bajos de precisión rondando el 0,20. A continuación, probamos a recudir las clases agrupando los valores originales de la métrica. A medida que vamos reduciendo las clases observamos que los valores de precisión van mejorando, para 6 clases el resultado mejora en torno a 0,5 y para 4 clases el resultado llega a 0,7.

Para tener una explicación de estos resultados mostramos los shap values de las predicciones:

Podemos observar que las variables que aparecen con más peso, son las que están directamente ligadas con datos de sueño (psqi_*). Las primeras de todas ellas son si la persona ha recurrido a medicinas para dormir, la percepción que declara de su calidad de sueño, y el tiempo que tarda en conciliar el sueño. Dentro de estas variables también observamos que tienen impacto datos de personalidad (big5_*) , como si se considera una persona relajada, o ansiedad (gad_*), como la capacidad de dejar las preocupaciones.

Según lo observado podemos concluir que el algoritmo está funcionando correctamente y que los datos en los que se basa para realizar las estimaciones son los esperados. Creemos que el número de observaciones con las que contamos son muy bajas para el número de clases a predecir y que aumentando los datos se podrían mejorar las predicciones.

Regresión

Para la regresión hemos elegido cuatro algoritmos distintos: RandomForest, Logistic, GradientBoosting y HistGradientBoosting.

El algoritmo que produjo el mayor coeficiente de determinación fue el de GradientBoosting, con un R2=0.9. Lo que significa que el 90% de los puntos se ajustan a la línea de regresión.

Una vez seleccionado el mejor algoritmo intentamos utilizar la optimización de los argumentos usando RandomizedSearchCV pero no obtuvimos nada mejor. Además probamos reducir el número de variables mediante el uso de PCA. Obtuvimos el número óptimo de variables y redujimos el tamaño de la base de datos a ese número, en este caso 138, pero los resultados empeoraron, la R2 disminuyó hasta 0.57.

Análisis PCA para reducir el número de variables

Por esta razón decidimos quedarnos con el resultado obtenido con el algoritmo de GradientBooster como la mejor opción para predecir la calidad del sueño.

Conclusión

Es posible predecir la calidad del sueño con un 90% de precisión. Pudimos observar que la calidad del sueño depende en mayor medida de variables relacionadas con:

  • Medicación
  • Tiempo que toma a la persona conciliar el sueño
  • Entusiasmo por llevar a cabo cosas
  • Manejo del estrés
  • Control de las preocupaciones

Esta predicción, aunque intuitiva, puede ser de utilidad para implantar medidas que puedan ayudar a la población a mejorar la calidad del sueño en situaciones de estrés crónico como la sufrida durante una pandemia.

En el futuro, este proyecto se podría mejorar aumentando el número de muestras de la base de datos actual.

Referencias

1. Jahrami, H. et al. Sleep problems during COVID-19 pandemic by population: a systematic review and meta-analysis. J Clin Sleep Med, jcsm-8930. (2020).

2. Cunningham, T.J., Fields, E.C. & Kensinger, E.A. (2021) Boston College daily sleep and well-being survey data during early phase of the COVID-19 pandemic. Sci Data 8, 110. https://www.nature.com/articles/s41597-021-00886-y

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!

Deep Learning para detectar el cansancio y la inantención del conductor.

Latam online. Segunda Edición. 2021

En Ecuador, el uso del celular mientras se conduce un vehículo registró un incremento en los primeros nueve meses del 2021; entre enero y septiembre de 2021 se reportaron 15,393 siniestros de tránsito. De ellos, 3,989 están relacionados con distracciones, ejemplo el uso del celular el cual representa el 26% del total mencionado. Si se compara con igual periodo del 2020 se observa un incremento: 240 siniestros más causados por este tipo de distracciones. (ANT, 2021)

Como se puede apreciar en la Figura 1, solo en Guayaquil, una de las ciudades más importantes del país, registra un total de 1,450 accidentes de tránsito por conducir desatento a las condiciones de tránsito (celular, pantallas de video, comida, maquillaje o cualquier otro elemento distractor) etiquetada como C14; estos tipos de distractores dejaron 1,256 fallecidos en la vía”, siendo una de las primeras causales de esto. El conducir en estado de somnolencia o malas condiciones físicas (C03) solo registra un total de 9 accidentes y 11 fallecidos en el año 2021.

Clasificación de estados y distractores

Existen varios tipos de distracciones al conducir y así lo determina la National Center for Statistics and Analysis (NCSA por sus siglas en inglés) las cuales se clasifican de la siguiente manera: (NHTSA, 2021)

Estado del conductor:

  • Atento
  • Distraído
  • Miró, pero no vio
  • Tiene sueño o se quedó dormido

Distracciones relacionadas al conductor:

  • Comer o beber
  • Persona, objeto o evento externo
  • Ajuste de radio, casete o CD
  • Otros ocupantes del vehículo
  • Objeto en movimiento en el vehículo

Descripción del problema

De acuerdo con los datos estadísticos obtenidos un número importante de personas mueren como resultado de accidentes de tránsitos. De todos ellos, muchos son provocados por lo que se conoce como inatención, cuyos principales factores contribuyentes son tanto la distracción como la somnolencia. Por lo tanto, los conductores con fatiga pueden beneficiarse de un sistema que los alerte al momento de perder la atención.

En base a lo mencionado en líneas anteriores, se plantea el siguiente problema:

¿Cómo evitar que un conductor de vehículo se distraiga o caiga en estado de somnolencia?

Objetivo general

El objetivo fue diseñar una herramienta para entornos vehiculares, la cual, mediante técnicas de Deep Learning detecte tanto la distracción como la somnolencia en los conductores y pueda enviar una alerta sonora directamente al conductor, para que vuelva la atención inmediatamente a la vía y así evitar que ocurra un siniestro de tránsito, además de que se pueda monitorear las alertas mediante una consola de administración, con el fin de controlar al personal que está maniobrando el vehículo.

Estructura de la herramienta

La Figura 2 muestra la estructura de la herramienta, su funcionamiento será de la siguiente manera:

  1. Cámara web con altavoz implementada en la cabina del conductor de manera frontal directa.
  2. Servidor Web donde se ejecutará el algoritmo, el cual procesará las imágenes y realizará las detecciones acordes al entrenamiento, sea por distracciones o estado de somnolencia. Luego del procesamiento y la detección, este, enviará una alerta directa al conductor, el tipo de esta alerta será sonora, con el objetivo de que regrese la atención a la vía.
  3. Panel de administración o control, luego del procesamiento y ejecución del algoritmo, se enviará también una alerta visual o textual al administrador de la herramienta, para que internamente se lleve un control de los actos cometidos por el conductor.

La Figura 3 y 4, muestra la alerta que se mostrará en el panel administrativo de la herramienta en diseño, enviando la imagen del conductor con el objeto distractor o con el estado del conductor.

Técnicas implementadas

A. Detección de inatención

Para detectar las distracciones del conductor necesitamos entrenar un modelo de detección de objetos. La detección de objetos es una tecnología de visión artificial que localiza e identifica objetos en una imagen, debido a su versatilidad, se ha convertido en los últimos años en la tecnología de visión artificial más utilizada.

La tarea de detección de objetos localiza objetos en una imagen y los etiqueta como pertenecientes a una clase objetivo, como se muestra en la imagen a continuación.

Los modelos de detección de objetos logran este objetivo al predecir las coordenadas X1, X2, Y1, Y2 y las etiquetas de clase de objeto.

Para nuestro proyecto utilizamos YOLO V5, YOLO se introdujo inicialmente como el primer modelo de detección de objetos que combinaba la predicción de cuadros delimitadores y la clasificación de objetos en una única red diferenciable de extremo a extremo. Fue escrito y se mantiene en un framework llamado Darknet. YOLO V5 es el primero de los modelos de YOLO escrito en el marco PyTorch y es mucho más liviano y fácil de usar. Dicho esto, YOLO V5 no realizó cambios importantes en la arquitectura de la red en YOLO V4 y no supera a YOLO V4 en un punto de referencia común, el conjunto de datos utilizado fue de COCO dataset.

La Figura 6, nos muestra la arquitectura utilizada de Yolo V5, que está compuesta de la siguiente manera:

Backbone:

Model Backbone actúa como un extractor de características de una imagen de entrada. El extractor de características no es más que el uso de capas convolucionales como kernel, stride, la normalización por lotes se aplica a las imágenes de entrada para extraer características importantes como bordes, formas, etc. CSP (redes parciales de etapa cruzada) se utilizan como columna vertebral en YOLO V5 para extraer características útiles de una imagen de entrada.

Cuello:

En la capa de cuello, la red se diseñó para realizar predicciones de múltiples escalas además de la red de pirámide de características. La predicción multiescalar ayuda a detectar objetos de diferentes tamaños al enviar imágenes a tres valores de cuadrícula diferentes. Entonces, las imágenes de cuadrículas pequeñas detectan objetos grandes y las imágenes de cuadrículas grandes detectan objetos pequeños.

Head:

El modelo Head es el principal responsable del paso final de detección. Utiliza cuadros de anclaje para construir vectores de salida final con probabilidades de clase, puntajes de objetividad y cuadros delimitadores.

B. Detección de sueño y distracción de la visión

Para la detección de los ojos se utilizó la librería Dlib en conjunto con el modelo de referencia de rostros: shape_predictor_68_face_landmarks.dat, el cual utiliza la máscara de detección de puntos (Figura 7) para determinar ubicaciones clave que conforman un rostro.

Utilizando estas herramientas se logró identificar la ubicación de los ojos tomando como referencia desde el punto 36 hasta el 41 para delinear el ojo izquierdo y del 42 al 47 el ojo derecho.

Con esta información se logró determinar si frente a la cámara se encontraba un rostro humano, y en caso afirmativo se utilizó la distancia euclidiana (para determinar la longitud de una línea recta entre dos puntos) y así establecer si los ojos se encuentran abiertos o cerrados.

Posteriormente, si los ojos permanecen cerrados por más de dos segundos entonces se activa una alarma cuya finalidad es despertar al conductor (Figura 3). Por otra parte, si el conductor está viendo en cualquier dirección que no sea el frente, después de cuatro segundos la alarma se activa para alertar respecto a la distracción (Figura 3).

Evaluación del modelo

Utilizamos YOLO V5, posterior al entrenamiento, evaluamos las pérdidas de entrenamiento y las métricas de rendimiento en Weights & Biases.

El mAP a 0,5 y el mAP a 0,5:0,95 se trazan para 200 épocas. mAP@[0.5:0.95] significa mAP promedio sobre diferentes umbrales de IoU, de 0.5 a 0.95, paso 0.05 (0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95).

En cuanto a la precisión y la recuperación para 200 épocas se dan a continuación. La precisión fue buena durante las últimas épocas, pero los valores de recuperación fueron más bajos durante las últimas épocas.

Pérdida de entrenamiento y validación:

En detección de objetos, hubo un total de 3 pérdidas para calcular

  • Pérdida de caja: que es una pérdida al cuadrado porque detectar las coordenadas de la caja es una tarea de regresión simple
  • Pérdida de clase, que es una pérdida de registro porque predice la probabilidad de que un objeto pertenezca a una clase.
  • Pérdida de objetos

Generación y preparación del conjunto de datos

Para entrenar nuestro modelo de detección de objetos necesitamos supervisar su aprendizaje con anotaciones de cuadro delimitador. Dibujamos un cuadro alrededor de cada distractor que el detector reconozca: celular, comida, cigarrillo y botellas para identificar cuando el conductor está distraído o realizando alguna actividad ajena a la conducción. Existen muchas herramientas de etiquetado (CVAT , LabelImg , VoTT, Roboflow ) y soluciones a gran escala (Scale, AWS Ground Truth), en nuestro caso utilizamos Roboflow.

Las imágenes para construir nuestro conjunto de datos fueron descargadas de Kaggle y COCO Dataset:

  • Dataset containing smoking and not-smoking images (smoker vs non-smoker)
  • Mobile Images Dataset
  • COCO Dataset

Ventajas de usar guardian

  • Innovador, diseñado con Inteligencia Artificial, algoritmo de Deep Learning
  • Preciso, algoritmo entrenado con una precisión de 92% de distractores y parpadeos de ojos.
  • Accesible, la herramienta se puede implementar en cualquier parte del mundo.
  • Adaptable, el algoritmo se puede re-entrenar las veces que haga falta.
  • Liviano y fácil de manejar, no necesita de instalación y su uso administración es muy fácil.
  • Confiable, herramienta diseñada para la nube, capaz de mantenerse activa 24/7

Conclusión

La inteligencia artificial ha incrementado sus posibilidades, especialmente desde la aparición de tecnologías como las redes neuronales y el aprendizaje automático (machine learning).

Al utilizar Deep Learning, para identificar patrones en fotos o vídeos y llevar a cabo la detección de distractores o estado de somnolencia del conductor, es posible enviarle una alerta sonora que regresaría la atención inmediata y probablemente se evitaría un siniestro de tránsito, reduciendo así la tasa de mortalidad por estas causas.

El proyecto se diseñó como un sistema para entornos vehiculares funcional, capaz de detectar la fatiga y los objetos distractores mientras se conduce un vehículo, además de emitir los dos tipos de alertas (sonora y textual). El modelo logra detectar los distractores correctamente en un 92 %.

El algoritmo podrá seguir entrenando y ampliando los objetos distractores para su detección.

Planes a futuro

El presente proyecto tiene la intención de llevar a las siguientes empresas:

  • Empresas de transporte masivo (Terminal terrestre, estación de autobuses)
  • Empresas de transporte ejecutivo (Uber, Cabify, Taxi amigo)

Integrantes

  • Ing. Carlos Watson (cwatsonm@gmail.com)
  • Ing. Josué Huamán (esai.huaman@gmail.com)
  • Ing. Yolanda C. Sarmiento (yolitasarmiento@hotmail.com)
  • Karyme Rodriguez (karyme.rodriguez@cetys.edu.mx)
  • Joanna Araiza (joanna.araiza7829@alumnos.udg.mx)

Presentación del proyecto: DemoDay

Nuestro repositorio en Github

https://github.com/SaturdaysAI/Projects/tree/master/LATAM_remote/GuardIAn

¡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!

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!

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

Detección de fatiga en conductores de vehículos mediante Inteligencia Artificial

La Paz. Deep Learning. 2021

Las herramientas de visión artificial han demostrado vez tras vez el gran potencial que posee en sus distintas áreas de aplicación. Una de estas está justamente relacionada con los vehículos y sus conductores. Abarcando desde movilidades autónomas hasta herramientas de uso personal el espectro es muy amplio. Por ello, en este texto se explica la implementación de un detector de fatiga en conductores mediante Inteligencia Artificial utilizando OpenCV y Dlib.

DESCRIPCIÓN DEL PROBLEMA

Los accidentes de tránsito son una de las principales causas de muerte en ciudadanos de todos los países. Estos se pueden clasificar de acuerdo a sus causas. Se calcula que entre un 20% y un 30% de los accidentes se deben a conductores que conducen con fatiga. Si bien la fatiga al conducir es un riesgo evitable, lastimosamente, muchos conductores no toman las precauciones necesarias cuando conducen por periodos prolongados de tiempo. Por lo tanto, los conductores con fatiga pueden beneficiarse de un sistema de Inteligencia Artificial que los alerte al momento de perder la atención.

OBJETIVO

Diseñar un sistema para detectar la fatiga en conductores.

SELECCIÓN DEL MODELO

Se seleccionó un modelo de visión artificial pre entrenado basado en la librería cv2 de OpenCV y dlib para detección facial.

TÉCNICAS IMPLEMENTADAS

  • OpenCV: La biblioteca libre de visión artificial que se está usando para obtener la imagen del conductor.
  • Dlib face landmarks: Son 68 puntos que se colocan sobre el rostro detectado para la identificación de facciones faciales, en este caso los ojos.
  • NumPy: Esta biblioteca se está usando para el cálculo de la proporción de abertura de los ojos, mediante álgebra lineal y el posicionamiento de los puntos faciales de los ojos.

EVALUACIÓN DE MODELOS

El sistema construido hace uso de un modelo pre entrenado de detección facial. Con ayuda de las bibliotecas previamente mencionadas se realiza un procedimiento como sigue:

  1. Se carga el modelo detector y predictor que son los que detectan el rostro del conductor así como los 68 puntos faciales.
  2. Una función lineal detecta la proporción de aspecto en los ojos midiendo distancias entre los puntos oculares.
  3. Según el valor que se obtenga en esta proporción el programa se ramifica según el estado que considere correspondiente (despierto, cansado o dormido). Para que se considere la transición de un estado a otro debe haber una permanencia en ese estado durante un periodo de tiempo.
  4. El sistema indica en pantalla el estado identificado, este es el paso donde podría activarse o no una alarma.
  5. Este procedimiento se realiza fotograma a fotograma para tener una predicción constante del estado de fatiga de la persona.

ANÁLISIS DE RESULTADOS

Como se utilizó un modelo pre entrenado los resultados obtenidos por el detector facial y de los puntos de referencia del rostro son buenos.

Sin embargo, los resultados que obtuvimos en la detección del estado de fatiga son más bien fluctuantes. En ocasiones el sistema es poco sensible y no detecta estados con los ojos cerrados o, por el contrario, el sistema es pronto para indicar un estado posiblemente falso. Las razones que podrían causar este problema incluyen la calidad del video y el enfoque exclusivo en los ojos del conductor (cuando podrían tomarse en consideración otros factores como la boca).

CONCLUSIÓN

El proyecto ha desarrollado un sistema funcional capaz de detectar la fatiga en conductores de vehículos. La consistencia en estas detecciones no es buena así que se proponen algunas sugerencias: Aplicar operaciones de erosión y dilatación para reducir el ruido en la captura de video, implementar un sistema que detecte la proporción de abertura de la boca para aumentar la consistencia, y modificar los umbrales de detección para ajustarse a las necesidades de cada conductor.

INTEGRANTES

Carlos Claure –https://www.linkedin.com/in/carlos-manuel-claure-vargas-475226212

Raquel Calle –https://www.linkedin.com/in/raquel-veranda-calle-zapata-460226212

Liders Limpias –https://www.linkedin.com/in/limpiaslider/

Alejandro Carrasco. –https://www.linkedin.com/in/miguel-alejandro-carrasco-c%C3%A9spedes-785717215/

REFERENCIAS

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

Raquel Calle

WRITTEN BY

Raquel Calle

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.

DETECTAA-AI: Inteligencia Artificial en el diagnóstico presuntivo de trastornos del desarrollo en niños

Quito. 2021

Utilizamos la Inteligencia Artificial para ayudarnos a realizar el diagnóstico presuntivo de trastornos en niños en edad escolar.

Saturdays.AI es una iniciativa a nivel global, cuyo principio es promover escenarios para la democratización del aprendizaje de la Inteligencia Artificial para todos y de forma ubicua. Democratizar, significa facilitar el acceso a todos los ciudadanos que deseen alcanzar una formación pertinente, relevante y de calidad, en cualquiera de los niveles educativos o profesionales. Por ese motivo, el equipo de investigación y desarrollo, conformado por: {Andrea Mariana EscobarDanny AguirreLuis Chamba ErasMarco ChiluizaPaúl Quezada}, decidió participar en la Tercera Edición del Saturdays AI Quito, que de manera inédita, ubicua y flexible, se desarrolló de manera virtual.

En la primera sesión, se desarrolló la lluvia de ideas, con el objetivo de identificar la línea de investigación base, sobre el cual se desarrollaría el proyecto, sobre todo que tenga un impacto social y relacionado con los objetivos-metas de la Agenda 2030.

Originalmente se propuso el tema “Chatbot para la gestión de emociones de niños autistas”, obteniendo el primer árbol de problemas (Fig. 1), luego, se puso en marcha la estrategia de búsqueda de literatura que permita definir el alcance a la propuesta, se encontró 27 artículos científicos vinculados a esa línea base (ver Tabla 1).

Figura 1. Árbol de problemas inicial.

La literatura científica permitió conocer y comprender lo que se ha hecho y lo que se puede hacer en temas con el autismo, con ello se concluyó que el tema es muy amplio y con mucho futuro de trabajo para proyectos vinculados a la parte informática con un fin social. Además, se identificó que no existe un conjunto de datos de acceso libre que sirva como punto de partida para el tema planteado.

Otro punto clave, fue hacer búsquedas en grupos afines al tema del autismo, tanto en redes sociales como en la Web, con ello se observó que es un tema muy delicado y complejo, desde el punto de vista de los que conviven con el autismo, o los que no lo hacemos. Posiblemente es un tema que no ha tenido una visibilidad y democratización que permita, definir políticas para apoyar y educar a todos los que nos relacionamos con personas con autismo, sea de manera directa o indirecta. Con esto, se necesitó acudir con los profesionales o especialistas en campo, para despejar muchas dudas surgidas por la exploración preliminar, y con ello ver la viabilidad de la propuesta.

En el camino surgieron nuevas pistas, se encontró un conjunto de datos en Kaggle (https://www.kaggle.com/gpiosenka/autistic-children-data-set-traintestvalidate), relacionado con el autismo, que ha sido utilizado para construir algunos modelos que permiten por medio de la visión por computador predecir por medio de una fotografía si un niño tiene o no autismo. Con ello, cambió la perspectiva del proyecto, de pasar de las emociones (sin un conjunto de datos) al reconocimiento facial (con un conjunto de datos) en el mismo ámbito del autismo.

Para seguir en línea de conocer la opinión profesional sobre la propuesta, se realizó dos entrevistas, la primera con la especialista Amparito Morales, a la cual, se le presentó nuestra nueva idea, de que por medio de la tecnología se podía ayudar a mejorar en los diagnósticos en el área del autismo, inicialmente, se tuvo resistencia en el uso de la tecnología, pero eso fue bueno, porque permitió como equipo, convencer a la profesional de la utilidad real en escenario como en los grandes colegios o escuelas, en dónde el trabajo de los pocos especialistas (Departamento de Consejería Estudiantil (DECE)) puede ser apoyado por una herramienta que apoye en las tareas de automatización, en este caso, reconociendo cuáles de los niños por medio de una fotografía podría tener su atención prioritaria en la detección temprana del autismo.

De la primera entrevista surgió la segunda, con la reconocida investigadora Catalina López, pionera en el Ecuador por su enfoque senso-perceptivo para identificar los perfiles de autismo de acuerdo a la idiosincrasia de un país.

Actualmente, se encuentra terminando una herramienta de tamizaje orientado para niños y adolescentes de 4 a 17 años (características para alerta al diagnóstico clínico), además, durante la entrevista, Catalina López, validó la idea del proyecto, agregándole nuevas ideas vinculadas con las tecnologías, y que han surgido de sus investigaciones, como por ejemplo, realidad virtual para aplicar las herramientas de tamizaje, automatización de la herramienta de tamizaje considerando la protección de datos, privacidad, anonimato, confidencialidad, código de ética bajo principios mundiales, consentimiento informado, entre otros.

Finalmente, la investigadora propuso que un chatbot mediante la interacción sea por voz o texto, permitiría identificar patrones de comportamiento y el tema de emociones. Esta entrevista, fijó el trabajo o líneas futuras que se derivan del proyecto, centrándo el tema de reconocimiento fácil y una herramienta de tamizaje (Fig. 3), como el límite para la propuesta final del proyecto DETECTAA-AI, con la que se trabajó en el Saturdays AI.

Figura 2. Entrevista con Catalina López, Especialista en Perturbaciones de la Comunicación Humana de la Universidad Andina Simón Bolívar.
Figura 3. Lluvia de ideas del modelo inicial del proyecto DETECTAA-AI.


Contexto

Los trastornos del desarrollo, técnicamente conocidos como trastornos del neurodesarrollo, son trastornos con base neurológica que pueden afectar la adquisición, retención o aplicación de habilidades específicas o conjuntos de información. Consisten en alteraciones en la atención, la memoria, la percepción, el lenguaje, la resolución de problemas o la interacción social. Estos trastornos pueden ser leves y fácilmente abordables con intervenciones conductuales y educativas o más graves, de modo que los niños afectados requieran un apoyo educativo particular. Entre los trastornos del neurodesarrollo tenemos: trastorno de déficit de atención/hiperactividad, trastornos del espectro autista, dificultades del aprendizaje, como la dislexia y las deficiencias en otras áreas académicas, discapacidad intelectual, síndrome de Rett.

El autismo es un trastorno neurológico complejo que generalmente dura toda la vida. Es parte de un grupo de trastornos conocidos como trastornos del espectro autista (TEA). Actualmente se diagnostica con autismo a 1 de cada 68 individuos y a 1 de cada 42 niños varones, haciéndolo más común que los casos de cáncer, diabetes y SIDA pediátricos combinados. Se presenta en cualquier grupo racial, étnico y social, y es cuatro veces más frecuente en los niños que en las niñas. El autismo daña la capacidad de una persona para comunicarse y relacionarse con otros. También, está asociado con rutinas y comportamientos repetitivos, tales como arreglar objetos obsesivamente o seguir rutinas muy específicas. Los síntomas pueden oscilar desde leves hasta muy severos” [1].


El autismo en Ecuador

De acuerdo a la especialista Catalina López, se tiene los siguientes avances:

A nivel mundial se estima que el 1% puede estar dentro del TEA, según la Organización Mundial de la Salud, en 2018 se reportaron 1.521 en Ecuador, y aproximadamente un 13,75% se tiene diagnósticos erróneos.


¿Cuál es el problema?

El personal que labora en los departamentos de consejería estudiantil de las unidades educativas (DECE) debe realizar evaluaciones para determinar los alumnos que pudiesen presentar problemas de comportamiento. Debido a la gran cantidad de estudiantes asignados a cada profesional de estos departamentos, el proceso de evaluación consume la mayor cantidad de tiempo disponible por este personal, dejando muy pocos recursos para profundizar el diagnóstico y apoyo a los niños que realmente presentan trastornos del desarrollo. En la Fig. 4 se observa el árbol de problemas, que se lo obtuvo, previa lluvia de ideas, lectura de la literatura y luego de las entrevistas.

Figura 4. Árbol de problemas relacionados con el proyecto DETECTAA-AI.


¿Cómo lo pensamos resolver?

Se desarrollará una aplicación Web formada por dos componentes (Fig. 3).

El primer componente ayudará a predecir qué estudiantes pueden o no tener el TEA basado en una imagen fotográfica (tipo tamaño carné) por medio de visión por computador. Los rasgos que se determinen dependen de las bases de datos disponibles. En una primera fase se utilizará la base de datos disponible en Kaggle (https://www.kaggle.com/gpiosenka/autistic-children-data-set-traintestvalidate) para detección facial de TEA, considerando definir un proceso de entrenamiento del sistema que permita detectar nuevos factores de comportamiento a medida que se disponga de bases de imágenes adicionales.

Técnicamente, el tamizaje corresponde a la aplicación de un test o procedimiento a personas “asintomáticas”, con el objetivo de separarlos en dos grupos; aquellos que tienen una condición que podría beneficiarse de una intervención temprana; y aquellos que no.

El segundo componente realizará un tamizaje, usando el test MCHAT, y que sea la base para en el futuro implementar el procesamiento de lenguaje natural (chatbot de preguntas y respuestas).


¿Cómo se vincula el proyecto con los objetivos de desarrollo sustentables?

Se vincula con dos objetivos:

Primero, con el de Salud y bienestar (ODS 3), meta: reforzar la capacidad de todos los países, en particular los países en desarrollo, en materia de alerta temprana, reducción de riesgos y gestión de los riesgos para la salud nacional y mundial.

Segundo, con la Reducción de las desigualdades (ODS 10), meta: el avance en la reducción de la desigualdad, tanto dentro de los países como entre ellos, ha sido desigual. Todavía se debe dar más peso a la opinión de los países en desarrollo en los foros decisorios de las instituciones económicas y financieras internacionales. Además, si bien las remesas pueden ser un medio de supervivencia para las familias y las comunidades de los trabajadores migrantes internacionales en sus países de origen, el elevado costo de transferir dinero sigue reduciendo los beneficios.


¿Cuál es la hipótesis del proyecto?

El uso de la Inteligencia Artificial permitirá crear un prototipo que permita apoyar al diagnóstico presuntivo de trastornos del desarrollo en niños de edad escolar.


¿Cuál es la población objetivo?

  • Niños de 0 a 12 años
  • Padres, madres, cuidadores
  • Educadores
  • Especialistas de los DECE
  • Investigadores


¿Qué nos dice la literatura científica sobre proyectos relacionados con el reconocimiento facial?

La literatura científica que soporta nuestro proyecto se resume en la Tabla 2.


¿Qué es la visión por computador?

Es un campo de la Inteligencia Artificial enfocado a que las computadoras puedan extraer información a partir de imágenes, ofreciendo soluciones a problemas del mundo real (Fig. 5).

Figura 5. El reconocimiento facial puede ayudar a mejorar los diagnósticos, foto derecha, niño sin TEA, niño de la izquierda niño con TEA.


¿Qué áreas del conocimiento se vinculan?

  • Ciencias de la Salud (Salud Mental).
  • Ciencias de la Computación (Inteligencia Artificial, Visión por Computador).


Metodología

La metodología que se utilizó fue Desing Thinking, en la Fig. 6 se observa un resumen de cada una de las etapas desarrolladas.

Figura 6. Descripción de cada una de las etapas de la metodología de acuerdo con el proyecto DETECTAA-AI.

En la Fig. 7, se tiene un lienzo de trabajo proporcionado por https://www.analogolab.co/, para poner en marcha los principios de la metodología Desing Thinking. En este enlace Web, se observa el diseño completo del proyecto.

Figura 7. Idea general del proyecto, Mapeo de actores vinculados con el proyecto, definir los clientes o interesados en el proyecto, futuros beneficiarios, Declaración de la idea, Factores positivos, oportunidades, problemas y soluciones.


Resultados

Arquitectura

La arquitectura del proyecto está dividida en una aplicación de Frontend y una aplicación de Backend (ver Fig. 8). El Frontend, desarrollado con Flask (Framework de Python), contiene todas las interfaces con las cuales el usuario final interactúa. Esta, a su vez, se conecta mediante un endpoint al Backend. En el Backend se encuentra una API, desarrollada con Flask, que contiene un modelo de Deep Learning entrenado con librerías de TensorFlow y un conjunto de imágenes obtenidas desde Kaggle. El Frontend también interactúa con un modelo entrenado en Teachable Machine (una plataforma de Google para entrenar modelos de machine learning de forma rápida y fácil).

Figura 8. Arquitectura propuesta para DETECTAA-AI.


Enlaces Web a las API y a la aplicación de DETECTAA-AI:


Flujo de trabajo de DETECTAA-AI

Los resultados obtenidos para el primer caso (niño con TEA) son bastante favorables, ya que tanto los modelos como el cuestionario dan un porcentaje alto de detección de TEA en la persona evaluada, tal como se muestra en la Fig. 9.

Figura 9. Flujo de trabajo, caso 1.

Los resultados del segundo caso (niña sin TEA), presentan porcentajes aceptables en el diagnóstico de TEA. Tal como muestra la Fig. 10, los resultados obtenidos fueron: Teachable Machine: 100%, TensorFlow: 85.28% y M-Chat: Riesgo Bajo.

Figura 10. Flujo de trabajo, caso 2.

En el tercer caso (niño sin TEA) los resultados obtenidos de los modelos y M-chat reflejan resultados diferentes, ya que los modelos de machine learning devuelven diagnósticos acertados en cuanto a la prueba realizada, sin embargo, el M-chat retorna un Riesgo alto de tener un diagnóstico de TEA, como se muestra en la Fig. 11.

Figura 11. Flujo de trabajo, caso 3.


Conclusiones

Con el desarrollo del proyecto DETECTAA-AI se llegó a las siguientes conclusiones:

  • Es posible detectar indicios de TEA en las personas mediante el uso de modelos de inteligencia artificial.
  • Para que un modelo tenga una tasa de confiabilidad más alta, es necesario una mayor cantidad de imágenes de entrenamiento y mejor procesamiento de esa información.
  • Los algoritmos de inteligencia artificial sirven como un apoyo a los profesionales de la salud, más no como un reemplazo.
  • Es necesario un vínculo entre la academia, estado, empresas, gremios, sociedades, para que estas iniciativas se puedan poner en marcha de acuerdo al contexto Ecuatoriano.
  • Combinar la investigación científica a procesos profesionales, permite construir prototipos escalables en el tiempo.
  • El prototipo DETECTAA-AI, debe usarse con fines académicos y de investigación, como ejemplo de prueba de concepto, y no para ofrecerla como herramienta de diagnóstico final, ya que se necesita un equipo de profesionales que aporten en la detección del TEA.


Líneas futuras

  • Implementar la herramienta de tamizaje con NLP, de tipo de preguntas y respuestas, utilizando el cuestionario propuesto por la Dra. Catalina López en el contexto Ecuatoriano, considerando la privacidad, protección de datos, entre otros.
  • Obtener una base de datos propia de imágenes en el contexto de Ecuador, para realizar pruebas al prototipo DETECTAA-AI.
  • Es recomendable aumentar una tercera herramienta de detección de TEA por NLP, el cual permita detectar presencia de tea mediante el análisis de patrones en la voz de la persona que se requiera diagnosticar.
  • Concientizar a la población que la tecnología puede ser un apoyo muy importante en el contexto de la Salud.


Recursos del proyecto DETECTAA-AI


Referencias

[1] https://www.uasb.edu.ec/reconocimiento-a-la-directora-del-area-de-salud-catalina-lopez-id1550289/

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

Public domain.


WRITTEN BY

Luis Chamba-Eras

Profesor e investigador de la Universidad Nacional de Loja. Investigación en Inteligencia Artificial en Educación.

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.

Diagnósticos de X-Rays con Neumonía en Niños entre 0 a 5 años con Machine Learning

La Paz. Machine Learning. 2021

(La Paz 2021) Alrededor de todo el mundo, existe un problema bastante común en la mayoría de los hospitales y es que al existir diariamente, una cantidad bastante grande de personas que buscan atención médica, el sistema de atención tiende a colapsar y una gran cantidad de personas no llegan a recibir atención médica que puede llegar a ser urgente. Tenemos que tener en cuenta que la variedad de pacientes y la variedad de casos a tratar dentro de un hospital es enorme. Sin embargo, una de las enfermedades más importantes que hay que tratar de forma rápida tras su diagnóstico es la neumonía en niños de 0 a 5 años de edad. En el presente, el Machine Learning nos permite hacer un diagnóstico de neumonía automático y rápido.

La neumonía infantil es la enfermedad infecciosa que más muertes de niños ocasiona día a día en todo el mundo. En promedio, más de 800 000 niños menores de 5 años mueren de neumonía cada año, es decir que cada 39 segundos muere un niño a causa de la neumonía. Lo más impactante en esta situación es que según el artículo realizado por la UNICEF el 20 de enero de 2020, casi todas esas muertes son prevenibles. El número abismal de muertes infantiles a causa de la neumonía es debido a que esta enfermedad se puede transmitir a la hora de respirar partículas suspendidas en el aire.


Problemática:

Teniendo en cuenta la cantidad enorme de casos de neumonía en niños menores de 5 años, ¿cómo podemos implementar una Inteligencia Artificial para que el diagnóstico de la neumonía infantil sea más eficiente?


Objetivo:

El objetivo principal de este proyecto es desarrollar una Inteligencia Artificial capaz de analizar radiografías de infantes que tengan 3 años de edad o menos. De esta forma, todo infante que tenga radiografías de sus pulmones podrá ser diagnosticado en cuestión de segundos y podrá ser llevado a un área de atención en lugar de tener que pasar primero por un doctor general que deba hacer el diagnóstico si el infante tiene o no neumonía.


Datasets:

Se utilizó el dataset “Chest X-Ray Images (Pneumonia)” encontrado en la plataforma de Kaggle. Este dataset contiene 5 863 imágenes divididas en 2 categorías: train (89.4% del dataset total), test (10.6% del dataset total). Estas dos categorías serán utilizadas respectivamente para entrenar y testear nuestro modelo. Así mismo, es importante mencionar que cada categoría del dataset está dividida en dos partes, la primera está compuesta de radiografías de infantes sin pneumonia, esta división está denominada como: “NORMAL”

La segunda parte está denominada como: “PNEUMONIA” y es donde se encuentran las radiografías de los infantes que tienen neumonía:


Proceso de identificación de la neumonía:

Para poder realizar una buena identificación de neumonía hemos decidido utilizar el filtro un filtro de escala de grises que se encuentra en la librería de cv2. Este filtro nos permite resaltar las diferentes áreas importantes del cuerpo humano. De esta forma el análisis es más certero y el accuracy del modelo más alto. Así mismo es importante tener en cuenta que si no pasaramos las imágenes por un filtro sería peligroso ya que el modelo se basaría únicamente en la imágen original y no existiría ninguna opción para eliminar el ruido de la imágen.

En la imágen previa se puede apreciar como los pulmones se ven más resaltados aplicando el filtro ya mencionado.

Subsecuentemente se realizó una normalización a todos los píxeles de cada imagen para que todo valor vaya de 0 a 1.

Así mismo, hemos utilizado la librería de Keras para incluir DataAugmentation dentro de nuestro DataSet. Esta añadidura le permite a nuestro modelo aumentar levemente el accuracy ya obtenido con el filtro de la escala de grises ya que realiza rotaciones, zoom y mueve la imagen de forma horizontal y vertical.

Una vez añadido el filtro se analiza cada imágen y se busca una opacidad homogénea presente al nivel de los pulmones, este es el principal efecto de la neumonía.


Modelos:

El modelo que hemos implementado es el CNN (Convolutional Neural Network). En resumen es un tipo de Red neuronal artificial con un aprendizaje supervisado el cual puede identificar distintas características de entrada, por así decirlo, que en algunos casos no se puede intuir.

Las convoluciones consisten en tomar toda la imagen en pixeles y aplicar cada cierto número de píxeles un kernel (una matriz pequeña) el cual altera la imagen original dependiendo el kernel que estamos aplicando.


Resultados

  • Training & Validation Accuracy + Testing Accuracy & Loss
  • Matriz de confusión

Se intentó una implementación de la métrica de la matriz de confusion pero por un problema de versiones no se pudo obtener los datos buscados

  • Accuracy:
  • User tests:

Teniendo en cuenta que si la predicción se acerca a 1 significa que la imagen es la de pulmones sanos y si se acerca a 0 significa que la imagen corresponde a pulmones con síntomas de neumonía, las predicciones realizadas por nuestro modelo son correctas.


Conclusiones y Recomendaciones

En conclusión se pudo ver que:

  • Se recomienda utilizar los filtros grises para mejorar la calidad de las imágenes
  • Para que no sobrecargue la máquina virtual, si es que se la programa en colab, es necesario cambiar el tamaño de la imagen para que pueda leer todas las imágenes del dataset.
  • En el Data Augmentation implementado se recomienda que se aplique para mejorar el accuracy.
  • Se recomienda implementar la normalización para que la predicción sea más precisa.


Referencias:

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

http://acodigo.blogspot.com/2013/05/procesamiento-de-imagenes-en-opencv.htmlHow to Configure Image Data Augmentation in Keras – Machine Learning MasteryImage data augmentation is a technique that can be used to artificially expand the size of a training dataset by…machinelearningmastery.com

SyDoJa

Neumonía

“Diagnósticos de X-Rays con Neumonía en Niños entre 0 a 5 años con Machine Learning”

INTEGRANTES:

Dylan Chambi Frontanilla

Joseph Anthony Meneses Salguero

Samuel Matias Escobar Bejarano

CURSO:

Machine Learning

LA PAZ 10/09 — BOLIVIA-2021


¡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!