Logotipo de Zephyrnet

Identifique la ubicación de las anomalías con Amazon Lookout for Vision en el perímetro sin usar una GPU

Fecha:

La detección automática de defectos mediante visión por computadora ayuda a mejorar la calidad y reducir el costo de la inspección. La detección de defectos implica identificar la presencia de un defecto, clasificar los tipos de defectos e identificar dónde se encuentran los defectos. Muchos procesos de fabricación requieren detección a baja latencia, con recursos informáticos limitados y conectividad limitada.

Amazon Lookout para la visión es un servicio de aprendizaje automático (ML) que ayuda a detectar defectos en los productos mediante la visión por computadora para automatizar el proceso de inspección de calidad en sus líneas de fabricación, sin necesidad de experiencia en ML. Lookout for Vision ahora incluye la capacidad de proporcionar la ubicación y el tipo de anomalías utilizando modelos ML de segmentación semántica. Estos modelos de aprendizaje automático personalizados se pueden implementar en la nube de AWS mediante API en la nube o al hardware de borde personalizado usando AWS IoT Greengrass. Lookout for Vision ahora es compatible con la inferencia en una plataforma informática x86 que ejecuta Linux con o sin un acelerador de GPU NVIDIA y en cualquier dispositivo de borde basado en NVIDIA Jetson. Esta flexibilidad permite la detección de defectos en hardware existente o nuevo.

En esta publicación, le mostramos cómo detectar piezas defectuosas con los modelos Lookout for Vision ML que se ejecutan en un dispositivo de borde, que simulamos con un Nube informática elástica de Amazon (Amazon EC2) instancia. Recorremos el entrenamiento de los nuevos modelos de segmentación semántica, exportándolos como componentes de AWS IoT Greengrass y ejecutando la inferencia en modo solo CPU con el código de ejemplo de Python.

Resumen de la solución

En esta publicación, utilizamos un conjunto de imágenes de extraterrestres de juguete compuesto por imágenes normales y defectuosas, como extremidades, ojos u otras partes faltantes. Entrenamos un modelo Lookout for Vision en la nube para identificar alienígenas de juguete defectuosos. Compilamos el modelo en una CPU X86 de destino, empaquetamos el modelo Lookout for Vision entrenado como un componente de AWS IoT Greengrass e implementamos el modelo en una instancia EC2 sin una GPU mediante la consola de AWS IoT Greengrass. Finalmente, demostramos una aplicación de muestra basada en Python que se ejecuta en la instancia EC2 (C5a.2xl) que obtiene las imágenes de alienígenas de juguete del sistema de archivos del dispositivo perimetral, ejecuta la inferencia en el modelo Lookout for Vision usando el gRPC interfaz, y envía los datos de inferencia a un MQTT tema en la nube de AWS. Los scripts generan una imagen que incluye el color y la ubicación de los defectos en la imagen anómala.

El siguiente diagrama ilustra la arquitectura de la solución. Es importante tener en cuenta que para cada tipo de defecto que desee detectar en la localización, debe tener 10 imágenes de anomalías marcadas en entrenamiento y 10 en datos de prueba, para un total de 20 imágenes de ese tipo. Para esta publicación, buscamos extremidades faltantes en el juguete.

La solución tiene el siguiente flujo de trabajo:

  1. Cargue un conjunto de datos de entrenamiento y un conjunto de datos de prueba a Servicio de almacenamiento simple de Amazon (Amazon S3).
  2. Utilice la nueva interfaz de usuario de Lookout for Vision para agregar un tipo de anomalía y marcar dónde se encuentran esas anomalías en las imágenes de entrenamiento y prueba.
  3. Entrene un modelo de Lookout for Vision en la nube.
  4. Compile el modelo en la arquitectura de destino (X86) e implemente el modelo en la instancia EC2 (C5a.2xl) mediante la consola de AWS IoT Greengrass.
  5. Imágenes de origen del disco local.
  6. Ejecute inferencias en el modelo implementado a través de la interfaz de gRPC y recupere una imagen de máscaras de anomalías superpuestas en la imagen original.
  7. Publique los resultados de la inferencia en un cliente MQTT que se ejecuta en la instancia perimetral.
  8. Recibir el mensaje MQTT sobre un tema en Núcleo de AWS IoT en la nube de AWS para una mayor supervisión y visualización.

