Desarrollo de software con inteligencia artificial

29/01/2020


Modelizame es una empresa que nace con la intención de dar soluciones software para la automatización de procesos industriales utilizando inteligencia artificial. Muchos procesos industriales cuentan con tareas que se realizan de manera manual y son susceptibles de ser automatizadas.

La realización manual de estas tareas supone una desventaja frente a su automatización. En primer lugar, se debe tener en cuenta que los operarios se cansan, por lo que es necesaria la incorporación de turnos de trabajo, elevando el coste operacional. Si bien la automatización supone un desembolso inicial importante, una vez establecido el proceso automático los costes serán menores que los derivados de labores manuales. Además, el tiempo de respuesta de un operario puede ser menos fiable que el de una máquina. Si se necesita un tiempo de respuesta determinado, la automatización puede proporcionar una solución adecuada, ya que los tiempos de respuesta pueden ser ajustados y caracterizados de antemano. De esta manera, la automatización no solo puede llegar a proporcionar una respuesta más rápida, sino que dichos tiempos de respuesta están perfectamente acotados. Por otra parte, los operarios pueden sufrir distracciones, como consultar el teléfono móvil en el puesto de trabajo, lo que reduce su rendimiento. Esto también se puede compensar mediante automatización, ya que un proceso automático no sufre distracciones pudiendo, en muchos casos, incluso llegar a incorporar técnicas de mantenimiento preventivo para reducir las paradas indeseadas. Es, por todos estos motivos, que la automatización utilizando inteligencia artificial supone uno de los elementos centrales de la industria 4.0.

Automatización tradicional

Tradicionalmente, los procesos manuales que involucran un análisis visual se han tratado de automatizar utilizando técnicas clásicas de visión artificial industrial como umbralización, detección de bordes, o descriptores de imagen. La umbralización ofrece una manera sencilla de detectar objetos que presentan un contraste alto con respecto al fondo, sin embargo, no es una técnica adecuada cuando este contraste es altamente variable. En el caso de querer detectar piezas que presentan diferentes grados de reflectividad, cabe la posibilidad de que algunas piezas presenten un contraste tan bajo con respecto al fondo que no se diferencien simplemente utilizando un umbral global de intensidad.

Por otra parte, la detección de bordes permite identificar las zonas de la imagen donde existe una transición de color. Esta técnica es, en muchas ocasiones, un precursor de técnicas más elaboradas como la detección de formas geométricas. En caso de querer detectar círculos, primero se detectan los bordes de la imagen, y a continuación se buscan aquellos círculos que tienen más coincidencia con los bordes encontrados. Este proceso suele seguir una definición paramétrica de la figura que se desea encontrar, lo cual no suele ser efectivo cuando tratamos de analizar objetos con formas complejas.

Explicación de machine learning en español sencillo Figura 1. Explicación de machine learning en español sencillo.

Finalmente, los descriptores de imagen ofrecen una manera de traducir información no estructurada, como la intensidad de cada pixel, a información estructurada, como un vector de características en el que cada número del vector representa un dato concreto. Estos números suelen proporcionar información como la rugosidad de la imagen, brillo medio, magnitud y orientación de los bordes, etc. Además, si combinamos estos descriptores de imagen con un algoritmo de clasificación como random forest, conseguimos un método automático de análisis de imagen que no depende de definiciones paramétricas del objeto que se quiere analizar. Aún así, el proceso de buscar los descriptores de imagen, y algoritmos de clasificación más efectivos para un problema determinado, es un proceso manual que involucra muchas iteraciones de prueba y error hasta dar con una solución aceptable. En muchas ocasiones, pese a dedicar mucho esfuerzo a conseguir una buena combinación de descriptores y algoritmos de clasificación, la tasa de error que alcanza esta metodología suele estar por encima de la deseable, sobre todo cuando la tipología de imágenes adquiridas no está demasiado acotada.

Deep learning revoluciona la inteligencia artificial

