Uso de Cognitive Services para simplificar el seguimiento del inventario

Publicado el 10 octubre, 2019

Sr. Content Developer

Equipo de becarios en New England Research and Development Center en Cambridge
¿Quién se pasa el verano en Microsoft Garage New England Research and Development Center (NERD)? El programa de prácticas Microsoft Garage busca estudiantes que estén deseosos de aprender, que no teman a intentar cosas nuevas y que estén dispuestos a salir de sus zonas de confort cuando se enfrenten a situaciones ambiguas. El programa reunió a Grace Hsu, del Instituto de Tecnología de Massachusetts, Christopher Bunn, de la Universidad del Noreste, Joseph Lai, de la Universidad de Boston, y Aurora Hong, de la Universidad Carnegie Mellon. Eligieron el programa de prácticas Garage por su enfoque en los productos, que les permite ver el ciclo de desarrollo completo, desde que se concibe la idea hasta que se distribuye el producto, y aprender cómo ser un obseso de los clientes.

Los becarios del programa Microsoft Garage llevan a cabo proyectos experimentales para desarrollar su creatividad y sus conocimientos de programación de productos experimentando con tecnología nueva. Normalmente, estos proyectos son propuestas que provienen de nuestros grupos de productos internos de Microsoft, pero, cuando Stanley Black & Decker preguntó si Microsoft podía aplicar reconocimiento de imágenes para la administración de recursos en obras, este equipo de cuatro becarios aceptó el desafío de crear un prototipo funcional en doce semanas.

A partir de una solicitud simple para aprovechar el reconocimiento de imágenes, el equipo llevó a cabo un análisis de mercado y un estudio de los usuarios para asegurarse de que el producto destacaría y sería útil. Dedicaron el verano a adquirir experiencia en el desarrollo de aplicaciones móviles e inteligencia artificial para crear una aplicación que reconociera las herramientas al menos con la misma precisión que los humanos.

El problema

En el sector de la construcción, no es inusual que los contratistas dediquen más de 50 horas al mes a hacer un seguimiento del inventario, lo que puede dar lugar a retrasos innecesarios, un exceso de existencias y que falten herramientas. En conjunto, en las obras de gran envergadura se podrían perder equipos por un valor superior a 200 000 USD durante el transcurso de un proyecto de larga duración. Solucionar este problema es una mezcla no estandarizada que suele implicar códigos de barras, Bluetooth, etiquetas RFID y códigos QR. El equipo de Stanley Black & Decker preguntó: “¿No sería más fácil tomar una foto y hacer que la herramienta la reconozca automáticamente?”.

Dado que hay muchos modelos de herramientas con diferencias mínimas, para reconocer un taladro específico, por ejemplo, es necesario leer un número de modelo como DCD996. Las herramientas también se pueden montar con varias configuraciones (por ejemplo, con o sin una broca o una batería) y se pueden ver desde distintos ángulos. También hay que tener en cuenta el número de condiciones de iluminación y los posibles fondos que puede haber en una obra típica. En seguida se convierte en un problema muy interesante para resolverlo con visión artificial.

Cuatro taladros DeWalt diferentes que son muy parecidos
 

Cómo lo afrontaron

Los algoritmos de clasificación se pueden entrenar fácilmente para alcanzar un elevado nivel de precisión en la identificación de objetos distintos, como diferenciar entre un taladro, una sierra y una cinta métrica. Sin embargo, ellos querían saber si un clasificador podía distinguir con precisión entre herramientas muy similares, como los cuatro taladros de la imagen anterior. En la primera iteración del proyecto, el equipo exploró PyTorch y el servicio Custom Vision de Microsoft. Custom Vision atrae a los usuarios porque no requiere un alto nivel de conocimientos de ciencia de datos para obtener un modelo funcional desde cero y, con suficientes imágenes (unas 400 para cada herramienta), Custom Vision demostró ser una solución adecuada. Sin embargo, en seguida se hizo evidente que escalar la recopilación manual de tantas imágenes a una línea de productos con miles de herramientas sería muy complejo. El enfoque cambió rápidamente para buscar maneras de generar las imágenes de entrenamiento artificialmente.