Los pasos 5, 6 y 7 están coordinados con la aplicación Python de ejemplo.

Requisitos previos

Antes de comenzar, complete los siguientes requisitos previos. Para esta publicación, usamos una instancia EC2 c5.2xl e instalamos AWS IoT Greengrass V2 en ella para probar las nuevas funciones. Si desea ejecutar en un NVIDIA Jetson, siga los pasos en nuestra publicación anterior, Amazon Lookout for Vision ahora admite la inspección visual de los defectos del producto en el perímetro.

  1. Cree una cuenta de AWS.
  2. Inicie una instancia EC2 en la que podamos instalar AWS IoT Greengrass y use el nuevo modo de inferencia solo de CPU. También puede usar una máquina Intel X86 de 64 bits con 8 gigabytes de RAM o más (usamos un c5a.2xl, pero cualquier cosa con más de 8 gigabytes en la plataforma x86 debería funcionar) con Ubuntu 20.04.
  3. Instale AWS IoT Greengrass V2:
    git clone https://github.com/aws-samples/amazon-lookout-for-vision.git
    cd edge
    # be sure to edit the installation script to match your region, also adjust any device names and groups!
    vi install_greengrass.sh

  4. Instale el sistema necesario y las dependencias de Python 3 (Ubuntu 20.04):
    # install Ubuntu dependencies on the EC2 instance
    ./install-ec2-ubuntu-deps.sh
    pip3 install -r requirements.txt
    # Replace ENDPOINT variable in sample-client-file-mqtt.py with the value on the AWS console AWS IoT->Things->l4JetsonXavierNX->Interact.  
    # Under HTTPS. It will be of type <name>-ats.iot.<region>.amazon.com 

Cargue el conjunto de datos y entrene el modelo

Usamos la conjunto de datos de extraterrestres de juguete para demostrar la solución. El conjunto de datos contiene imágenes normales y anómalas. Aquí hay algunas imágenes de muestra del conjunto de datos.

La siguiente imagen muestra un extraterrestre de juguete normal.

La siguiente imagen muestra a un extraterrestre de juguete al que le falta una pierna.

La siguiente imagen muestra a un extraterrestre de juguete al que le falta la cabeza.

En esta publicación, buscamos extremidades faltantes. Usamos la nueva interfaz de usuario para dibujar una máscara alrededor de los defectos en nuestros datos de entrenamiento y pruebas. Esto le dirá a los modelos de segmentación semántica cómo identificar este tipo de defecto.

  1. Comience cargando su conjunto de datos, ya sea a través de Amazon S3 o desde su computadora.
  2. Clasificarlos en carpetas tituladas normal y anomaly.
  3. Al crear su conjunto de datos, seleccione Adjunte etiquetas automáticamente a las imágenes según el nombre de la carpetaEsto nos permite clasificar las imágenes anómalas más tarde y dibujar las áreas que se etiquetarán con un defecto.
  4. Intente retener algunas imágenes para probarlas más tarde. normal y anomaly.
  5. Después de agregar todas las imágenes al conjunto de datos, elija Agregar etiquetas de anomalía.
  6. Comience a etiquetar los datos eligiendo Empezar a etiquetar.
  7. Para acelerar el proceso, puede seleccionar varias imágenes y clasificarlas como Normal or Anomaly.

    Si desea resaltar anomalías además de clasificarlas, debe resaltar dónde se encuentran las anomalías.
  8. Elija la imagen que desea anotar.
  9. Utilice las herramientas de dibujo para mostrar el área donde falta parte del sujeto o dibuje una máscara sobre el defecto.
  10. Elige Enviar y cerrar para mantener estos cambios.
  11. Repita este proceso para todas sus imágenes.
  12. Cuando termines, elige Guardar para persistir sus cambios. Ahora está listo para entrenar su modelo.
  13. Elige Modelo de tren.

Después de completar estos pasos, puede navegar hasta el proyecto y el fexibles página para comprobar el rendimiento del modelo entrenado. Puede iniciar el proceso de exportación del modelo al dispositivo perimetral de destino en cualquier momento después de entrenar el modelo.

