Guía paso a paso para construir una inspección visual de productos de fundición… – Hacia la IA

Estás leyendo la publicación: Guía paso a paso para construir una inspección visual de productos de fundición… – Hacia la IA

Publicado originalmente en Hacia la IA.

Introducción

La fundición se refiere al proceso de fabricación en el que un material fundido, como el metal, se vierte en un orificio o molde con la forma requerida y se deja endurecer o solidificar allí. Un defecto de fundición se refiere a una irregularidad introducida en el componente durante el proceso de fundición.

Cifra: Proceso de fundición (Fuente)

Una inspección de calidad de estos componentes se vuelve importante porque cualquier producto defectuoso puede provocar el rechazo de todo el pedido, lo que puede causar una gran pérdida financiera para el negocio.

Los casos en los que un producto defectuoso entra en la aplicación tampoco son deseables y se evitan a toda costa. Como puede causar alguna falla inesperada en el componente de la máquina, lo que puede generar grandes pérdidas.

Cifra: defectos de fundición (Fuente)

La inspección visual de defectos implica mirar manualmente cada componente y luego decidir si la pieza es defectuosa o no. Esto se vuelve costoso y requiere mucho tiempo.

En este blog, tratamos de usar CNN (Convolution Neural Network), un modelo de aprendizaje profundo para detectar defectos de fundición mediante el análisis de imágenes de productos de fundición.

requisitos previos

Para continuar y comprender el enfoque basado en CNN para detectar defectos de fundición, uno debe estar familiarizado con:

  1. Pitón: Todo el código a continuación se escribirá usando python.
  2. Flujo de tensor: TensorFlow es una biblioteca de software de aprendizaje automático e inteligencia artificial gratuita y de código abierto. Se puede utilizar para una variedad de tareas, pero se emplea más comúnmente para el entrenamiento y la inferencia de redes neuronales profundas.
  3. Keras: Keras es una interfaz de Python para redes neuronales artificiales y es un software de código abierto. Keras sirve como interfaz para la biblioteca TensorFlow
  4. Cuaderno Jupyter: Los cuadernos Jupyter son plataformas basadas en la web creadas para cálculos matemáticos y científicos. Construimos nuestro tutorial en jupyter Notebook.

Además de las herramientas enumeradas anteriormente, existen otros conceptos teóricos con los que uno debe estar familiarizado para comprender el tutorial a continuación.

1. Redes neuronales de convolución

Las redes neuronales de convolución (CNN) son un tipo de arquitectura de red en aprendizaje profundo que se utilizan principalmente para tareas relacionadas con imágenes, como clasificación de imágenes, segmentación de imágenes, etc. La conectividad de red en CNN se asemeja a la del cerebro humano.

Cifra: Arquitectura de red neuronal de convolución

Las redes neuronales de convolución se componen principalmente de 3 capas:

  1. Capa de convolución: La capa convolucional calculará el producto escalar entre los pesos del área conectada al volumen de entrada y las neuronas cuya salida está relacionada con regiones particulares de la entrada.
  2. Capa de agrupación: Para reducir aún más la cantidad de parámetros en esa activación, la capa de agrupación simplemente reducirá la muestra a lo largo de la dimensionalidad espacial de la entrada.
  3. Capas totalmente conectadas: A continuación, las capas completamente conectadas llevarán a cabo tareas similares a las de las ANN convencionales y se esforzarán por derivar puntajes de clase de las activaciones, que posteriormente se pueden usar para la clasificación.

Una de las principales ventajas de usar CNN es Compartir parámetros. La idea detrás del intercambio de parámetros es que si una característica de la región se puede calcular en una ubicación espacial específica, es probable que sea útil en otra.

🔥 Recomendado:  Más de 12 mejores libros de Blogger para mejorar sus habilidades de blogueo (2023)

El número total de parámetros del volumen de salida se reducirá drásticamente si cada mapa de activación individual se limita a tener los mismos pesos y sesgos.

2. Funciones de activación

Generalmente, los datos con los que trabajamos son de naturaleza no lineal, es decir, las características de la instancia y el valor de predicción correspondiente. Las funciones de activación son funciones que se aplican a cada neurona/célula en redes neuronales artificiales para introducir no linealidad en ellas.

Hay muchas funciones de activación que se utilizan:

  1. ReLU: ReLU básicamente significa unidad lineal rectificada. Matemáticamente se define como:

Cifra: Fórmula matemática para ReLU

La función de activación de ReLU es mucho más eficiente computacionalmente en comparación con otros

funciones de activación. Además, converge más rápido al mínimo global debido a su linealidad y naturaleza no saturada.

  1. Sigmoideo: La función sigmoidea, también conocida como función logística, toma como entrada cualquier valor real y genera un valor en el rango de 0 a 1. Es una de las funciones de activación más utilizadas. Matemáticamente se representa como

