Tuve una discusión interesante sobre la base de un proyecto en el que estábamos trabajando: ¿por qué usar un sistema de inspección visual CNN sobre un algoritmo de coincidencia de plantillas?
Antecedentes: había mostrado una demostración de un sistema simple de visión CNN (cámara web + computadora portátil) que detectaba si un tipo particular de objeto estaba "roto" / defectuoso o no, en este caso, una placa de circuito impreso de PCB. Mi modelo CNN mostró ejemplos de las placas de circuito apropiadas y rotas (aproximadamente 100 imágenes de cada una) en un fondo estático. Nuestro modelo utilizó las primeras capas conv / maxpool de VGG16 pre-entrenado (en imagenet), y luego agregamos algunas conv / pools más entrenables, con algunas densidades, lo que condujo a una salida vectorial codificada en caliente dim-3 one para la clasificación : (is_empty, has_good_product, has_defective_product).
El modelo se entrenó con bastante facilidad y alcanzó el 99% de validación sin problemas; También nos capacitamos con varios aumentos de datos, ya que sabemos que nuestro conjunto de datos era pequeño. En la práctica, funcionó aproximadamente 9 de cada 10 veces, pero algunas traducciones / rotaciones aleatorias de la misma placa de circuito ocasionalmente lo colocarían en la clase opuesta. Quizás un aumento de datos más agresivo habría ayudado. De todos modos, para un prototipo de proyecto conceptual estuvimos contentos.
Ahora estábamos presentando a otro ingeniero y su colega, y él planteó el argumento de que las NN son excesivas para esto, solo debería usar la coincidencia de plantillas, ¿por qué querría hacer CNN?
No teníamos una gran respuesta de por qué nuestro enfoque podría ser mejor en ciertas aplicaciones (por ejemplo, otras partes para inspeccionar). Algunos puntos que mencionamos:
1) Más robusto a las variaciones (por ejemplo, aumento de datos)
2) Puede aprender en línea para mejorar el sistema (por ejemplo, los humanos pueden decirle al software qué ejemplos se equivocaron)
3) No es necesario establecer umbrales como en los algoritmos de visión por computadora clásicos ¿Qué piensan ustedes, hay más ventajas para un sistema CNN para este tipo de tarea de inspección? ¿En qué casos sería mejor que la coincidencia de plantillas?
Algunas ideas aleatorias más sobre cuándo los NN profundos podrían ser la tecnología para el trabajo: para sistemas que requieren detección de profundidad 3D como parte de la entrada, o cualquier tipo de objeto que se pueda deformar / estirar / aplastar pero que aún sea "bueno" y no defectuoso (p. ej., un animal de peluche, cables, etc.) Curioso por escuchar tus pensamientos :)
Respuestas:
El ingeniero en cuestión que propuso métodos tradicionales de CV para su aplicación simplemente lo hizo por costumbre. El uso de la coincidencia de plantillas está extremadamente desactualizado y se ha demostrado que funciona muy mal. Sin embargo, creo que una CNN es excesiva dependiendo del tamaño de su conjunto de datos.
¿Cómo funciona la coincidencia de plantillas?
La coincidencia de plantillas desliza una ventana a través de su imagen que proporcionará un porcentaje de coincidencia con la plantilla. Si el porcentaje de coincidencia está por encima de cierto umbral predefinido, se supone que es una coincidencia. Por ejemplo, si tiene una imagen de un perro y desea determinar si hay un perro en la imagen, deslizaría una plantilla de perro por toda el área de la imagen y vería si hay una coincidencia porcentual suficientemente grande. Esto probablemente resultará en un rendimiento muy pobre porque requiere que la plantilla se superponga de manera idéntica a la imagen . ¿Cuál es la probabilidad de que en la práctica? No muy alto.
La única coincidencia de plantilla de tiempo es una técnica suficiente si sabe exactamente lo que está buscando y está seguro de que aparecerá de forma casi idéntica en cada ejemplo de una clase determinada.
¿Por qué utilizar el aprendizaje automático?
Las técnicas de aprendizaje automático no son rígidas. A diferencia de lo que dijo stmax, las CNN pueden generalizar muy bien un conjunto de datos . Por eso son tan poderosos. Usando el ejemplo del perro, la CNN no necesita ver una imagen de cada perro existente para comprender lo que constituye un perro. Puede mostrarle quizás 1000 imágenes de una búsqueda en Google, y luego el algoritmo podrá detectar que su perro, de hecho, es un perro. El hecho de que los algoritmos de aprendizaje automático se generalicen muy bien es la razón por la que reemplazaron todas las técnicas antiguas de CV. Ahora el problema es la cantidad de datos que necesita para entrenar a una CNN. Son extremadamente intensivos en datos .
No creo que 100 puntos de datos sean suficientes para entrenar a una CNN robusta. Debido a la profunda complejidad del modelo para limitar el sesgo, necesita aumentar su número de ejemplos. Por lo general, sugiero 100 ejemplos para cada característica para modelos profundos y 10 ejemplos para cada característica para modelos poco profundos. Realmente todo depende de tu espacio de características.
Lo que sugiero.
Lo que realmente está haciendo es la detección de anomalías . Tiene muchos ejemplos que se presentarán de PCB que de otro modo estarían en buen estado. Desea detectar aquellos que están rotos. Por lo tanto, intentaría algunos métodos de detección de anomalías. Son mucho más simples de implementar y puede obtener buenos resultados utilizando modelos poco profundos, especialmente en conjuntos de datos asimétricos (1 clase está sobre representada).
fuente
La respuesta depende de la tarea. La coincidencia de plantillas puede funcionar para algunas tareas pero no para todas. Las CNN potencialmente tienen la capacidad de generalizar a entradas invisibles que no coinciden con ninguna de sus plantillas, por lo que potencialmente pueden generalizar mejor.
Pero si las CNN superarán la coincidencia de plantillas dependerá de la tarea específica y de lo que específicamente esté tratando de lograr. Esta es una ciencia empírica; en última instancia, la forma de descubrir cuál funciona mejor es probarlos a ambos, o aprender de otros que los han probado (por ejemplo, leyendo la literatura). No creo que vaya a encontrar alguna teoría o taxonomía que sustituya a la evaluación empírica en datos del mundo real.
fuente
Un problema que puede encontrar con un NN (y otros métodos de clasificación) es que, dado que solo le ha mostrado ciertos defectos, es posible que no sepa cómo reaccionar ante defectos completamente nuevos / aún no vistos que podrían aparecer en el futuro.
Desea que el NN aprenda "cualquier cosa que no parezca una PCB no defectuosa es una PCB defectuosa". Pero, ¿qué pasa si ha aprendido que "todo lo que no parece una PCB defectuosa es una PCB no defectuosa"?
Puede intentar modificar algunas imágenes de PCB no defectuosas agregando un pequeño punto blanco (u otra pequeña perturbación) en ubicaciones aleatorias y hacer que la red neuronal clasifique estas imágenes modificadas. Definitivamente debería clasificarlos como defectuosos, ¿verdad? Pero probablemente extrañará algunos (o muchos) porque nunca antes había visto tales defectos.
Para detectar defectos completamente nuevos, los métodos de detección de anomalías / clasificadores de una clase podrían ser más ... confiables, porque deberían recoger cualquier cosa que nunca antes se haya visto.
Como dijo DW, solo tendrá que probar ambos métodos y descubrir cuál funciona mejor. ¡Solo asegúrese de tener un conjunto de prueba realmente bueno que también contenga defectos completamente nuevos!
fuente