Volver a entrenar al modelo con imágenes corregidas

A veces, el etiquetado de anomalías puede no ser del todo correcto. Tienes la oportunidad de ayudar a tu modelo a aprender mejor tus anomalías. Por ejemplo, la siguiente imagen se identifica como una anomalía, pero no muestra la missing_limbs etiqueta.

Abramos el editor y solucionemos esto.

Revisa las imágenes que encuentres como esta. Si encuentra que está etiquetado incorrectamente como una anomalía, puede usar la herramienta de borrador para eliminar la etiqueta incorrecta.

Ahora puede volver a entrenar su modelo y lograr una mayor precisión.

Compile y empaquete el modelo como un componente de AWS IoT Greengrass

En esta sección, recorremos los pasos para compilar el modelo alienígena de juguete en nuestro dispositivo de borde de destino y empaquetar el modelo como un componente de AWS IoT Greengrass.

  1. En la consola Lookout for Vision, elija su proyecto.
  2. En el panel de navegación, elija Paquetes de modelos de borde.
  3. Elige Crear trabajo de empaquetado modelo.
  4. Nombre del trabajo, ingresa un nombre.
  5. Descripción del trabajo, ingrese una descripción opcional.
  6. Elige Explorar modelos.
  7. Seleccione la versión del modelo (el modelo alienígena de juguete construido en la sección anterior).
  8. Elige Elige.
  9. Si está ejecutando esto en Amazon EC2 o en un dispositivo X86-64, seleccione plataforma de destino y elige Linux, X86y CPU.
    Si usa CPU, puede dejar las opciones del compilador vacías si no está seguro y no tiene una GPU NVIDIA. Si tiene una plataforma basada en Intel que admite AVX512, puede agregar estas opciones de compilador para optimizar y obtener un mejor rendimiento: {"mcpu": "skylake-avx512"}.
    Puede ver el nombre de su trabajo y el estado que se muestra como In progress. El trabajo de empaquetado del modelo puede tardar unos minutos en completarse. Cuando se completa el trabajo de empaquetado del modelo, el estado se muestra como Success.
  10. Elige el nombre de tu trabajo (en nuestro caso es aliensblogcpux86) para ver los detalles del trabajo.
  11. Elige Crear trabajo de empaquetado modelo.
  12. Ingrese los detalles para Nombre del componente, Descripción de Componente (Opcional), Versión del componentey Ubicación del componente.Lookout for Vision almacena las recetas de componentes y los artefactos en esta ubicación de Amazon S3.
  13. Elige Continuar el despliegue en Greengrass para implementar el componente en el dispositivo perimetral de destino.

El componente de AWS IoT Greengrass y los artefactos del modelo se crearon en su cuenta de AWS.

Implementar el modelo

Asegúrese de tener AWS IoT Greengrass V2 instalado en su dispositivo de destino para su cuenta antes de continuar. Para obtener instrucciones, consulte Instale el software AWS IoT Greengrass Core.

En esta sección, recorremos los pasos para implementar el modelo alienígena de juguete en el dispositivo perimetral mediante la consola de AWS IoT Greengrass.

  1. En la consola de AWS IoT Greengrass, vaya a su dispositivo perimetral.
  2. Elige Despliegue para iniciar los pasos de implementación.
  3. Seleccione Dispositivo central (porque la implementación es para un solo dispositivo) e ingrese un nombre para Nombre de destino.El nombre de destino es el mismo nombre que usó para nombrar el dispositivo central durante el proceso de instalación de AWS IoT Greengrass V2.
  4. Elige tu componente. En nuestro caso, el nombre del componente es aliensblogcpux86, que contiene el modelo alienígena de juguete.
  5. Elige Siguiente.
  6. Configure el componente (opcional).
  7. Elige Siguiente.
  8. Expandir Políticas de implementación.
  9. Política de actualización de componentes, seleccione Notificar componentesEsto permite que el componente ya implementado (una versión anterior del componente) posponga una actualización hasta que esté listo para actualizar.
  10. Política de manejo de fallas, seleccione no retrocedas.En caso de falla, esta opción nos permite investigar los errores en el despliegue.
  11. Elige Siguiente.
  12. Revise la lista de componentes que se implementarán en el dispositivo de destino (perímetro).
  13. Elige Siguiente.Deberías ver el mensaje Deployment successfully created.
  14. Para validar que la implementación del modelo fue exitosa, ejecute el siguiente comando en su dispositivo perimetral:
    sudo /greengrass/v2/bin/greengrass-cli component list

