FindPet: Identificación de mascotas perdidas con Inteligencia Artificial

La Paz. Deep Learning. 2021

En este artículo utilizaremos técnicas de Inteligencia Artificial para encontrar mascotas perdidas. Aquellas personas que han perdido a una mascota por diferentes motivos saben que aunque muchas regresan a sus dueños un gran porcentaje no logra el reencuentro. Unas 420,000 mascotas, entre perros y gatos principalmente, se pierden anualmente en el Perú y son muy pocas las que son encontradas o devueltas a sus dueños, debido a que es muy difícil identificarlas.

La identificación de mascotas por lo general se hace a través de plaquitas metálicas colgadas en su cuello, con su nombre y el teléfono del propietario. Otros optan por insertarles un chip bajo la piel y algunos pocos, por lo costoso, prefieren los GPS e, incluso, tatuarlas. Ante la pérdida de sus mascotas, las personas optan por buscarlas mediante carteles pegados en postes, a través de redes sociales, anuncios en medios de comunicación u ofreciendo recompensas en dinero o con entradas a conciertos o partidos de fútbol. Es por ello, que el objetivo de este proyecto es poder ayudar a las personas a encontrar a sus mascotas perdidas mediante Inteligencia Artificial y Deep Learning para la identificación de sus mascotas de manera rápida, precisa y económica.


Problemática

Diariamente, se calcula que se extravían aproximadamente entre 30 y 40 animales domésticos, entre perros y gatos, solamente en Lima. Sin embargo, se estima que esta cifra puede ser mayor, no solo al contabilizar el resto de las ciudades de Perú, sino también porque muchas personas no saben cómo o dónde pueden reportar la pérdida o extravío de su mascota. Muy pocas mascotas son encontradas o retornadas con sus dueños, debido a que es difícil poder identificarlas y hacer el rastreo correcto. Como consecuencia de ello, muchas de las mascotas terminan como animales callejeros causando sobrepoblación que terminan contaminando la ciudad con sus heces y los parásitos que son expulsados a través de estas.


Objetivo

Desarrollar una aplicación que ayude a las personas a reportar y encontrar mascotas perdidas de manera rápida usando Inteligencia Artificial con técnicas de Deep Learning.


Datasets

Se utilizaron datasets existentes y de acceso libre, para la clasificación de razas se utilizaron los datasets de Stanford que contiene imágenes de 120 razas de perros de todo el mundo y Thudogs que contiene 130 razas de perros junto con los bounding boxes de todo el cuerpo y la cabeza del perro en cada imagen; mientras que para la identificación de mascotas se utilizó Flickr que contiene sólo los rostros del perro y está dividido por nombre del perro perteneciendo solo a dos tipos de raza: pugs y huskies.


Proceso de Identificación de Mascotas

El proceso de identificación de mascotas perdidas mediante Inteligencia Artificial consta de cuatro fases como se muestra en la siguiente figura, a continuación se detalla cada una de ellas.

  • FASE GRUESA: Clasificación de Razas

En esta fase, ingresa la imagen de un perro perdido o encontrado y se evalúa con el modelo de clasificación de razas y como output se obtiene el top N de razas a la que pertenece el perro, esto sirve como input para la fase media donde solo ingresarán las imágenes que se tenga en base de perros encontrados o perdidos que se tenga de estas “N” razas.

  • FASE MEDIA: Detección de Rostro

En esta fase, se tiene como input la imagen del perro encontrado y el resultado de la clasificación de esta imagen obteniendo las imágenes de top N de las razas, para ser evaluados por el modelo de detección de rostros, en este caso yolo v5, obteniendo como output los bounding boxes del rostro del perro para cada imagen.

  • FASE FINA: Identificación de la mascota

En esta fase, ingresa como input las imágenes del perro encontrado o perdido junto con las imágenes del top N ya recortadas el rostro utilizando los bounding boxes obtenidos de la fase media, para hacer el entrenamiento del modelo de identificación de rostro.

  • DECISIÓN SUPERVISADA

Finalmente, para hacer una decisión más precisa utilizamos decisión supervisada con parámetros como la edad y el género del perro, para poder acotar y tener más precisión para identificar al perro correcto.


Modelos

Para la construcción del modelo de clasificación de razas e identificación de mascotas se utilizó Redes Neuronales Convolucionales, específicamene Inception v3 y Xception, ya que que se trata de un problema de clasificación de imágenes con N posibles salidas, donde N es el número de razas o número de nombres de perros, en el caso del dataset de Stanford N tiene un valor de 120 , para Thudogs 130 y Flickr 42. Para la construcción del modelo de detección de rostro de la mascota se usó Yolo v5.

  • Inception v3

Inception-v3 es una arquitectura de red neuronal convolucional de la familia Inception que realiza varias mejoras, incluido el uso de Label Smoothing, convoluciones factorizadas 7 x 7 y el uso de un clasificador auxiliar para propagar información de etiquetas en la parte inferior de la red, junto con el uso de batch normalización para capas en la cabecera lateral.

A continuación, se muestra el diagrama de arquitectura de Inception v3:


  • Xception

Xception significa “xtreme inception”. Esta arquitectura replantea la forma en que vemos las redes neuronales, en particular las redes convolucionales. Y, como sugiere el nombre, lleva los principios de Inception al extremo.

En una red convolucional tradicional, las capas convolucionales buscan correlaciones tanto en el espacio como en la profundidad. En Inception, comenzamos a separar los dos ligeramente. Usamos convoluciones 1×1 para proyectar la entrada original en varios espacios de entrada más pequeños y separados, y de cada uno de esos espacios de entrada usamos un tipo diferente de filtro para transformar esos bloques de datos 3D más pequeños. Xception lleva esto un paso más allá. En lugar de dividir los datos de entrada en varios fragmentos comprimidos, asigna las correlaciones espaciales para cada canal de salida por separado y luego realiza una convolución en profundidad 1×1 para capturar la correlación entre canales.

A continuación, se presenta el diagrama de arquitectura de Xception, donde los datos pasan primero por el flujo de entrada, luego por el flujo medio que se repite ocho veces y finalmente por el flujo de salida. Tenga en cuenta que todas las capas de convolución y convolución separable van seguidas de la normalización por lotes.


  • Yolo v5

Yolo v5 es un modelo de detección de objetos, y su primera versión oficial fue lanzada por Ultralytics. Como YOLO v5 es un detector de objetos de una sola etapa, tiene tres partes importantes como cualquier otro detector de objetos de una sola etapa.

  • Model Backbone: se utiliza principalmente para extraer características importantes de la imagen de entrada dada. En YOLO v5, las CSP — Cross Stage Partial Networks se utilizan como backbone para extraer una gran cantidad de características informativas de una imagen de entrada.
  • Model Neck: se utiliza principalmente para generar pirámides de características. Las pirámides de características ayudan a los modelos a generalizarse bien en la escala de objetos. Ayuda a identificar el mismo objeto con diferentes tamaños y escalas. Las pirámides de características son muy útiles y ayudan a los modelos a funcionar bien con datos invisibles. Hay otros modelos que utilizan diferentes tipos de técnicas de pirámide de características como FPN, BiFPN, PANet, etc.
  • Model Head: se utiliza principalmente para realizar la parte de detección final. Aplicó anchor boxes en features y genera vectores de salida finales con probabilidades de clase, objectness scores, y bounding boxes.