Afortunadamente, a partir de 2012 se empezó a popularizar una nueva tecnología emergente de análisis de datos que no requiere el uso de descriptores de imagen, y alcanza un rendimiento superior que los métodos de clasificación automática tradicionales. Esta técnica de análisis se conoce como deep learning, una rama del machine learning ilustrado en la Figura 1 que usa la convolución como unidad fundamental para procesar datos no estructurados. De esta manera, se pasa de hacer ingeniería de descriptores de imagen, a ingeniería de arquitecturas de redes convolucionales que sean capaces de identificar la información necesaria en los datos tratados. Pese a su actual popularidad, se han tenido que juntar tres pilares fundamentales para que el deep learning llegase a su estado actual. Uno de esos pilares es la abundancia de datos etiquetados. El deep learning es un método supervisado de análisis, lo que quiere decir que antes de usar el método de análisis automático, es necesario su entrenamiento con gran cantidad de datos etiquetados. Estos datos etiquetados normalmente se adquieren y anotan de forma manual, lo que los convierte en un bien preciado. Sin embargo, diferentes conjuntos de datos como Imagenet, o Cityscapes han propiciado el entrenamiento de redes convolucionales modernas. El segundo pilar fundamental para la popularización del deep learning ha sido la adopción masiva de hardware de consumo capaz de realizar computación paralela de alto rendimiento. El entrenamiento de una red convolucional consiste en aprender los valores de cada filtro de convolución que procesa los datos de entrada. Éste es un proceso iterativo en el que cada iteración consiste en pasar datos por la red convolucional, comparar la salida obtenida con la salida deseada, y modificar los valores de los filtros convolucionales para que la próxima iteración genere una salida más parecida a la deseada. Para alcanzar un resultado satisfactorio, el proceso de entrenamiento realizará millones de cambios en la red, por lo que el entrenamiento de deep learning solo es viable si contamos con tarjetas gráficas (GPUs) capaces de realizar esos cálculos rápidamente. El tercer pilar ha sido la evolución en los algoritmos de clasificación. Las redes neuronales tradicionales, como el perceptrón multicapa, simplemente incorporan conexiones entre neuronas, y funciones de activación no lineales. Sin embargo, estas redes han ido evolucionando e incorporando operaciones más complejas como la convolución, y el remuestreo que son capaces de extraer características de manera automática, mejorando así la efectividad de estos clasificadores.

Deep learning permite detectar la presencia de perros o gatos en esta foto Figura 2. Deep learning permite detectar la presencia de perros o gatos en esta foto.

Dos ejemplos paradigmáticos que se pueden resolver con deep learning son la clasificación y la segmentación de imágenes. La clasificación de imagen utilizando inteligencia artificial consiste en que el algoritmo asigne, de manera totalmente automática, una etiqueta categórica a la imagen que analiza. Esta etiqueta puede ser algo tan común como “perro”, o “gato” para indicar la presencia de un perro o un gato en imágenes como la Figura 2, pero también se puede utilizar para indicar la presencia de una enfermedad, o indicar que una pieza fabricada está defectuosa. A la hora de realizar el entrenamiento, se necesita un conjunto de imágenes acompañadas por sus respectivas etiquetas, estas etiquetas se convertirán a una representación numérica y serán utilizadas para aprender los valores de los filtros de convolución. Por otra parte, la segmentación de imagen consiste en asignar, automáticamente, una etiqueta a cada pixel de la imagen. Es una tarea similar a la clasificación, en cuanto a que es un proceso de asignación de etiquetas, sin embargo en esta ocasión se calcula una etiqueta por pixel en lugar de una etiqueta global por imagen. Su utilidad reside en la capacidad de delimitar zonas de interés, estas zonas podrían representar lesiones provocadas por una enfermedad, defectos en una pieza, o el área de una imagen que ocupa una persona. En este caso, el entrenamiento es similar al de algoritmos de clasificación, con la diferencia de que ahora los datos anotados necesitan una etiqueta para cada pixel. Lamentablemente, estos datos anotados suelen ser más difíciles de conseguir, ya que el proceso de crear una etiqueta para cada pixel suele ser más laborioso que el de asignar simplemente una etiqueta por imagen. Pese a la dificultad de la creación de datos de entrenamiento, muchos problemas requieren del uso de algoritmos de segmentación, por lo que será necesario construir dicho conjunto de datos.

La empresa