Debería ver una salida similar ejecutando el aliensblogcpux86 secuencia de comandos de inicio del ciclo de vida:

Componentes que se ejecutan actualmente en Greengrass:

Components currently running in Greengrass:
 
Component Name: aws.iot.lookoutvision.EdgeAgent
    Version: 0.1.34
    State: RUNNING
    Configuration: {"Socket":"unix:///tmp/aws.iot.lookoutvision.EdgeAgent.sock"}
 Component Name: aliensblogcpux86
    Version: 1.0.0
    State: RUNNING
    Configuration: {"Autostart":false}

Ejecutar inferencias en el modelo

Note: si está ejecutando Greengrass como un usuario diferente al que inició sesión, deberá cambiar los permisos del archivo /tmp/aws.iot.lookoutvision.EdgeAgent.sock:

chmod 666 /tmp/aws.iot.lookoutvision.EdgeAgent.sock

Ahora estamos listos para ejecutar inferencias en el modelo. En su dispositivo perimetral, ejecute el siguiente comando para cargar el modelo (reemplace con el nombre del modelo utilizado en su componente):

# run command to load the model# This will load the model into running state pass
# the name of the model component as a parameter.
python3 warmup-model.py <modelName>

Para generar inferencias, ejecute el siguiente comando con el nombre del archivo fuente (reemplace con la ruta y el nombre de archivo de la imagen para verificar y reemplazar con el nombre del modelo utilizado para su componente):

python3 sample-client-file-mqtt.py </path/to/images> <modelName>

start client ['sample-client-file.py', 'aliens-dataset/anomaly/1.png', 'aliensblogcpux86']
channel set
shape=(380, 550, 3)
Image is anomalous, (90.05860090255737 % confidence) contains defects with total area over .1%: {'missing_limbs': '#FFFFFF'}

El modelo predice correctamente la imagen como anómala (missing_limbs) con una puntuación de confianza de 0.9996867775917053. Nos dice la máscara de la etiqueta de anomalía. missing_limbs y el porcentaje de área. La respuesta también contiene datos de mapa de bits que puede decodificar de lo que encontró.

Descargar y abrir el archivo blended.png, que se parece a la siguiente imagen. Tenga en cuenta el área resaltada con el defecto alrededor de las piernas.

Historias de clientes

Con AWS IoT Greengrass y Lookout for Vision, ahora puede automatizar la inspección visual con visión artificial para procesos como el control de calidad y la evaluación de defectos, todo en el perímetro y en tiempo real. Puede identificar de forma proactiva problemas como daños en las piezas (como abolladuras, arañazos o soldaduras deficientes), componentes faltantes del producto o defectos con patrones repetitivos en la propia línea de producción, ahorrándole tiempo y dinero. Clientes como Tyson y Baxter están descubriendo el poder de Lookout for Vision para aumentar la calidad y reducir los costos operativos mediante la automatización de la inspección visual.

“La excelencia operativa es una prioridad clave en Tyson Foods. El mantenimiento predictivo es un activo esencial para lograr este objetivo al mejorar continuamente la efectividad general del equipo (OEE). En 2021, Tyson Foods lanzó un proyecto de visión por computadora basado en aprendizaje automático para identificar portadores de productos defectuosos durante la producción para evitar que afecten la seguridad, las operaciones o la calidad del producto de los miembros del equipo. Los modelos entrenados con Amazon Lookout for Vision se desempeñaron bien. El modelo de detección de pasadores logró una precisión del 95 % en ambas clases. El modelo de Amazon Lookout for Vision se ajustó para funcionar con una precisión del 99.1 % en la detección de pines fallidos. Con mucho, el resultado más emocionante de este proyecto fue la aceleración del tiempo de desarrollo. Aunque este proyecto utiliza dos modelos y un código de aplicación más complejo, el desarrollador tardó un 12 % menos en completarse. Este proyecto para monitorear la condición de los transportadores de productos en Tyson Foods se completó en un tiempo récord utilizando los servicios administrados de AWS como Amazon Lookout for Vision”.