A continuación se muestra el diagrama de arquitectura de Yolo v5:


Resultados

  • FASE GRUESA: Clasificación de Razas
  • FASE MEDIA: Detección de Rostro
  • FASE FINA: Identificación de la mascota


Conclusiones y Recomendaciones

  • En la fase gruesa de clasificación de razas, se concluye que el modelo más óptimo es Inception v3 con un accuracy de 83.35% usando el dataset de Stanford y 78.28% para el de Thudogs.
  • En la fase media de detección de rostros, se probó únicamente el modelo Yolo v5 obteniendo un MAP de 98.5%.
  • En la fase fina de identificación de rostros, se concluye que el modelo más óptimo es Xception con un accuracy de 67.5% para el dataset de Flickr una vez realizado el data augmentation.
  • El uso de modelos de deep learning en la identificación de mascotas perdidas disminuirá el tiempo de retorno de la mascota a su hogar, permitiendo hacer el rastreo correcto.
  • En la fase fina se recomienda probar GAN’s para data augmentation.
  • En la fase gruesa, se sugiere combinar los datasets de Stanford y Thudogs, y probar los modelos desarrollados.
  • En la fase gruesa, se recomienda crear un dataset propio para identificación.
  • En la fase media, se sugiere probar nuevos modelos adicionales a yolo v5.


Referencias

  • Dog Identification using Biometrics and Neural Networks

https://arxiv.org/pdf/2007.11986v1.pdf

  • Dog Breed Identification Using Deep Learning

https://www.researchgate.net/publication/328834665_Dog_Breed_Identification_Using_Deep_Learning

  • Yolo v5

Train Custom Data · ultralytics/yolov5 Wiki? This guide explains how to train your own custom dataset with YOLOv5 ?. UPDATED 25 July 2021. Clone this repo…github.com

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

WRITTEN BY

Mishel Carrion Lopez

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.

Detección Temprana de Incendios en Áreas Forestales con Inteligencia Artificial- Parte I

Quito. 2021

¿Sabes cuántas hectáreas se queman cada año por causa de incendios forestales? ¿Sabías que producto de esto muchas especies dejan su hábitat en busca de un nuevo hogar?¿Me creerías si te dijera que podemos utilizar la tecnología sobre todo la Inteligencia Artificial para disminuir el impacto de los incendios forestales? En este artículo, utilizaremos la Inteligencia Artificial para detectar de forma temprana incendios en áreas forestales.

Yoal igual que tú estaba un poco escéptico al inicio, pero déjame contarte cómo el ser humano puede ayudarse de la tecnología para frenar estos atentados contra la madre naturaleza. Por eso te invito a leer nuestra idea de cómo detectar incendios desde sus etapas muy tempranas para poder frenarlos y así evitar grandes desastres. ¿Te imaginas un mundo donde podamos minimizar este tipo de incendios forestales? Pues aquí colocamos casi todo lo que necesitas para llevar a cabo este proyecto y te conviertas en un defensor de la Pachamama.


Primero pasos

La idea del proyecto para detectar incendios forestales mediante Inteligencia Artificial comenzó una tarde en el taller que llevábamos en Saturday AI y con los compañeros: Luis Marcelo Viteri Aguilar, Danilo Josue Erazo Quinaluisa, Jonathan Alejandro Zambrano Mejía y Wilfredo Martel; decidimos hacer frente a esta problemática.


Idea General

La idea del proyecto de Detección Temprana de Incendios Forestales es utilizar la Inteligencia Artificial con ayuda de un Dron compuesto con un GPS y una cámara para que escaneen áreas forestales y en caso de detectar incendio envíen la alarma a un servidor principal que se encargará de notificar a los bomberos y comunidades aledañas informándoles con una foto del sector, la posición en un mapa y el porcentaje de estimación con la finalidad de evitar que se propague el incendio y arrase con la flora y fauna del sector.

Esquema del funcionamiento


Problemática

Enel 2020, más de 5.5 millones de hectáreas fueron devastadas por incendios forestales a nivel mundial teniendo un gran impacto sobre la flora y fauna salvaje que habitaba en esta área.

En Ecuador, en el mismo año se perdieron aproximadamente 23.462 hectáreas y debido a la estructura montañosa de los lugares es complicado para los bomberos llegar a tiempo. El fuego devastador devoró todo a sus alrededores y tuvieron que pasar en el mejor de los casos semanas para mitigar el incendio y en el peor de los casos meses.

Ante este alarmante problema con impacto social y ambiental se pensaron soluciones que ayuden a detectar a tiempo los incendios forestales, es entonces cómo surge la idea de fusionar la Inteligencia Artificial (de ahora en adelante I.A.) con un dron para la detección temprana de incendios en las áreas forestales de nuestro país. La idea consiste en entrenar un modelo de I.A. (detectar fuego en cualquier superficie) que interactúe con el dron el cual dispondrá de una cámara y un GPS, por lo tanto, en tiempo real se sabrá la posición del incendio y enviará una alarma a los bomberos para su mitigación.


Fase de Ejecución

Para llevar a cabo la ejecución de este grandioso prototipo, que desde ya se observa a la distancia los beneficios, se realizó en cinco fases:

  1. Fase de recolección de datos (dataset)
  2. Investigación previa de modelo Pre-entrenados de I.A.
  3. Reentrenamiento y Validación del modelo
  4. Deployment del modelo
  5. Desarrollo de un sitio Web para presentación del Prototipo

Antes de continuar se aclara que la fase de integración con el dron, el servidor, notificación a las comunidades y bomberos queda pendiente para la segunda parte de este artículo.


1. Fase de recolección de datos e Investigación de modelos para Clasificación de Imágenes

Esta fase se enfocó en la recolección de imágenes de incendios forestales ocasionados alrededor del mundo y en nuestro país. Se logró obtener un total de 250 MB de información la cual se empleará como entrada para el aprendizaje de nuestro modelo.

Una vez ya obtenido el dataset, como una tarea en paralelo se realizó una investigación de modelos de I.A. clasificadores de imágenes y el que escogimos debido a su efectividad fue Yolo v5. Esto a la vez significa que se tiene que realizar un proceso de anotación que consiste en dar las coordenadas del segmento a caracterizar dentro de una imagen.

En otras palabras, explicaremos lo que implica en nuestro dataset el utilizar Yolo v5:

1. Se debe anotar o indicar los segmentos a aprender dentro de la imagen. En nuestro caso son poner las coordenadas donde hay fuego y de esta manera la herramienta Yolo V5 pueda aprender y obtener patrones de diferenciación. Para saber más sobre el proceso de anotación de Yolo v5 se recomienda echar una lectura a este enlace para despejar sus dudas.

2. Para el proceso de anotación se utilizó una herramienta de mucha ayuda llamada HyperLabel que la encontramos en enlace.

3. Una vez que se obtuvo las anotaciones, que básicamente es un archivo xml que hace alusión a la imagen con sus coordenadas, se procede a generar un archivo para el formato de Yolo v5. Para este proceso se siguió el código github ai-coodiantor.

Con estos pasos ya ejecutados, se tiene preparado el entrenamiento personalizado con nuestro propio dataset.


2. Reentrenamiento y Validación del modelo

Para la parte de entrenamiento del modelo ya pre-entrenado se utilizó Google Colab Pro con GPU v100 y un tiempo estimado de 12 horas para su finalización. Al finalizar el proceso se obtuvo como resultado del entrenamiento un modelo de inferencia con extensión .pt. En nuestro caso, nuestro archivo fireModel.pt que servirá de insumo para inferir sobre imágenes de prueba. Antes de avanzar hay que aclarar que este modelo una vez que pase todas las pruebas, se pondrá en un dron mediante una placa Nvidia Jetson TX2 para su procesamiento en tiempo real, en donde cuando se detecte algún indicio de incendio forestal se proceda a enviar la alarma a instituciones tales como: Bomberos, Comunidades aledañas etc.

A continuación, en la Ilustración 2 se muestra el código que se utilizó para entrenar el modelo de detección de incendios.

Modelo de entrenamiento de Yolov5


3. Deployment del modelo

Una vez que se obtuvo el modelo fireModel.pt se procedió a realizar un pequeño aplicativo en Python utilizando Flask como servidor de aplicaciones. Es decir, en Flask se tendrá una API que recibirá la imagen a inferir y el modelo fireModel.pt nos retornará el resultado y la sección donde se ha detectado el incendio en la foto con su respectivo porcentaje de predicción. A continuación, en la Ilustración 3 se muestra el código que realiza la descripción previa.

app.py

Enlace del código.

A continuación, en la Ilustración 4 se muestra la prueba del modelo usando Postman.

Resultado de la Inferencia del modelo entrenado


4. Desarrollo de un sitio Web para presentación del Prototipo

Para nuestro prototipo se desarrolló una Landing Page que permite cargar una imagen la cual será enviada al servidor para su procesamiento para que una vez terminada la inferencia de la imagen, los resultados se envíen al cliente con las posiciones de donde se ha detectado el incendio y el porcentaje de predicción.

Las herramientas utilizadas para la página web son:

1. Angular 2+

2. Angular Material

Por otro lado, para pintar los resultados de la inferencia se utilizó canvas para posteriormente dibujar las coordenadas dentro de la imagen cargada. Vale la pena mencionar que, al momento de pintar las coordenadas debido a que las dimensiones no son las mismas se tuvo que adecuar de tal manera que todas tengan las mismas dimensiones. A continuación, en la Ilustración 5 se muestra el código.

Función de transformación de las coordenadas de yolo v5 al frontal

Finalmente, en la siguiente ilustración se muestra la Landing Page y los resultados del modelo.

Landing page para presentación del demoday
Inferencia del modelo sobre una imagen de prueba


5. Resultado del Entrenamiento

Los resultados obtenidos durante el entrenamiento son muy alentadores a pesar de haber trabajado con un dataset no tan grande. Se ha alcanzado un porcentaje de predicción del 71% lo cual es aceptable. Además, se tiene que las pruebas realizadas con imágenes con incendios forestales, se pudo detectar el incendio absolutamente en todas. Estas imágenes contenían incendios a la luz del sol, faltaría realizar pruebas con imágenes que contengan incendios forestales nocturnos.

Matriz de confusión

En la Figura 1, se muestra el desempeño de nuestro algoritmo con una predicción del 71% de acierto.

Matriz de confusión


Curva de Precisión de Recuperación (PR)

La curva PR se la utilizó para la evaluación de rendimiento de nuestro modelo. En la Figura se observa que el AP(Promedio de Precisión) es de 0.5, un nivel de precisión normal para empezar. Para conocimiento general, si este valor se acerque más a 1 será mucho mejor el nivel de precisión de nuestro modelo.

Curva PR del modelo tuneado


Conclusiones

  • Se requiere un mayor poder computacional para entrenar modelos que tardan más de 12 horas en terminar el proceso de aprendizaje y los mismos tengan un buen porcentaje de confianza en la predicción.
  • El modelo tiene un tiempo corto de respuesta para la inferencia y esto es útil una vez que esté montado en el dron para la vigilancia de los bosques.
  • Después de realizar varios experimentos con el modelo se ve un potencial enorme que se puede explotar para detección de incendios de todo tipo.

“Nunca se alcanza la verdad total, ni nunca se está totalmente alejado de ella”. Aristóteles (384 AC-322 AC)

Repositorio

En el siguiente repositorio se encuentra el código usado para desarrollar esa aplicación: https://github.com/SaturdaysAI/Projects/tree/master/Quito/2021/deteccion-temprana-de-incendios_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

Wilfredo Martel

I am a very curious and sometimes an intrepid person. I love learning and build new things.

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.

Clasificación de idiomas originarios de Bolivia con Machine Learning

La Paz. 2021

Usamos técnicas de Machine Learning para la clasificación de idiomas.

Bolivia lucha para que no desaparezcan los idiomas indígenas, sin embargo, es aún muy complicado acceder a recursos que ayuden la asimilación y aprendizaje de los mismos. Es por ello que planteamos crear una herramienta con Machine Learning para la clasificación de idiomas, que si bien es una tarea sencilla es elemental para realizar tareas más complejas como la traducción automática, el análisis de sentimientos, conversión de habla a texto, texto a habla, etc. Este modelo de clasificación se creó usando herramientas de NLP (procesamiento de lenguaje natural) y ML (aprendizaje automático), obteniendo una precisión superior al 99%.

Desde 2006 Bolivia es líder en la defensa y reivindicación de los pueblos y las culturas indígenas en su territorio y en el mundo.

“Hoy en día, las 36 lenguas originarias en Bolivia son idiomas oficiales. En Bolivia se tiene que hablar y enseñar inicialmente un idioma originario» [1].

Pero todo esté trabajo ¿realmente tiene resultados positivos en la asimilación y aprendizaje de las lenguas originarias en Bolivia?.


Descripción del problema

Si bien en nuestro país se lucha porque no desaparezcan estos idiomas indígenas es aún muy complicado acceder a recursos que ayuden la asimilación y aprendizaje de los mismos.
Sin embargo, actualmente se puede usar la tecnología como un aliado para solucionar este problema y la detección de idiomas es un punto inicial y primordial para crear herramientas de traducción automática de texto, de conversión de texto a voz, voz a texto, voz a voz, entre muchas otras aplicaciones.