Cifra: Fórmulas matemáticas para la función sigmoidea

Esta función se usa generalmente para modelos donde la salida calculada es la probabilidad.

Además, la función es diferenciable y, por lo tanto, forma un gradiente suave, es decir, evita que los valores de salida salten o provoquen oscilaciones.

Metodología

Para continuar con nuestro sistema de inspección basado en CNN:

  1. Comenzamos con una tarea de exploración de datos. Analizamos los datos y determinamos si se observa alguna asimetría o algún patrón.
  2. Crea nuestro CNN modele usando Tensorflow y entrénelo usando datos de entrenamiento.
  3. Realice un ajuste de hiperparámetros para afinar nuestro modelo, es decir, reducir el sobreajuste o el ajuste insuficiente.
  4. Realice predicciones en imágenes de prueba.

Cifra: Diagrama de flujo de la metodología (Imagen del autor)

Selección de conjuntos de datos

Para nuestro proyecto, utilizaremos el conjunto de datos disponible en Kaggle. El conjunto de datos contiene imágenes de piezas defectuosas y no defectuosas. En total hay 7358 imágenes de los cuales 6633 imágenes de entrenamiento y 715 imágenes de prueba. Más rompiendo,

Cifra: Análisis del conjunto de datos (Imagen del autor)

Las imágenes son imágenes de 3 canales, es decir, de naturaleza RGB con una dimensión de (300, 300, 3).

Implementación

Ahora, comenzaremos a codificar un sistema basado en CNN para detectar defectos de fundición.

Configuración del entorno

Los siguientes puntos deben realizarse antes de ejecutar el código:

  1. El siguiente código está escrito en mi cuaderno jupyter local. Por lo tanto, instale jupyter. Puedes referirte a esto https://www.anaconda.com/products/distribution. Puede instalar anaconda y usar jupyter desde allí.
  2. Si Anaconda no funciona, puede consultar: https://jupyter.org/install.
  3. El Directorio de datos La variable contiene una ruta a la carpeta que contiene los datos de la imagen.

Es una ruta al directorio que contiene la ruta a ambas carpetas, entrenar y probar.

4. Además, el directorio de pruebas y trenes se divide en 2 carpetas, es decir ok_frente que contiene imágenes no defectuosas de componentes y def_frente que contiene imágenes de piezas defectuosas

Práctica con el código

Comenzamos importando todas las bibliotecas requeridas.

A continuación, realizamos una visualización de datos. El conjunto de datos contiene un total de 7448 imágenes tanto defectuosas como no defectuosas. Básicamente trazamos un histograma comparando el número de imágenes que son defectuosas y no defectuosas.

🔥 Recomendado:  Consejos para ayudarlo a ahorrar dinero para que pueda enviar dinero a casa a...

También hacemos un gráfico de barras para ver una comparación entre datos defectuosos y no defectuosos para ver si los datos contienen alguna asimetría.

Cifra: Gráfico de barras que compara el recuento de defectuosos y no defectuosos (Imagen del autor)

En el gráfico anterior, vemos que el conjunto de datos está un poco sesgado hacia las piezas defectuosas. Sin embargo, los datos se distribuyen de tal manera que el 60 % de las imágenes son defectuosas y el 40 % no son defectuosas. Así, en este caso el modelo no estará tan sesgado.

Pero en los casos en que los datos están sesgados en gran medida hacia alguna clase, podría resultar en que el modelo esté sesgado hacia esa clase en particular. En tal caso, uno puede:

  1. Aumente el conjunto de datos para que se reduzca la asimetría.
  2. Realice el aumento de datos en el conjunto de datos existente.

A continuación, hacemos un preprocesamiento de datos.

Aquí,

  1. Normalizamos los valores de píxel en el rango de 0 a 1. Para esto, dividimos nuestros valores de píxel por 255.
  2. Cambiar el tamaño de nuestras imágenes a (300 x 300), es decir, al modo de escala de grises.
  3. Establezca el tamaño del lote en 64. El tamaño del lote se establece porque las imágenes se entrenan en lotes. Esto mejora el modelo durante el entrenamiento.
  4. Establezca el modo de clase en binario, ya que solo tenemos 2 clases.
  5. Establecer el 30% de nuestros datos de entrenamiento como datos de validación.

¿Por qué normalizamos los valores de los píxeles antes de usarlos para el entrenamiento?

La normalización de los valores de píxeles se realizó para evitar el desbordamiento de peso durante la retropropagación. Durante la retropropagación, se sigue la regla de la cadena según la cual los valores de los píxeles se siguen multiplicando a medida que actualizamos las neuronas de la capa inicial.

Por lo tanto, los valores de peso pueden desbordarse fácilmente, es decir, volverse muy grandes, lo que los hace ineficientes desde el punto de vista computacional.