—Audrey Timmerman, desarrolladora sénior de aplicaciones, Tyson Foods.

“La latencia y la velocidad de inferencia son fundamentales para la evaluación en tiempo real y los controles de calidad críticos de nuestros procesos de fabricación. Amazon Lookout for Vision edge en un dispositivo de CPU nos da la capacidad de lograr esto en equipos de producción, lo que nos permite ofrecer soluciones de visión de IA rentables a escala”.

—AK Karan, director sénior global, transformación digital, cadena de suministro integrada, Baxter International Inc.

Limpiar

Complete los siguientes pasos para eliminar los activos que creó de su cuenta y evitar cualquier facturación en curso:

  1. En la consola de Lookout for Vision, navegue hasta su proyecto.
  2. En Acciones menú, elimine sus conjuntos de datos.
  3. Elimina tus modelos.
  4. En la consola de Amazon S3, vacíe los depósitos que creó y luego elimínelos.
  5. En la consola de Amazon EC2, elimine la instancia que comenzó a ejecutar AWS IoT Greengrass.
  6. En la consola de AWS IoT Greengrass, elija Los despliegues en el panel de navegación.
  7. Elimine las versiones de sus componentes.
  8. En la consola de AWS IoT Greengrass, elimine las cosas, los grupos y los dispositivos de AWS IoT.

Conclusión

En esta publicación, describimos un escenario típico para la detección de defectos industriales en el perímetro mediante la localización de defectos y la implementación en un dispositivo solo de CPU. Recorrimos los componentes clave del ciclo de vida de la nube y el perímetro con un ejemplo de extremo a extremo utilizando Lookout for Vision y AWS IoT Greengrass. Con Lookout for Vision, entrenamos un modelo de detección de anomalías en la nube usando el conjunto de datos alienígena de juguete, compiló el modelo en una arquitectura de destino y empaquetó el modelo como un componente de AWS IoT Greengrass. Con AWS IoT Greengrass, implementamos el modelo en un dispositivo de borde. Demostramos una aplicación de muestra basada en Python que obtiene imágenes de alienígenas de juguete del sistema de archivos local del dispositivo perimetral, ejecuta las inferencias en el modelo Lookout for Vision en el perímetro mediante la interfaz gRPC y envía los datos de inferencia a un tema MQTT en AWS Nube.

En una publicación futura, mostraremos cómo ejecutar inferencias en un flujo de imágenes en tiempo real utilizando una canalización de medios GStreamer.

Comience su viaje hacia la detección e identificación de anomalías industriales visitando el Amazon Lookout para la visión y AWS IoT Greengrass paginas de recursos


Sobre los autores

manish talreja es gerente sénior de prácticas de aprendizaje automático industrial en los servicios profesionales de AWS. Ayuda a los clientes de AWS a lograr sus objetivos comerciales mediante la arquitectura y la creación de soluciones innovadoras que utilizan los servicios de ML e IoT de AWS en la nube de AWS.

ryan vanderwerf es arquitecto de soluciones asociado en Amazon Web Services. Anteriormente proporcionó consultoría centrada en máquinas virtuales Java y desarrollo de proyectos como ingeniero de software en OCI en el equipo de Grails y Micronaut. Fue arquitecto jefe/director de productos en ReachForce, con un enfoque en software y arquitectura de sistemas para soluciones SaaS en la nube de AWS para la administración de datos de marketing. Ryan ha creado varias soluciones SaaS en varios dominios, como empresas financieras, de medios, de telecomunicaciones y de aprendizaje electrónico desde 1996.

prakash krishnan es gerente sénior de desarrollo de software en Amazon Web Services. Lidera los equipos de ingeniería que están construyendo sistemas distribuidos a gran escala para aplicar algoritmos rápidos, eficientes y altamente escalables a problemas de reconocimiento de imágenes y videos basados ​​en aprendizaje profundo.

punto_img

Información más reciente

punto_img