En Modelizame utilizamos estas técnicas para automatizar el análisis de datos. La empresa se fundó en Madrid por dos doctores en tecnologías de la información y las comunicaciones con amplia experiencia en el desarrollo de aplicaciones de inteligencia artificial. Gran parte de su investigación doctoral se basó en el uso de deep learning para automatizar tareas tediosas como el análisis del cariotipo utilizando imágenes multiespectrales [1], detección de pupila (eye tracking) en entornos realistas [2], detección de fases sísmicas (picado de fases) [3], o traducción de modalidades de imagen médica (resonancia a tomografía) [4]. Debido al exitoso desarrollo de software de inteligencia artificial para el tratamiento de problemas reales, ha contado desde el principio con la confianza de empresas de renombre como Bosch, o laboratorios VIR.

Resultado de una prueba de impresión con más de 6000 códigos Data Matrix impresos y verificados correctamente Figura 3. Resultado de una prueba de impresión con más de 6000 códigos Data Matrix impresos y verificados correctamente.

Uno de los proyectos iniciales de Modelizame es la automatización del control de calidad en la fabricación de piezas de automóvil. Este proyecto consiste en capturar imágenes de piezas al finalizar la cadena de ensamblaje, con la finalidad de comprobar la existencia de posibles defectos de fabricación. Para ello se utiliza Keras y TensorFlow para definir una arquitectura capaz de procesar las imágenes adquiridas. Una vez definida la arquitectura, el siguiente paso es entrenar la red convolucional con cientos de imágenes de piezas que presentan defectos de fabricación, y piezas fabricadas correctamente. Finalmente, se exporta el modelo entrenado en Python, a un formato reutilizable desde otros lenguajes de programación. Este modelo se lee desde una DLL, desarrollada en C++ para facilitar su integración, que se puede invocar desde el módulo principal de producción. De esta manera, no solo se desarrolla una solución capaz de detectar piezas defectuosas, sino que se hace un despliegue que posibilita su uso en la fábrica.

Otro de nuestros proyectos iniciales es la gestión y control de calidad de la impresión de códigos datamatrix en medicamentos, requisito indispensable para adherirse al sistema español de verificación de medicamentos (SEVeM). Este proyecto consiste en el desarrollo de un controlador de impresión para una impresora industrial de Markem Imaje, el desarrollo de software para el control de calidad de etiquetas con el DSP de una cámara industrial Cognex In Sight, y la creación de software que permita gestionar la impresión de etiquetas utilizando una interfaz web desarrollada con React. Si bien en el proyecto anterior se había exportado una DLL para integrar la solución, en este caso la integración se ha hecho íntegramente utilizando sockets. Por una parte, la comunicación con la cámara y la impresora se realiza directamente con paquetes TCP/IP, mientras que la interfaz de usuario consume un servicio REST que escucha peticiones web. Uno de los resultados de este proyecto se puede ver en la Figura 3, donde se muestra un lote de cajas impresas y verificadas correctamente.

Conclusión

En este post hemos explicado que se puede conseguir con deep learning, y hemos dado a conocer los dos proyectos iniciales de Modelizame. Esperamos que haya sido de vuestro agrado, y no dudéis en contactar con nosotros pulsando el botón "Contacto".

Referencias

[1] Pardo, Esteban, José Mário T. Morgado, and Norberto Malpica. "Semantic segmentation of mFISH images using convolutional networks." Cytometry Part A 93, no. 6 (2018): 620-627.

[2] Vera-Olmos, F. J., Esteban Pardo, H. Melero, and Norberto Malpica. "DeepEye: Deep convolutional network for pupil detection in real environments." Integrated Computer-Aided Engineering 26, no. 1 (2019): 85-95.

[3] Pardo, Esteban, Carmen Garfias, and Norberto Malpica. "Seismic Phase Picking Using Convolutional Networks." IEEE Transactions on Geoscience and Remote Sensing 57, no. 9 (2019): 7086-7092.

[4] Torrado-Carvajal, Angel, Javier Vera-Olmos, David Izquierdo-Garcia, Onofrio A. Catalano, Manuel A. Morales, Justin Margolin, Andrea Soricelli, Marco Salvatore, Norberto Malpica, and Ciprian Catana. "Dixon-VIBE deep learning (DIVIDE) pseudo-CT synthesis for pelvis PET/MR attenuation correction." Journal of Nuclear Medicine 60, no. 3 (2019): 429-435.