Objetivo

Crear una herramienta con Machine Learning capaz de identificar y clasificar idiomas originarios de Bolivia, para agilizar tareas relacionadas como la traducción, recuperación de la información, etc.


Límites y alcances

LÍMITES: Debido a la dificultad de conseguir un conjunto de datos suficientemente grande de los idiomas más hablados en Bolivia (quechua, guaraní, aymara), solo nos centramos en el idioma quechua.

ALCANCES: La herramienta de identificación, en una primera etapa, será capaz de clasificar el idioma de frases ya sea como quechua o español.


Metodología

Para la clasificación de idiomas mediante Machine Learning se utilizó una metodología iterativa incremental, que conlleva las siguientes fases:

Figura 1. Metodología (Dataiku)


Captura de datos

Posterior a la creación del dataset nos dimos cuenta que éste estaba desbalanceado porque el número de frases en quechua duplicaban el de español, por esa razón decidimos balancear los datos agregando frases de español obtenidos de un dataset de Kaggle.

Figura 2. Captura de datos (Imagen extraída de un sitio web)


Pre-procesamiento

En esta etapa se realizaron diversas formas de pre-procesamiento, desde la ingeniería de características (feature engineering) hasta la vectorización. Las cuales se describen a continuación.

Limpieza de caracteres irrelevantes

Las frases en español de Kaggle tenían caracteres de otros idiomas e irrelevantes para la clasificación, es por ello que antes de unir con el dataset que se tenía se pasó a realizar una limpieza de todos esos caracteres de las frases de Kaggle. Una vez unido el dataset aún se tenían caracteres que no aportaban información como: dígitos, signos de puntuación, etc. y por tanto se realizó una limpieza de estos caracteres.

Técnicas implementadas

En base a la información del dataset se pudo notar que había un dato mal tabulado y se realizó la imputación de datos por valores nulos. Por otro lado, como el dataset cuenta con solo un feature y el target, no se tuvo la necesidad de reducir las dimensiones.

Análisis de los features

Cada idioma tiene sus propias reglas gramaticales y el idioma Quechua no es ajeno a eso, por ende se investigó las reglas de este idioma y se pudo notar ciertas características interesantes que lo diferencian de otros idiomas, por mencionar algunas:

  1. El alfabeto quechua cuenta con 28 consonantes (algunas consonantes son diferentes al de español como: ch’, chh, qh, p’) y 3 vocales (a, i, u)
  2. Las consonantes del quechua se clasifican según el modo de articulación, algunas de estas son:
  • Oclusivas (p, t, k, q)
  • Aspiradas (ph, th, chh, kh, qh)
  • Glotalizadas (p’, t’, ch’, k’, q’)
  • Semiconsonantes (w, y)

3. Para diferenciar el género de una persona se usan las palabras: warmi y qhari

4. La interrogación en el quechua se realiza agregando a la palabra el sufijo -chu.

Estas y muchas más características de la gramática Quechua, así como la gramática del Español fueron tomadas en cuenta para realizar las gráficas, las cuales nos permiten corroborar estas diferencias entre las reglas gramaticales en el dataset.

Uno de los gráficos que realizamos fue la frecuencia de las vocales por idioma en el dataset (Figura 3). La frecuencia de las vocales fueron calculadas según el número de caracteres de cada frase.

Figura 3. Frecuencia de vocales (Elaboración propia)

Otras gráficas que realizamos fueron la frecuencia de las consonantes como: K, H, M, R (Figura 4) y caracteres especiales como: á, é, í, ó, ú, ä, ü, ‘ (Figura 4), según el idioma.

Figura 4. Histograma de caracteres (Elaboración propia)

Estas gráficas nos permitieron aclarar algunas dudas sobre las diferencias gramaticales entre el idioma Español y Quechua, y representaron un punto clave para realizar el pre-procesamiento de los datos.

Por las diferencias de algunas letras y caracteres utilizados para cada idioma, además de ciertos sufijos o prefijos propios, numeración y demás características, decidimos vectorizar las frases según el modelo n-gram de caracteres. Para capturar características importantes en ambos idiomas delimitamos el modelo n-gram de 1 a 5, esto por temas de rendimiento y también porque consideramos que este número nos permite abstraer aquellas características gramaticales que citamos anteriormente.

Figura 5: Pre-procesamiento y vectorización de los features (Elaboración propia)

Además de vectorizar las frases según la frecuencia de caracteres únicos que tiene cada frase se aplicó la frecuencia TF-IDF, medida estadística que evalúa cuán relevante es un término para un documento en una colección. En este caso cada término es representado por cada carácter y el documento es representado por la frase del idioma en el dataset (colección de frases).


Selección y evaluación de modelos

Con los datos listos se procedió a construir los modelos de predicción. Se utilizaron modelos de clasificación debido a que tenemos un problema de clasificación binaria, sólo se tienen dos posibles etiquetas, “Quechua” y “Español”.

Por lo tanto, se utilizaron los siguientes algoritmos de aprendizaje supervisado:

  • Naive Bayes
  • Support vector Machine
  • Logistic regression

Para encontrar la mejor combinación de hiperparámetros se utilizo GridSearch de la biblioteca Sklearn.

Las matrices de confusión para los 3 modelos son:

Figura 6. Matrices de confusión, balanced accuracy y tiempo de ejecución de los 3 modelos (Elaboración propia)


Clasificación de nuevos datos

Una vez seleccionado nuestro mejor modelo, es necesario probarlo con algunas frases nunca antes vistas, por ello probamos frases que solo contienen palabras de un idioma, frases que contienen palabras de ambos idiomas que es usual en el habla coloquial de los quechua hablantes y por último una frase sin sentido. Nuestro modelo seleccionado se comporta bien con los dos primeros tipos de frases, sin embargo, al ingresar frases sin sentido que no pertenece ni al español o al quechua, estas frases son clasificadas directamente como quechua, esto se debe a que como manejamos un modelo binario el texto ingresado sea cual sea debe etiquetarlos con una etiqueta u otra.

Figura 7. Resultados del modelos (Elaboración propia)


Conclusión

En general, el modelo de Machine Learning para la clasificación de idiomas basado en Support Vector Machine ofrece el mejor resultado predictivo con una puntuación de precisión balanceada superior al 99%.

Específicamente, el modelo funciona bien para clasificar Español y Quechua dada la alta precisión, y puntajes f1 para estos dos idiomas.

Si bien la mejor precisión se obtuvo con SVM, considerando las variables precisión y rendimiento el mejor modelo sería el basado en Regresión Logística, ya que ofrece un tiempo de ejecución menor al de SVM y tiene una precisión superior al 99%, lo cual es un factor importante en aplicaciones en real time.

Se logró abstraer algunas características del idioma quechua, por lo que es posible realizar el mismo análisis con otros idiomas originarios de Bolivia


