Amazon Lookout para la visión proporciona un servicio de detección de anomalías basado en aprendizaje automático (ML) para identificar imágenes normales (es decir, imágenes de objetos sin defectos) frente a imágenes anómalas (es decir, imágenes de objetos defectos), tipos de anomalías (p. ej., pieza faltante) y la ubicación de estas anomalías. Por lo tanto, Lookout for Vision es popular entre los clientes que buscan soluciones automatizadas para la inspección de calidad industrial (p. ej., detección de productos anormales). Sin embargo, los conjuntos de datos de los clientes suelen enfrentarse a dos problemas:
- El número de imágenes con anomalías puede ser muy bajo y es posible que no alcance el mínimo de anomalías/tipo de defecto impuesto por Lookout for Vision (~20).
- Es posible que las imágenes normales no tengan suficiente diversidad y que el modelo falle cuando las condiciones ambientales, como la iluminación, cambien en la producción.
Para superar estos problemas, esta publicación presenta una tubería de aumento de imágenes que se enfoca en ambos problemas: proporciona una forma de generar imágenes anómalas sintéticas mediante la eliminación de objetos en las imágenes y genera imágenes normales adicionales mediante la introducción de aumentos controlados como ruido gaussiano, tono, saturación, píxeles escala de valores, etc. Usamos el imgaug biblioteca para introducir el aumento para generar imágenes anómalas y normales adicionales para el segundo problema. Usamos Verdad del terreno de Amazon Sagemaker para generar máscaras de eliminación de objetos y la Lama algoritmo para eliminar objetos para el primer problema utilizando técnicas de pintura de imágenes (eliminación de objetos).
El resto del post está organizado de la siguiente manera. En la Sección 3, presentamos la canalización de aumento de imágenes para imágenes normales. En la Sección 4, presentamos la tubería de aumento de imágenes para imágenes anormales (también conocida como generación de defectos sintéticos). La Sección 5 ilustra los resultados del entrenamiento de Lookout for Vision utilizando el conjunto de datos aumentado. La Sección 6 demuestra cómo el modelo Lookout for Vision entrenado en datos sintéticos se comporta frente a defectos reales. En la Sección 7, hablamos sobre la estimación de costos para esta solución. Se puede acceder a todo el código que usamos para esta publicación esta página.
1. Descripción general de la solución
diagrama ML
El siguiente es el diagrama de la canalización de aumento de imágenes propuesta para el entrenamiento del modelo de localización de anomalías de Lookout for Vision:
El diagrama anterior comienza recopilando una serie de imágenes (paso 1). Aumentamos el conjunto de datos aumentando las imágenes normales (paso 3) y usando algoritmos de eliminación de objetos (pasos 2, 5-6). Luego, empaquetamos los datos en un formato que Amazon Lookout for Vision pueda consumir (pasos 7 y 8). Finalmente, en el paso 9, usamos los datos empaquetados para entrenar un modelo de localización de Lookout for Vision.
Esta tubería de aumento de imágenes brinda a los clientes flexibilidad para generar defectos sintéticos en el conjunto de datos de muestra limitado, así como para agregar más cantidad y variedad a las imágenes normales. Mejoraría el rendimiento del servicio Lookout for Vision, resolviendo el problema de la falta de datos del cliente y haciendo que el proceso de inspección de calidad automatizado sea más fluido.
2. Preparación de datos
Desde aquí hasta el final de la publicación, usamos el público FICS-PCB: un conjunto de datos de imágenes multimodales para la inspección visual automatizada de placas de circuitos impresos conjunto de datos con licencia bajo un Licencia Creative Commons Reconocimiento 4.0 Internacional (CC BY 4.0) para ilustrar la tubería de aumento de imágenes y la consiguiente capacitación y prueba de Lookout for Vision. Este conjunto de datos está diseñado para respaldar la evaluación de sistemas automatizados de inspección visual de PCB. Se recopiló en el laboratorio de Seguridad y Garantía (SCAN) de la Universidad de Florida. Se puede acceder esta página.
Partimos de la hipótesis de que el cliente solo proporciona una única imagen normal de una placa PCB (una muestra de PCB s10) como conjunto de datos. Se puede ver de la siguiente manera:
3. Aumento de imagen para imágenes normales
El servicio Lookout for Vision requiere al menos 20 imágenes normales y 20 anomalías por tipo de defecto. Dado que solo hay una imagen normal de los datos de muestra, debemos generar más imágenes normales utilizando técnicas de aumento de imágenes. Desde el punto de vista de ML, alimentar múltiples transformaciones de imágenes utilizando diferentes técnicas de aumento puede mejorar la precisión y la solidez del modelo.
Usaremos imgaug para el aumento de imágenes de imágenes normales. Imgaug es un paquete de Python de código abierto que le permite aumentar imágenes en experimentos de ML.
Primero, instalaremos el imgaug biblioteca en una Amazon SageMaker cuaderno.
A continuación, podemos instalar el paquete de python llamado 'IPyPlot'.
Luego, realizamos un aumento de imagen de la imagen original usando transformaciones que incluyen GammaContrast
, SigmoidContrast
y LinearContrast
, y agregando ruido gaussiano en la imagen.
Dado que necesitamos al menos 20 imágenes normales, y cuantas más mejor, generamos 10 imágenes aumentadas para cada una de las 4 transformaciones que se muestran arriba como nuestro conjunto de datos de imágenes normales. En el futuro, también planeamos transformar las imágenes para colocarlas en diferentes ubicaciones y diferentes ángulos para que el modelo entrenado pueda ser menos sensible a la ubicación del objeto en relación con la cámara fija.
4. Generación de defectos sintéticos para el aumento de imágenes anormales
En esta sección, presentamos una tubería de generación de defectos sintéticos para aumentar la cantidad de imágenes con anomalías en el conjunto de datos. Tenga en cuenta que, a diferencia de la sección anterior donde creamos nuevas muestras normales a partir de muestras normales existentes, aquí creamos nuevas imágenes de anomalías a partir de muestras normales. Esta es una característica atractiva para los clientes que carecen por completo de este tipo de imágenes en sus conjuntos de datos, por ejemplo, quitar un componente de la placa PCB normal. Esta canalización de generación de defectos sintéticos consta de tres pasos: en primer lugar, generamos máscaras sintéticas a partir de imágenes de origen (normales) mediante Amazon SageMaker Ground Truth. En esta publicación, nos enfocamos en un tipo de defecto específico: componente faltante. Esta generación de máscara proporciona una imagen de máscara y un archivo de manifiesto. En segundo lugar, el archivo de manifiesto debe modificarse y convertirse en un archivo de entrada para un punto final de SageMaker. Y tercero, el archivo de entrada se ingresa en un punto final de eliminación de objetos de SageMaker responsable de eliminar las partes de la imagen normal indicadas por la máscara. Este punto final proporciona la imagen anormal resultante.
4.1 Genere máscaras de defectos sintéticas con Amazon SageMaker Ground Truth
Amazon Sagemaker Ground Truth para el etiquetado de datos
Amazon SageMaker Ground Truth es un servicio de etiquetado de datos que facilita el etiquetado de datos y le brinda la opción de utilizar anotadores humanos a través de Amazon Mechanical Turk, proveedores externos o su propia mano de obra privada. Puedes seguir este tutorial para configurar un trabajo de etiquetado.
En esta sección, mostraremos cómo usamos Verdad fundamental de Amazon SageMaker para marcar "componentes" específicos en imágenes normales para eliminarlos en el siguiente paso. Tenga en cuenta que una contribución clave de esta publicación es que no usamos Amazon SageMaker Ground Truth en su forma tradicional (es decir, para etiquetar imágenes de entrenamiento). Aquí, lo usamos para generar una máscara para eliminarla en el futuro en imágenes normales. Estas eliminaciones en imágenes normales generarán los defectos sintéticos.
Para el propósito de esta publicación, en nuestro trabajo de etiquetado eliminaremos artificialmente hasta tres componentes de la placa PCB: IC, resistor1 y resistor2. Después de ingresar al trabajo de etiquetado como etiquetador, puede seleccionar el nombre de la etiqueta y dibujar una máscara de cualquier forma alrededor del componente que desea eliminar de la imagen como un defecto sintético. Tenga en cuenta que no puede incluir '_' en el nombre de la etiqueta para este experimento, ya que usamos '_' para separar diferentes metadatos en el nombre del defecto más adelante en el código.
En la siguiente imagen, dibujamos una máscara verde alrededor del IC (Circuito Integrado), una máscara azul alrededor de la resistencia 1 y una máscara naranja alrededor de la resistencia 2.
Después de que seleccionemos el enviar , Amazon SageMaker Ground Truth generará una máscara de salida con fondo blanco y un archivo de manifiesto de la siguiente manera:
Tenga en cuenta que hasta ahora no hemos generado ninguna imagen anormal. Acabamos de marcar los tres componentes que se eliminarán artificialmente y cuya eliminación generará imágenes anormales. Más adelante, usaremos (1) la imagen de máscara anterior y (2) la información del archivo de manifiesto como entradas para la canalización de generación de imágenes anómalas. La siguiente sección muestra cómo preparar la entrada para el extremo de SageMaker.
4.2 Preparar la entrada para el punto final de SageMaker
Transforme el manifiesto de Amazon SageMaker Ground Truth como un archivo de entrada de punto final de SageMaker
Primero, configuramos un Servicio de almacenamiento simple de Amazon (Amazon S3) depósito para almacenar todas las entradas y salidas para la canalización de aumento de imágenes. En la publicación, usamos un depósito S3 llamado qualityinspection
. Luego generamos todas las imágenes normales aumentadas y las subimos a este cubo S3.
A continuación, descargamos la máscara de Amazon SageMaker Ground Truth y la subimos a una carpeta llamada "máscara" en ese depósito S3.
Después de eso, descargamos el archivo de manifiesto del trabajo de etiquetado de Amazon SageMaker Ground Truth y lo leemos como líneas json.
Por último, generamos un diccionario de entrada que registra la ubicación S3 de la imagen de entrada, la ubicación de la máscara, la información de la máscara, etc., lo guardamos como archivo txt y luego lo subimos a la carpeta de "entrada" del depósito S3 de destino.
El siguiente es un archivo de entrada de muestra:
4.3 Cree un punto final de SageMaker asincrónico para generar defectos sintéticos con componentes faltantes
4.3.1 Modelo LaMa
Para eliminar componentes de la imagen original, usamos un modelo PyTorch de código abierto llamado LaMa de LaMa: pintura de máscara grande resistente a la resolución con circunvoluciones de Fourier. Es un modelo de pintura en pintura de máscara grande resistente a la resolución con circunvoluciones de Fourier desarrollado por Samsung AI. Las entradas para el modelo son una imagen y una máscara en blanco y negro y la salida es una imagen con los objetos dentro de la máscara eliminados. Usamos Amazon SageMaker Ground Truth para crear la máscara original y luego la transformamos en una máscara en blanco y negro según sea necesario. La aplicación del modelo LaMa se demuestra de la siguiente manera:
4.3.2 Introducción a la inferencia asíncrona de Amazon SageMaker
Inferencia asincrónica de Amazon SageMaker es una nueva opción de inferencia en Amazon SageMaker que pone en cola las solicitudes entrantes y las procesa de forma asincrónica. La inferencia asincrónica permite a los usuarios ahorrar costos ajustando automáticamente el recuento de instancias a cero cuando no hay solicitudes para procesar. Esto significa que solo paga cuando su terminal está procesando solicitudes. La nueva opción de inferencia asincrónica es ideal para cargas de trabajo donde los tamaños de solicitud son grandes (hasta 1 GB) y los tiempos de procesamiento de inferencia son del orden de minutos. El código para implementar e invocar el punto final es esta página.
4.3.3 Implementación de terminales
Para implementar el punto final asíncrono, primero debemos obtener el Rol de IAM y configurar algunas variables de entorno.
Como mencionamos antes, estamos usando el modelo PyTorch de código abierto LaMa: pintura de máscara grande resistente a la resolución con circunvoluciones de Fourier y el modelo preentrenado se ha subido a s3://qualityinspection/model/big-lama.tar.gz
. image_uri
apunta a un contenedor docker con el marco requerido y las versiones de python.
Luego, debemos especificar parámetros de configuración específicos de inferencia asíncrona adicionales al crear la configuración del punto final.
A continuación, implementamos el punto final en una instancia ml.g4dn.xlarge ejecutando el siguiente código:
Después de aproximadamente 6 a 8 minutos, el extremo se crea correctamente y aparecerá en la consola de SageMaker.
4.3.4 Invocar el punto final
Luego, usamos el archivo txt de entrada que generamos anteriormente como la entrada del punto final e invocamos el punto final usando el siguiente código:
El comando anterior terminará la ejecución inmediatamente. Sin embargo, la inferencia continuará durante varios minutos hasta que complete todas las tareas y devuelva todas las salidas en el depósito S3.
4.3.5 Comprobar el resultado de la inferencia del punto final
Después de seleccionar el punto final, verá la sesión de Monitor. Seleccione 'Ver registros' para verificar los resultados de la inferencia en la consola.
Aparecerán dos entradas de registro en Flujos de registro. el llamado data-log
mostrará el resultado final de la inferencia, mientras que el otro registro de registro mostrará los detalles de la inferencia, que generalmente se usa con fines de depuración.
Si la solicitud de inferencia tiene éxito, verá el mensaje: Inference request succeeded.
en el registro de datos y también obtenga información de la latencia total del modelo, el tiempo total del proceso, etc. en el mensaje. Si la inferencia falla, verifique el otro registro para depurar. También puede verificar el resultado sondeando el estado de la solicitud de inferencia. Más información sobre la inferencia asincrónica de Amazon SageMaker esta página.
4.3.6 Generación de defectos sintéticos con componentes faltantes usando el punto final
Completaremos cuatro tareas en el punto final:
- El servicio de localización de anomalías de Lookout for Vision requiere un defecto por imagen en el conjunto de datos de entrenamiento para optimizar el rendimiento del modelo. Por lo tanto, debemos separar las máscaras para diferentes defectos en el punto final mediante filtrado de color.
- Divida el conjunto de datos de prueba/tren para satisfacer el siguiente requisito:
- al menos 10 imágenes normales y 10 anomalías para el conjunto de datos del tren
- un defecto/imagen en el conjunto de datos del tren
- al menos 10 imágenes normales y 10 anomalías para el conjunto de datos de prueba
- se permiten múltiples defectos por imagen para el conjunto de datos de prueba
- Genere defectos sintéticos y cárguelos en las ubicaciones S3 de destino.
Generamos un defecto por imagen y más de 20 defectos por clase para el conjunto de datos del tren, así como de 1 a 3 defectos por imagen y más de 20 defectos por clase para el conjunto de datos de prueba.
El siguiente es un ejemplo de la imagen de origen y sus defectos sintéticos con tres componentes: IC, resistor1 y resistor 2 faltantes.
imagen original
40_im_mask_IC_resistor1_resistor2.jpg (el nombre del defecto indica los componentes que faltan)
- Genere archivos de manifiesto para el conjunto de datos de prueba/entrenamiento registrando toda la información anterior.
Finalmente, generaremos manifiestos de prueba/entrenamiento para registrar información, como la ubicación S3 del defecto sintético, la ubicación S3 de la máscara, la clase de defecto, el color de la máscara, etc.
Las siguientes son líneas json de muestra para una anomalía y una imagen normal en el manifiesto.
Por anomalía:
- AI
- arte ai
- generador de arte ai
- robot ai
- Amazon Lookout para la visión
- Verdad fundamental de Amazon SageMaker
- inteligencia artificial
- certificación de inteligencia artificial
- inteligencia artificial en banca
- robots de inteligencia artificial
- robots de inteligencia artificial
- software de inteligencia artificial
- Aprendizaje automático de AWS
- blockchain
- conferencia blockchain ai
- Coingenius
- inteligencia artificial conversacional
- criptoconferencia ai
- Soluciones para clientes
- de dall
- deep learning
- google ai
- máquina de aprendizaje
- Platón
- platón ai
- Inteligencia de datos de Platón
- Juego de Platón
- PlatónDatos
- juego de platos
- escala ia
- sintaxis
- zephyrnet