Para la estrategia inicial, el equipo realizó digitalizaciones tridimensionales y representaciones con pantalla verde de las herramientas. Estas imágenes se superpusieron sobre fondos aleatorios para imitar una fotografía real. Aunque este enfoque parecía prometedor, la calidad de las imágenes generadas resultó algo bastante complicado.

En la siguiente iteración, en colaboración con el equipo de ingeniería de Stanley Black & Decker, el equipo exploró un enfoque nuevo con representaciones fotorrealistas de modelos de diseño asistido por PC (CAD). Pudieron usar scripts de Python relativamente sencillos para cambiar el tamaño, girar y superponer las imágenes aleatoriamente sobre un gran número de fondos. Con esta técnica, el equipo pudo generar miles de imágenes de entrenamiento en cuestión de minutos.


    Imagen generada delante de una pantalla verde frente a una imagen representada a partir de CAD

La imagen de la izquierda se ha generado delante de una pantalla verde. La de la derecha se ha extraído de CAD.

Bancos de pruebas de las iteraciones

El servicio Custom Vision ofrece informes sobre la precisión del modelo, como se muestra a continuación.

Informe de ejemplo extraído del servicio Custom Vision
Para un modelo de clasificación destinado a productos visualmente similares, una matriz de confusión como la siguiente es muy útil. Una matriz de confusión visualiza el rendimiento de un modelo de predicción comparando la etiqueta real de una clase en las filas con la etiqueta generada por el modelo en las columnas. Cuanto mayores sean las puntuaciones de la diagonal, más preciso es el modelo. Cuando hay valores altos cerca de la diagonal, ayuda a los científicos de datos a saber las dos clases que el modelo entrenado está confundiendo entre sí.

Las bibliotecas actuales de Python se pueden usar para generar rápidamente una matriz de confusión con un conjunto de imágenes de prueba.
Matriz de confusión para 10 productos de DeWalt 

Resultado

El equipo desarrolló una aplicación de React Native que se ejecuta en iOS y Android, y sirve como herramienta ligera de administración de recursos con una interfaz de usuario clara e intuitiva. La aplicación se adapta a varios grados de disponibilidad de Wi-Fi y, cuando hay una conexión confiable, las imágenes tomadas se envían a las API del modelo de Custom Vision entrenado en la nube de Azure. En ausencia de una conexión a Internet, las imágenes se envían a un modelo de visión artificial local.

Estos modelos locales se pueden obtener usando Custom Vision, que exporta los modelos a Core ML para iOS, TensorFlow para Android o como un contenedor de Docker que se puede ejecutar en una instancia de Azure App Service en Linux. Se puede implementar un marco sencillo para agregar nuevos productos al modelo de Machine Learning mediante la exportación de imágenes representadas a partir de CAD y la generación de imágenes artificiales.

Capturas de la interfaz de usuario de la aplicación de inventarioCapturas de la interfaz de usuario de la aplicación de inventario
  
Imágenes de izquierda a derecha: pantalla de la lista de comprobación del inventario, funcionalidad de cámara para enviar una imagen al servicio Custom Vision, pantalla de los resultados de los modelos de Machine Learning y formulario manual para agregar una herramienta a la lista de comprobación.

Arch_Diagram

Qué es lo próximo

¿Busca una oportunidad para que su equipo pueda experimentar con un proyecto de visión artificial? Busque un evento OpenHack cerca de su localidad.

Microsoft OpenHack es un evento para desarrolladores en el que una gran variedad de participantes (Open) aprende a través de la experimentación práctica (Hack) usando desafíos basados en la interacción con clientes reales diseñados para imitar la trayectoria de un desarrollador. OpenHack es un evento prémium de Microsoft que proporciona una experiencia de aprendizaje única para clientes y asociados. En lugar de los congresos tradicionales basados en presentaciones, OpenHack ofrece una experiencia práctica de programación única para desarrolladores.

Las rutas de aprendizaje también pueden ayudarle a practicar con Cognitive Services.