Trabajos futuros

Si bien este problema aparenta ser sencillo es un paso necesario para:

  • Traducción automática
  • Detección de idioma para el uso de boots
  • Análisis de sentimientos, etc.

El codigo fuente de este proyecto se puede encontrar en: github


Referencias

ONU – Bolivia, a la vanguardia en la protección y promoción de las lenguas indígenasSaturdays.AI


WRITTEN BY

EVELYN CUSI LOPEZ

Saturdays.AI

Repositorio

En el siguiente repositorio se encuentra el código usado para desarrollar esa aplicación: https://github.com/SaturdaysAI/Projects/tree/master/Lapaz/clasificacion-idiomas-machine-learning-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!

Detección de Fraude por Tarjeta de Crédito con Machine Learning

En este artículo mostraremos como llevar a cabo la detección de fraude por tarjeta de crédito con algoritmos de Machine Learning.

El fraude cibernético hace referencia a aquellas estafas que utilizan la red, para realizar transacciones ilícitas (Condusef, s.f). Dentro de este tipo de fraudes, el fraude con tarjetas de crédito está a la orden del día por la popularidad de las compras en línea. Bastan algunos datos de los usuarios para que un pirata informático pueda cometer el ilícito. El fraude con tarjeta de crédito, implica el uso no autorizado de la información de la tarjeta de crédito de una persona con el propósito de cargar compras en la cuenta de la víctima o extraer fondos de su cuenta (Cornell Law School, s.f). En otras palabras, es un tipo de robo de identidad.

En este escenario, la detección de fraude con Machine Learning para transacciones con tarjeta de crédito es de suma importancia. Actualmente se pierden grandes cantidades de dinero por este tipo de fraude, lo que representa un gran problema para las entidades financieras y para sus usuarios.

Frente a este tipo de situaciones, las empresas suelen reemplazar tarjetas, emprender investigaciones sobre los casos y ofrecer soporte telefónico a los clientes, lo que implica un gasto importante. Incluso con estas atenciones, se puede originar una mala reputación e imagen de la empresa, lo que eventualmente se refleja en una pérdida de clientes y de ingresos.

¿Cómo evitar o minimizar los costos por transacciones fraudulentas?

La inteligencia artificial provee de algoritmos de aprendizaje automático capaces de identificar patrones en las transacciones y detectar si determinada transacción es fraudulenta o no.


Descripción del proyecto

El objetivo general del proyecto es desarrollar un método de detección de fraude utilizando algoritmos de Machine Learning capaz de clasificar efectivamente entre transacciones legítimas y fraudulentas.

Imagen recuperada de: IEEE Innovation at work


Obtención de datos

Por razones de confidencialidad, las transacciones con tarjetas de crédito (reales) no se pueden compartir públicamente. Debido a la escasez de datos, se creará un simulador de datos de transacciones legítimas y fraudulentas.

Las características esenciales que resumen una transacción son: ID de transacción, fecha y hora de transacción, ID del cliente, ID del terminal, monto de la transacción y una etiqueta que muestra si la transacción es fraudulenta o no.

La simulación consta de cinco pasos:

1. Generación de perfiles de clientes: cada cliente es diferente en sus hábitos de gasto. Esto se simulará definiendo algunas propiedades para el cliente como su ubicación geográfica, su frecuencia de gasto y sus montos de gasto.

2. Generación de perfiles de terminal: aquí, la única propiedad que se tomará en cuenta es la ubicación geográfica.

3. Asociación de perfiles de clientes y terminales: se asume que los clientes solo realizan transacciones en terminales que se encuentran dentro de un radio r, de sus ubicaciones geográficas.

4. Generación de transacciones: el simulador recorrerá el conjunto de perfiles de clientes y generará transacciones según sus propiedades.

5. Generación de escenarios de fraude: se etiquetan las transacciones como legítimas o fraudulentas, utilizando los siguientes escenarios de fraude.

a. Escenario 1: cualquier transacción cuyo monto sea superior a 220 se etiqueta como fraudulenta. (Escenario no inspirado en la realidad, se elige el valor según la distribución que sigue la variable montos).

b. Escenario 2: todos los días se extrae al azar dos terminales. Todas las transacciones en estos terminales en los próximos 28 días serán etiquetadas como fraudulentas. (Phishing).

c. Escenario 3: todos los días se extrae al azar 3 clientes. En los próximos 14 días, 1/3 de sus transacciones tienen sus montos multiplicados por 5 y son etiquetadas como fraudulentas. (Fraude sin tarjeta presente).

Así, se tiene el siguiente conjunto de datos:

Este simulador generó 1 078 699 transacciones, de las cuales 8 590 (0.796 %) son fraudulentas. Se generan aproximadamente 12 000 transacciones por día, alrededor de 103 transacciones fraudulentas por día y cerca de 88 tarjetas fraudulentas por día.

El dataset presenta un desequilibrio, menos del 1% de transacciones son fraudulentas.

Los montos de transacción tienen una media de 53.69, con una desviación estándar de 42.13 y un monto máximo de 1 248.85.

La primera transacción se realizó el 01–05–2021 a las 00:01:02 horas y la última transacción se registró el 29–07–2021 a las 23:59:43 horas.


Preparación de datos

Para la detección de fraude los algoritmos de Machine Learning generalmente requieren características numéricas y ordenadas, es decir, el tipo de variable debe ser un número entero o real donde el orden de los valores es significativo.

En este dataset, las únicas características numéricas y ordenadas son el monto de transacción y la etiqueta de fraude. La fecha y hora es una marca de tiempo, por lo tanto, no es numérica. Los ID para las transacciones, los clientes y los terminales son numéricos, pero no ordenados. Entonces, se deben diseñar nuevas características a partir de las características mencionadas anteriormente.

La primera transformación consiste en generar dos nuevas características binarias, a partir de la fecha y hora, que caractericen períodos potencialmente relevantes.

1. Si una transacción ocurre durante un día laborable (0) o fin de semana (1).

2. Si una transacción ocurre durante el día o la noche. (La noche comprendida entre las 0 p.m. y las 6 a.m.)

La segunda transformación tiene que ver con el ID del cliente, se calcula dos características en 3 frecuencias. La primera característica es el número de transacciones que ocurren dentro de una frecuencia. La segunda característica es el monto promedio gastado en estas transacciones, en cada frecuencia. La frecuencia se establece en 1, 7 y 30 días. Esto genera 6 nuevas características.

Finalmente, la última transformación se realiza con el ID de terminal. El objetivo es extraer el número de transacciones en el terminal en cada frecuencia y una puntuación de riesgo, que evalúe la exposición de un terminal a transacciones fraudulentas. (El puntaje de riesgo se define como el número promedio de transacciones fraudulentas en un terminal durante un período de tiempo).


Entrenamiento del modelo

