La IA debe fallar una y otra vez para tener éxito. Pero hay varios errores que debe evitar cometer al enseñar a una aplicación impulsada por Deep Learning cómo buscar anomalías en un producto, componente o etiqueta.
Al igual que el cerebro, las herramientas de Deep Learning utilizan una malla de redes neuronales artificiales que requiere entrenamiento para ser «más inteligente». La principal diferencia es que, a diferencia de la inteligencia artificial (IA), las redes neuronales de tu cerebro han estado aprendiendo durante años: literalmente las has estado entrenando con cientos de miles de imágenes todos los días sin siquiera darte cuenta. Es por eso que su cerebro puede «detectar la diferencia» entre dos imágenes rápidamente si se le pregunta, incluso si no sabe qué es realmente el objeto que está viendo.
Sin embargo, una aplicación impulsada por IA, una vez entrenada correctamente, detectará las diferencias mucho más rápido. Por supuesto, todavía existen algunas limitaciones para esta tecnología. Pero en comparación con hace unos años, los modelos de Deep Learning no requieren tantos datos como antes para ser confiables. Además, si algo funciona demasiado lento, siempre puede actualizar el hardware de su PC para entrenar y ejecutar los modelos de Deep Learning más rápido. Esa es una gran ventaja, ya que no podemos (todavía) actualizar el cerebro humano de manera comparable. Es por eso que la IA, el aprendizaje automático y el Deep Learning son tan emocionantes. Si se entrena adecuadamente, esta tecnología puede hacer lo que nosotros hacemos y ayudarnos a resolver diferentes problemas, pero mucho más rápido y con más precisión.
Sin embargo, la formación adecuada es clave para el éxito de una aplicación de Deep Learning. No puedo enfatizar más que si no usas las tácticas correctas para enseñarle a la IA la diferencia entre «lo correcto y lo incorrecto», no podrá comprender los conceptos que estás tratando de inculcar. (Al igual que una persona).
Por lo tanto, pensé que podría compartir las cosas que mis colegas y yo hemos visto que personas de todos los niveles de experiencia y habilidades se equivocan al intentar entrenar o probar una aplicación de Deep Learning en escenarios del mundo real como la producción, el cumplimiento, la clasificación, el embalaje y el control de calidad. Por supuesto, también quiero hablar sobre la forma correcta de entrenar un modelo de Deep Learning y, posteriormente, evaluar la efectividad de ese entrenamiento. Sin embargo, antes de llegar a eso, centrémonos en los conceptos básicos y analicemos lo que necesita para entrenar eficazmente su modelo de Deep Learning.
Paso uno: Prepare sus conjuntos de datos (y sepa qué tipo de datos usar para ‘entrenamiento’ frente a ‘prueba’)
No se puede entrenar un modelo de Deep Learning si no se utiliza el tipo de datos adecuado para el entrenamiento, y a menudo veo a personas que intentan utilizar los mismos conjuntos de datos con fines de entrenamiento y prueba, lo cual es un problema.
Para que un modelo de Deep Learning funcione de manera efectiva, debe estar expuesto a un conjunto de datos para aprender lo que requerimos de él. El conjunto de datos de entrenamiento utilizados durante el proceso de entrenamiento se denomina «conjunto de datos de entrenamiento», mientras que otro conjunto completamente diferente utilizado para probar el modelo se denomina «conjunto de datos de prueba». A veces también puede haber un «conjunto de datos de validación», que se utiliza durante el entrenamiento para la validación, pero no para el entrenamiento. Pero para simplificar las cosas, vamos a ceñirnos a los conjuntos de datos de «entrenamiento» y «prueba» por ahora.
Si comparamos una aplicación impulsada por IA con un estudiante de secundaria, podríamos decir que el conjunto de datos de entrenamiento es como todos los materiales de aprendizaje utilizados en clase (donde cada imagen equivaldría a un libro o artículo que aborda el mismo tema desde un ángulo ligeramente diferente) y el conjunto de datos de prueba es como el examen de fin de trimestre, durante el cual probamos si el estudiante ha aprendido todo el conocimiento y puede ponerlo en práctica para resolver los problemas en cuestión.
La primera regla de oro a la hora de preparar los conjuntos de datos es NUNCA MEZCLAR conjuntos de datos de entrenamiento y prueba. La razón detrás de esto es muy simple: si está probando un modelo de Deep Learning utilizando exactamente el mismo conjunto de datos que ya ha visto durante el entrenamiento, ¿cómo puede estar seguro de que puede aplicar lo que ha aprendido en una situación completamente nueva (por ejemplo, al analizar nuevas imágenes)? Pozo… No puedes. Y, la mayoría de las veces, no podrá. No se puede probar el modelo utilizando imágenes de entrenamiento por la misma razón por la que los profesores no dan a sus alumnos las preguntas del examen con antelación. Quieren ver si pueden aplicar las lecciones enseñadas en clase a otras situaciones, quieren ver lo que derivaron y retuvieron de su formación.
Otra regla es que necesitas diversidad en tus imágenes. Su modelo de Deep Learning, para aprender de manera efectiva, necesita ser alimentado con muchas variaciones de la misma característica. Supongamos que desea analizar defectos en la rosca de un perno. No se puede tomar un tornillo con una rosca defectuosa y tomar, digamos, 20 o 50 imágenes del mismo artículo, solo con algunos cambios menores en la iluminación o el ángulo de orientación. Eso es hacer trampa, y está prohibido. El modelo de Deep Learning debe ser capaz de reconocer muchas anomalías diferentes, que pueden incluir la pieza o el componente equivocado que viene en el futuro. Por lo tanto, siempre que esté entrenando un modelo de Deep Learning, debe preparar un conjunto de datos de entrenamiento (por ejemplo, imágenes) de 20 a 50 objetos diferentes, quiero decir verdaderamente diferentes. En su caso, esto significaría 20-50 pernos con defectos similares pero diferentes de la rosca.
Otra regla es que necesitas diversidad en tus imágenes. Su modelo de Deep Learning, para aprender de manera efectiva, necesita ser alimentado con muchas variaciones de la misma característica. Supongamos que desea analizar defectos en la rosca de un perno. No se puede tomar un tornillo con una rosca defectuosa y tomar, digamos, 20 o 50 imágenes del mismo artículo, solo con algunos cambios menores en la iluminación o el ángulo de orientación. Eso es hacer trampa, y está prohibido. El modelo de Deep Learning debe ser capaz de reconocer muchas anomalías diferentes, que pueden incluir la pieza o el componente equivocado que viene en el futuro. Por lo tanto, siempre que esté entrenando un modelo de Deep Learning, debe preparar un conjunto de datos de entrenamiento (por ejemplo, imágenes) de 20 a 50 objetos diferentes, quiero decir verdaderamente diferentes. En su caso, esto significaría 20-50 pernos con defectos similares pero diferentes de la rosca.
La última regla es: no intentes entrenar con defectos ubicados en el borde de la imagen. Este es un problema complicado para los modelos de Deep Learning porque la precisión de las redes neuronales suele ser menor en los bordes debido al contexto más pequeño. Aunque las personas todavía pueden ver las cosas bastante bien en el borde de una imagen (o al menos creen que pueden), se recomienda que el campo de visión en aplicaciones reales asegure cierto margen alrededor de los objetos bajo inspección.
Entonces, para resumir las cosas, para entrenar de manera efectiva un modelo de Deep Learning, debe:
- Prepare dos conjuntos de datos diferentes, uno para el entrenamiento y solo el entrenamiento y otro para probar el modelo.
- Asegúrese de que el conjunto de datos de entrenamiento no contenga ningún dato (por ejemplo, imágenes) que esté preestablecido en el conjunto de datos de prueba.
- Prepare un conjunto de datos variado de entrenamiento y prueba que contenga objetos realmente diferentes (por ejemplo, diferentes piezas del mismo producto) con el mismo tipo de característica (por ejemplo, defecto) que desea enseñar al modelo a reconocer.
- No utilice imágenes en las que los defectos se encuentren en los bordes de la imagen para el entrenamiento.
También debes hacer tus anotaciones correctas y saber cuándo es mejor no anotar algo.
El Arte de la Anotación
Hay muchos tipos de herramientas de Deep Learning. Algunas se pueden entrenar en un modo no supervisado (por ejemplo, detección de anomalías) en el que simplemente se proporciona a la red un conjunto de imágenes sin marcar nada en ellas, mientras que otras herramientas requieren algún tipo de anotación para enseñar a la red neuronal lo que se quiere que busque. En el caso de que se requieran anotaciones, debe recordar que las anotaciones que realice en su conjunto de datos de entrenamiento influirán en la capacidad de la IA para aprender (y retener) la lección correcta.
La regla de oro aquí es simple: no mezcles tus anotaciones. Si marca un tipo de defecto en algunas imágenes del conjunto de datos y otro tipo de defecto en otras imágenes y luego las envía todas como el mismo conjunto de datos de entrenamiento, esencialmente le enseñará a la IA un muy mal hábito. La red neuronal no extrapola a partir de ejemplos. Observa las marcas en la imagen, y esas marcas deben ser muy precisas para que la IA pueda aprender con patrones de entrenamiento muy claros.
Supongamos que desea detectar arañazos en una superficie de plástico, pero algunas muestras también tienen esquinas astilladas. Debes marcar los arañazos, dejando las esquinas dañadas sin ninguna anotación (y por lo tanto no enseñar a la IA que se trata de algún tipo de defecto) O entrenar un modelo que pueda reconocer dos clases diferentes de defectos: arañazos y esquinas dañadas. En el segundo escenario, debe marcar todos los arañazos como Defecto Uno y todas las esquinas astilladas como Defecto Dos. De esta manera, el modelo de Deep Learning, si se entrena adecuadamente, aprenderá a reconocer ambos defectos y podrá diferenciarlos. Sin embargo, nunca funcionará si simplemente marca todos los diferentes defectos dentro de la imagen como una clase y luego usa estas imágenes para el entrenamiento.
A diferencia de nuestro cerebro, los modelos de Deep Learning no son capaces de reconocer «un defecto» en su sentido general. Los humanos podemos hacer eso porque, como se mencionó anteriormente, hemos estado enseñando a nuestros cerebros a detectar cosas todos los días durante años. Sin embargo, los modelos de Deep Learning pueden identificar defectos como arañazos o elementos astillados perfectamente y mucho más rápido que nosotros, siempre que les enseñemos esta «habilidad» correctamente.
Hay, por supuesto, excepciones a esta regla (por ejemplo, la detección de anomalías, donde puede enseñar el modelo usando buenas muestras y el modelo detectará cualquier desviación del patrón aprendido). Pero si el modelo está entrenado en modo supervisado para reconocer un objeto determinado, debe asegurarse de que le proporciona los datos correctos y de que las anotaciones son correctas.
Entonces, ¿hay alguna regla o truco aquí?
Por supuesto que hay:
- Utiliza las herramientas de anotación adecuadas que puedan ayudarte a abordar el problema en cuestión. En algunos casos, el uso de la herramienta de pincel es mejor; en otros escenarios, un cuadro delimitador es más conveniente y apropiado. Por ejemplo, si desea que el modelo de Deep Learning detecte plátanos y crea cuadros delimitadores orientados, recuerde que los dos extremos de un plátano son diferentes. Por lo tanto, debe tener en cuenta la posible rotación de 180 grados. Sin embargo, si desea que detecte naranjas, debe cambiar la forma en que marca la imagen. Las naranjas no tienen orientación, por lo que es más apropiado un cuadro delimitador que no gire. Los arañazos o los pequeños defectos, como las virutas, funcionarán mejor con herramientas de anotación de estilo a mano alzada, como el pincel.
- Mantenga sus imágenes limpias y, haga lo que haga, no marque las imágenes con flechas o círculos para mostrar la ubicación de los defectos. Dichas muestras no tienen ningún valor para el entrenamiento (o las pruebas), ya que la red neuronal verá las marcas y emitirá juicios utilizándolas. Tampoco pienses en eliminar artificialmente estas partes en Photoshop. La red neuronal también lo detectará. Si alguien te envía imágenes con marcas defectuosas, lo mejor que puedes hacer es pedir imágenes limpias que puedas usar durante el entrenamiento.
Este blog es contribuido por Zebra Technologies.