¿Por qué se elige que el tamaño del lote sea 64?

Por lo general, los tamaños de lote se eligen en potencia de 2 para aprovechar al máximo la capacidad de procesamiento de la GPU. En la mayoría de los casos, es 32 o 64.

A continuación, creamos nuestro modelo. El modelo utilizado contiene:

  1. 2 Circunvolución capas, cada una de las cuales va seguida de una capa de agrupación Max.
  2. Cada capa de convolución tiene una capa de activación ‘Relu’.
  3. Una capa totalmente conectada que tiene 128 celdas de entrada
  4. Una capa final con una neurona que predice la probabilidad de que un componente sea defectuoso. Aquí, se utiliza la función de activación sigmoidea.

Cifra: Resumen del modelo (Imagen del autor)

En el siguiente paso, comenzamos a entrenar nuestro modelo.

Mientras entrenamos nuestro modelo:

  1. Monitorizamos la pérdida de validación.
  2. El modelo se guarda después del entrenamiento como ‘CNN_Casting_Inspection.hdf5’ para que pueda usarse más tarde.

¿Por qué entrenamos el modelo durante 15 épocas?

Después de entrenar el modelo durante 15 épocas, no hubo ningún cambio significativo ni en la precisión ni en la pérdida de validación. Por lo tanto, si entrenáramos para más épocas, eventualmente conduciría a un sobreajuste en el modelo.

🔥 Recomendado:  Cómo cambiar o actualizar el pago de Spotify

Después de haber entrenado nuestro modelo, visualizamos su entrenamiento usando diferentes gráficos, lo que incluye el trazado:

  1. Pérdida de entrenamiento
  2. Pérdida de validación
  3. Precisión del entrenamiento
  4. Precisión de validación

De la gráfica anterior, vemos que con épocas crecientes:

  1. Tanto la validación como la pérdida de entrenamiento disminuyen.
  2. Tanto la validación como la precisión del entrenamiento aumentan.

El gráfico de pérdida no tiene mucha oscilación, lo que indica que la tasa de aprendizaje utilizada es lo suficientemente buena.

Finalmente, predecimos la salida en imágenes de prueba. Imprimimos los resultados de las imágenes de prueba usando la función Classification_report() de scikit_learn.

Cifra: Informe de clasificación final

La precisión del modelo final es 99,47, lo cual es bastante bueno.

Si vemos la tarea de inspeccionar imágenes individuales de componentes para detectar defectos de fundición, nos gustaría:

  1. Elimine los falsos negativos, es decir, los casos en que una pieza defectuosa entra en producción.
  2. Elimine los falsos positivos, es decir, las instancias en las que se detecta que una pieza no defectuosa está defectuosa.

Por lo tanto, nos gustaría monitorear de cerca la puntuación f1 en comparación con la exactitud, la precisión o la recuperación.

La puntuación f1 observada:

  1. 0,9939 para clase 0, es decir, no defectuoso.
  2. 0,9953 para la clase 1, es decir, desertado.

Conclusión

En este blog, realizamos la tarea de inspeccionar visualmente los productos de fundición mediante el análisis de sus imágenes utilizando una clase de arquitecturas de aprendizaje profundo conocidas como redes neuronales de convolución. Los puntos importantes incluyen:

  1. Comenzamos analizando primero los datos, es decir, graficando las imágenes, su conteo, dimensiones, etc.
  2. Luego realizamos un preprocesamiento de datos, como:
  3. Cambiar las dimensiones de la imagen
  4. Cambio de imagen a escala de grises
  5. Reescala de valores de píxeles entre 0 y 1.
  6. A continuación, creamos nuestro modelo. El modelo tiene 2 capas convolucionales, cada una seguida de una capa MaxPooling. Al final, tenemos una capa completamente conectada seguida de una capa final donde se predice la salida.
  7. Finalmente predijimos nuestra salida en imágenes de prueba.

La tarea realizada anteriormente fue básicamente clasificación de imágenes solamente, donde teníamos 2 clases Defectuosas y No defectuosas. Similar a esto, cualquier tarea de clasificación de imágenes se puede realizar utilizando el enfoque anterior.

Referencias

  1. https://arxiv.org/pdf/1511.08458.pdf
  2. https://medium.com/r?url=https%3A%2F%2Fengmag.in%2Findian-casting-industry-preparado-para-un-crecimiento-significativo-en-rendimiento%2F
  3. https://medium.com/r?url=https%3A%2F%2Fwww.rapiddirect.com%2Fblog%2F17-types-of-casting-defects%2F


La guía paso a paso para crear una inspección visual de productos de fundición con CNN se publicó originalmente en Hacia la IA en Medium, donde las personas continúan la conversación destacando y respondiendo a esta historia.

Publicado a través de Hacia la IA