Una vez que se tiene el dataset listo, se particiona el dataset en datos de entrenamiento (60 %) para el desarrollo y datos de prueba (40 %) para validación del modelo.

Ya que se está trabajando con un problema de clasificación binaria, se utilizan los siguientes algoritmos: Naive Bayes, Regresión Logísitca, KNN, Decision Tree, Random Forest, XGBoost y AdaBoost.


Evaluación y validación del modelo

Después de entrenar los algoritmos, se evalúan los resultados con distintas métricas y se obtiene la siguiente información:

La métrica que mejor evalúa el rendimiento de los algoritmos, sin causar overfitting, es la ROC AUC Score. Esta métrica indica que el mejor modelo para la predicción de fraudes con tarjeta de crédito es el Decision Tree con una precisión del 83%.

Otra forma de verificar esto es utilizar la curva AUC-ROC, que indica cuánto es capaz el modelo de distinguir entre clases. ROC es una curva de probabilidad y AUC representa el grado o medida de separabilidad. El siguiente gráfico indica las curvas AUC-ROC para todos los algoritmos:

El área bajo la curva ROC es el mejor indicador global de la precisión de una prueba, para el Decision Tree el AUC score es de 0.836.

Los resultados del modelo se pueden expresar mediante una matriz de confusión:

Se puede observar que el modelo ha identificado:

  • 426 669 casos de verdaderos negativos, para transacciones NO fraudulentas y que el modelo predijo como NO fraudulentas.
  • 2 394 casos de verdaderos positivos, para transacciones fraudulentas y que el modelo predijo como fraudulentas.
  • 1 099 casos de falsos negativos, para transacciones fraudulentas y que el modelo predijo como NO fraudulentas.
  • 1 318 casos de falsos positivos, para transacciones NO fraudulentas y que el modelo predijo como fraudulentas.

Una curva de aprendizaje muestra la relación entre el puntaje de entrenamiento y el puntaje de prueba con validación cruzada para un estimador con un número variable de muestras de entrenamiento.

Esta curva muestra una alta variabilidad de la prueba (1.00) y una puntuación AUC ROC que converge en alrededor de 0.83.


Conclusiones

  • El mejor modelo de Machine Learning para la detección de fraude es el Decision Tree Classifier con una precisión del 83%.
  • Por la cantidad de datos de las transacciones, en la fase de entrenamiento es fundamental contar con poder computacional para experimentar con diferentes algoritmos y evaluar sus resultados en un tiempo razonable.
  • El método de detección de fraude por tarjeta de crédito desarrollado puede aplicarse de manera efectiva en instituciones financieras, sin embargo, es importante considerar otros escenarios de fraude para optimizar el modelo y no comprometer el poder de predicción.

Referencias

Barrios, J. (2019). La matriz de confusión y sus métricas. Recuperado de: https://bit.ly/3C3ibLE

Condusef (s.f). Tipos de fraude. Recuperado de: https://bit.ly/3kbcmpz

Cornell Law School (s.f). Fraude con Tarjeta de Crédito. Recuperado de: https://bit.ly/3lgOCQ2

Gebejes, A. & Khokhlova, A. (2021). Learning Curve Theory. Data of Learning. VALAMIS. Recuperado de: https://bit.ly/3lhipbp

Le Borgne, Y. & Bontempi, G. (2021). Machine Learning for Credit Card Fraud Detection — Practical Handbook. Université Libre de Bruxelles. Recuperado de: https://bit.ly/3k7tbBH

McKinney, T. (s.f). Fraud Detection in Python. Recuperado de: https://bit.ly/3lb40xiSaturdays.AI


WRITTEN BY

Martin Mercado

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!

Detección de terrenos en renovación con Inteligencia Artificial

La Paz. 2021

En este artículo, veremos cómo llevar a cabo la detección de terrenos con Inteligencia Artificial con el objetivo identificar los terrenos (lotes) disponibles para producción (en renovación). De esta manera pretendemos mejorar los costes y la eficiencia que se asocian a su detección y explotación.

Entendemos por loteo de terrenos el proceso de división del suelo, cualquiera sea el número de predios resultantes, cuyo proyecto contempla la apertura de nuevas vías públicas, y su correspondiente urbanización. No obstante, analizaremos los terrenos de cara a su producción agrícola.

Los datos son extraídos de la base de datos geográficos de monitoreo de producción de los cañeros de la zona norte de Santa Cruz. Todo esto se maneja en un CATASTRO.

Esta información geográfica tiene relaciona información tabulada:

Entonces se puede tener una visualización del estado de los lotes, si están en producción (con cobertura) o en renovación (sin cobertura) a través de los polígonos que limitan los lotes y las imágenes satelitales.

Son estas imágenes en diferentes épocas del año las que permiten analizar visualmente si los lotes están en renovación o no.


Descripción del problema:

La determinación de si un lote está o no en renovación es importante ya que es una variable a la hora de calcular la producción y rendimiento de las propiedades de cada cañero, y para ello se presentan los siguientes inconvenientes:

  • Las inspecciones de campo y a través de imágenes satelitales son morosas.
  • Susceptible a errores.
  • Demasiado tiempo invertido.


Objetivo:

Determinar si un lote de cultivo de caña está en renovación a través del cambio de cobertura a partir de los datos estadísticos de NDVI de los últimos 12 meses con Machine Learning.


Propuesta de solución.

Las imágenes satelitales pueden ser procesadas para obtener ciertos índices. El índice de interés para observar si un lote está en renovación se llama NDVI (Normalized Difference Vegetation Index):

Se puede observar los lotes con cobertura en color verde, y los que están sin cobertura en rojo, esto de los colores es solo simbología. Lo que en verdad se tiene con el NDVI es una matriz de píxeles:

Cada pixel tiene valores entre -1 y 1; siendo -1 suelos completamente descubiertos, y 1 suelos con cobertura vegetal.

Entonces, se puede obtener la estadística descriptiva de cada lote, y a través de su media y desviación estándar determinar si un lote está en renovación o no.

Como se puede apreciar, lotes con cobertura tiene una media cercana a 1 y una desviación estándar baja, y los que están sin cobertura una media cercana a 0 y también una desviación estándar baja, la desviación estándar es importante ya que determina que las uniforme son los valores de los píxeles en cada lote.


Ingeniería de características.

  • Se identificó como target el campo Variedad el cual se almacena la variedad sembrada en ese lote, pero si el lote está en renovación, tiene la etiqueta “Renovación”, también cambiamos de nombre de la columna a Renovación.
  • Convertimos el campo Renovación de categórico a booleano.
  • Unimos los 13 dataset (1 de catastro y 12 de los valores estadísticos del último año) en uno solo dataset para mejor uso.


Visualización de Datos

  • Cantidad de registros por Renovación.
  • Cantidad de registros por gestión.
  • Cantidad de registros por hectareaje.
  • Matriz de correlación.
  • Visualización del balanceo del target.


Reducción de dimensiones a través de PCA.

Se realizó la reducción de dimensiones a través de PCA a dos componentes principales, y se puede apreciar una diferencia entre los registros:


Entrenamiento de modelos

Se probaron tres tipos de modelos, también se implementó Cross Validation. Los resultados fueron los siguientes:

  • Regresión Logística
  • Random Forest
  • SVM


Elección del mejor modelo

En base a los resultados obtenidos, elegiremos ahora el modelo de Inteligencia Artificial más adecuado para la detección de terrenos en renovación:

Se observa que los 3 modelos seleccionados se aproximan a la misma probabilidad 0.93, sin embargo, SVM tiene un mejor score.

También se decidió aplicar la Curva de ROC, y dio el dio el siguiente resultando:

En este caso Random Forest es quien presenta mayor área bajo la curva, por lo tanto, SVM y Random Forest son los mejores modelos a considerar para la clasificación de lotes en renovación.

Autores del proyecto.

  • Bismark Socompi.
  • Ruth Paola Vedia
  • Cristian Vargas

Saturdays.AI


WRITTEN BY

Bismark Socompi Rodriguez

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!

Machine Learning aplicado a la compactación de suelo.

En este artículo, utilizaremos técnicas de Machine Learning para optimizar la compactación del suelo.

El suelo es un material compuesto por una parte sólida, líquida y gaseosa, que se formó durante cientos de millones de años de meteorización y sedimentación. Entendemos por compactación el eliminar la mayor cantidad de masa gaseosa (comúnmente aire) del suelo mediante carga.

La curva de compactación consiste en una curva que se construye después de marcar los puntos pares de densidad seca y la humedad de la muestra. Con un mínimo de 5 puntos se traza a mano una curva que pueda correlacionar todos estos puntos y se obtienen la densidad seca máxima y la humedad óptima a la que se puede compactar este suelo.

Estos parámetros son linealmente independientes y no existe una relación entre el ensayo de compactación y la clasificación de suelos, por lo que se realizan dos ensayos diferentes para la obtención del mismo.


Descripción del problema

Para cada kilómetro de carretera se requieren 5 pozos de ensayo de los cuales es requisito presentar dos ensayos:

  • Clasificación de suelos
  • Compactación

En la práctica, debido a los recursos económicos y la logística que representa solo se realizan 5 ensayos de clasificación y 2 de compactación y los resultados se interpolan.


Objetivo

Determinar usando técnicas de Machine Learning una correlación entre la clasificación de suelos y la compactación de suelos, refiriéndose al valor de densidad seca máxima y humedad óptima, para calcular la humedad a la que se compactará un determinado tramo de carretera.


Selección del modelo

Debido a que se conoce el resultado y el problema es numérico, los modelos que se usaron fueron:

  • Regresión lineal
  • Regresión multi-lineal
  • Regresión polinómica


Técnicas implementadas


Reducción de dimensiones

Se redujeron todas las columnas que no aportan una información relevante: ‘Pozo’, ‘Lado’, ‘Prf o (m)’, ‘Prf f (m)’, ‘% Hum’, ‘ST >3’, ‘3’, ‘AASTHO’, ‘#’, ‘SUCS’, ‘100%’, ‘97%’, ‘95%’, ‘100%.1’, ‘97%.1’, ‘95%.1’


Valores faltantes

En la columna de LL se encontró que faltaban 30 datos, se utilizó un histograma y se determinó que la curva normal que describe a sus datos estaba desfasada del medio, por lo que se rellenó los datos faltantes con la mediana, que es 32.2


Gráficas

Se realizaron todas las gráficas necesarias para entender e interpretar el problema.

Relación lineal (con sklearn)

Relación polinómica de 2do grado (con numpy)

Relación polinómica de 3er grado (con numpy)

Relación multi-lineal (con sklearn)

Relación multi-lineal (con sns) donde se relacionan los 14 parámetros entre sí y su relación con la Humedad óptima.


Evaluación del modelo


D max vs H opt

Regresión lineal:

Regresión polinómica de 2do grado:

Regresión polinómica de 3er grado:


Feature vs H opt

Regresión lineal:


Análisis de resultados


D max vs H opt

Se puede observar que es la regresión polinómica la que tiene un coeficiente de correlación más cercano a 1 y en gráfica la que mejor se ajusta por lo que será la regresión adoptada


Feature vs H opt

Se puede observar un valor de coeficiente de correlación cercano a 1 y en las gráficas de sns la gran mayoría son relaciones lineales por lo que se acepta el modelo multi-lineal conseguido.


Conclusión

Se determinó una correlación entre la clasificación de suelos y la compactación de suelos, para calcular la humedad a la que se compactará un determinado tramo de carretera:

H opt = 0.117*(LL) + 0.0212*(LP) — 0.007*(2) + 0.010*(1 ½) — 0.004*(1) — 0.001*(¾) + 0.017*(⅜) — 0.001*(no 4) — 0.052*(no 10) +
+ 0.054*(no 40) + 0.036*(no 200) — 0.043*(% Grava) + 0.007*(% Arena) + 0.036*(% Finos) + 3.779

D max = 4.110*10^(-4)*(H opt)² — 4.256*10^(-2)*(H opt) + 2.394

WRITTEN BY

Mauricio Ramirez Salamanca

Follow

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!

Predicción de fallas futuras en motores de turboventiladores con Machine Learning

La Paz. 2021

Aplicamos Machine Learning (un tipo de red neuronal recurrente (RNN) llamado LSTM (Long short-term memory)) para realizar una predicción de fallas en motores y ayudar así a reducir uno de los mayores problemas a nivel industrial, como es el mantenimiento correctivo (debido a sus elevados costes tanto de reparación como de producción). Por otra parte el mantenimiento preventivo está planificado por medio de una agenda para realizar un paro programado, donde no interesa si el equipo aún puede trabajar o si sus piezas siguen bien; se realiza el mantenimiento porque así fue programado.

Es por ello que, con el pasar de los años la tecnología permite que podamos invertir en nuevas soluciones que nos permita saber cuándo fallará un equipo, esto es llamado mantenimiento predictivo (PdM). Que actualmente, por medio de diferentes sensores podemos tener un dataset completo de muchas variables, como ser: vibración, temperatura, análisis de aceites o grasas, etc.

Fig. 1. Diferencia de ganancia por producción entre el mantenimiento preventivo tradicional y el mantenimiento predictivo, donde solamente se detiene la producción basado en condiciones.


DESCRIPCIÓN DEL PROBLEMA

El problema es el tiempo y los recursos económicos invertidos para poder solventar una falla de mantenimiento correctivo en el menor tiempo posible. A la vez que un mantenimiento preventivo podría optimizarse al hacerlo en base a condiciones de los equipos. Ambos ocupan tiempo en su mantenimiento y también en la producción del producto.


DATASET

Los datasets utilizados, son de la degradación de motores de turbo-ventiladores de la NASA generados por C-MAPSS, lo cual es aplicable a cualquier otra máquina rotativa, como ser: motores de transportes industriales, bombas hidraulicas, etc.

Fig. 2. Imagen del turboventilador simulado por C-MAPSS.
Tabla 1. Detalle de las columnas de los datasets de prueba y entrenamiento.


SOLUCIÓN PROPUESTA

Por tal motivo el proyecto ayudará a estimar el tiempo en el cual unos turboventiladores llegarán a fallar. Dando el tiempo suficiente para poder programar una parada de mantenimiento y buscar los repuestos necesarios al mejor precio.


SELECCIÓN DEL MODELO

Para la detección de fallas en motores veremos los siguientes modelos de Machine Learning:


RNN

Son un tipo de red neuronal recurrente (RNN) y estas tienen conexiones recurrentes entre estados ocultos, con un retraso de tiempo. Idealmente, las RNN son capaces de descubrir correlaciones temporales entre los eventos secuenciales que están muy lejos unos de otros

Fig. 3. Arquitectura de una Red neuronal recurrente (RNN)
Fig. 4. Arquitectura de una Long Short-Term Memory (LSTM)


LSTM

Sin embargo, en la práctica, es difícil entrenar RNN debido al Vanishing Gradient y los problemas de Exploding Gradient. Por lo que las RNN se enfrentan a dificultades para manejar dependencias en secuencias de largo plazo. Por lo que, el modelo basado en RNN más efectivo se llama LSTM. De manera resumida, su estructura consiste en celdas de memoria. La cual su principal función es la de almacenar un valor y determinar el tiempo que debe almacenarse. Además, estas celdas seleccionan qué entradas se almacenan y también deciden si estas serán recordadas, eliminadas o si serán enviadas como salida de una red.

Fig. 5. Programación de la RNN con LSTM

La red tiene dos capas de LSTM, la primera de 100 unidades y la segunda de 50 unidades. A la salida de cada una se tiene un DropOut para evitar el overfitting, y finalmente se tiene la Dense, que es activada por una sigmoid, que nos da la probabilidad final.


PCA

El análisis de componentes principales (PCA) es uno de los algoritmos de machine learning no supervisados más utilizados. Para la reducción de dimensiones y el pre procesamiento de datos.

Fig. 6. PCA aplicado a tres dimensiones para poder graficarlo.
Fig. 7. Datos del dataset completo, con los 21 sensores, y las 3 configuraciones de los usuarios.
Fig. 7. Datos del dataset con PCA aplicado. Se reducen a 8 componentes principales.


MÉTRICAS

A continuación se observarán las métricas analizadas. Donde podemos observar que el accuracy es del 95.11%, y que las F1-Score son muy buenas, la que menor valor tiene es la macro. Además que comparando los datos predecidos con los de prueba, tenemos un accuracy del 97%.

Fig. 8. Métricas calculadas: Accuracy Score, F1-Score Macro, F1-Score Micro, F1-Score Weighted.


ANÁLISIS DE RESULTADOS

Los resultados que analizamos son la matriz de confusión, que nos muestra que su accuracy es del 92.77%, y por otra parte la ROC Curve, donde podemos observar un buen umbral de discriminación del modelo.

Fig. 9. Matriz de Confusión
Fig. 10. ROC CURVE


RESULTADO

Por ende, podemos predecir la probabilidad con la que llegaría a fallar el motor del turbo ventilador en 30 días. Escogiendo el ID de la máquina, tendríamos el siguiente resultado; donde podemos ver que la probabilidad en la que el Motor 16 falle, es del 1.8%, por lo que podemos seguir usando este motor de manera tranquila.

Lo ideal es que este análisis se lo haga de manera periódica, al ser implementado. Debido a que da un buen sondeo del estado de las máquinas a los supervisores de mantenimiento para ir planificando lo más crítico en la siguiente parada.

Fig. 11. Pantalla final, donde el programa nos dice la probabilidad que tiene el motor seleccionado de fallar dentro de 30 días.


CONCLUSIÓN

Por medio de esta aplicación de Machine Learning podemos determinar el tiempo de fallas en motores rotativos, gracias al análisis de datos de dicho equipo. Por ende, se tiene el tiempo suficiente para comprar repuestos y planificar un mantenimiento programado, mitigando los costes de mantenimiento de la empresa.

La precisión del modelo implementado es del 95%, por lo que llega a ser fiable a la hora de analizar las máquinas. Este programa puede ser implementado en multiples plantas industriales, y por medio de Internet Of Things, podemos ir recabando información de todos los sensores necesarios, los cuales serán registrados en la nube para su posterior análisis.

Implementando este tipo de tecnología también llega a repercutir en el area medio ambiental, ya que se cambiarían menos repuestos industrial o maximizar el uso de aceites o grasas de acuerdo a su degradación; se traduce en menos basura industrial para el medio ambiente.


CÓDIGO

https://github.com/albmarale/SaturdaysAIMachineLearning/blob/main/detecci-n-de-fallas-futuras-en-motores-de-turboven.ipynb


BIBLIOGRAFÍA

[1] D. Bruneo and F. De Vita, “On the use of LSTM networks for predictive maintenance in smart industries,” in Proceedings — 2019 IEEE International Conference on Smart Computing, SMARTCOMP 2019, 2019, pp. 241–248, doi: 10.1109/SMARTCOMP.2019.00059.

[2] S. Guldamlasioglu, O. Aydin, and D. Scientist, “Using LSTM networks to predict engine condition on large scale data processing framework,” 2017, doi: 10.1109/ICEEE2.2017.7935834.

[3] L. Swanson, “Linking maintenance strategies to performance,” Int. J. Prod. Econ., vol. 70, no. 3, pp. 237–244, Apr. 2001, doi: 10.1016/S0925–5273(00)00067–0

[4] A. Martínez, “Redes Neuronales Recurrentes con LSTM aplicado al Mantenimiento Predictivo, Caso: Degradación de motores de turboventiladores”, 2020, Universidad Católica Boliviana “San Pablo”.

Repositorio

En el siguiente repositorio se encuentra el código usado para desarrollar esta aplicación:https://github.com/SaturdaysAI/Projects/tree/master/Lapaz/detecci-n-de-fallas-futuras-en-motores-de-turboven-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!

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!

MOODY.AI

Guadalajara. Tercera Edición. 2021

Nuesta experiencia Saturday.AI

Logo del equipo

Integrantes:

Introducción

Problemática

Dataset

Modelo

moodyNet: red convolucional tipo VGG-16

Resultados

Función de perdida y de precisión a través de las épocas

Conclusiones

Proyección a futuro

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/Guadalajara/March2021/EmotionsDetector-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 para el bien (#ai4good). Los talleres que realizamos forman parte del programa AI 4 Schools para que cualquier persona “aprenda haciendo” IA sin importar su especialidad o nivel de partida.

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 este link o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

WRITTEN BY

WRITTEN BY
WRITTEN BY