Proyecto de visión por computador desarrollado por Soamee para un cliente industrial, hoy en producción en líneas de montaje con maquinaria real. Un acuerdo de confidencialidad nos impide nombrar al cliente.
En producción y demo pública
Lo que ves en esta página es una réplica: la hemos entrenado y evaluado con un dataset público. Las pantallas, imágenes y métricas de abajo salen de ahí. El sistema del cliente funciona en producción en líneas de montaje y, por el acuerdo de confidencialidad, no podemos mostrar nada de él.
Una configuración posible es un alimentador vibratorio de tornillos, un transportador, cámaras de cabeza y perfil y un expulsor neumático gobernado por PLC. Es un ejemplo de maquinaria compatible, no la identificación de los equipos del cliente.
Las imágenes son del M2 Screw Defect Detection Dataset, publicado por R. P. Prastio y R. W. Indrawan (Universidad Airlangga) con licencia CC BY 4.0: 5.536 fotos de tornillos M2 tomadas en una estación de inspección óptica.
El reto
En una línea de tornillería la inspección suele hacerse por muestreo: se sacan unas cuantas piezas por lote y se revisan a mano o con galga. Un tornillo M2 mide dos milímetros de diámetro, y un defecto en la rosca o en la cabeza no se ve a simple vista sin lupa.
El dataset fotografía cada tornillo dos veces: la cabeza desde arriba, sobre fondo negro, y la rosca de perfil, a contraluz. Cada foto viene marcada como OK o NG (defectuosa). En las NG se ven rebabas, filetes aplastados, cabezas deformadas o mal estampadas y manchas en el metal.
Cómo lo hemos resuelto
Recorte automático
En la foto original el tornillo ocupa muy poco del encuadre. Si se reduce la imagen entera para dársela a una red neuronal, el defecto desaparece. Por eso el primer paso localiza el tornillo (la cabeza brillante sobre el fondo negro, o la silueta oscura sobre la luz) y recorta un cuadrado a su alrededor.
Un clasificador por zona
Entrenamos dos redes ResNet-18, una para la cabeza y otra para la rosca, partiendo de los pesos públicos de ImageNet. Cada una aprende con 1.700 fotos y usa otras 300 para elegir la mejor versión durante el entrenamiento. Las fotos de test de los autores (536 de cabeza y 1.000 de rosca) no se tocan hasta el final.
Dónde ha mirado el modelo
Una red que dice “NG” sin explicar por qué es difícil de defender ante un responsable de calidad. Para cada pieza rechazada calculamos un mapa Grad-CAM, que señala la zona de la imagen que más ha pesado en la decisión. El dashboard la marca con una caja. No es un contorno medido del defecto: es una pista para que el operario sepa dónde mirar.

Arquitectura
El modelo exporta un JSON por lote que alimenta un dashboard estático: fotos inspeccionadas, piezas rechazadas por zona, decisiones del modelo frente a la etiqueta real y la galería de inspecciones, errores incluidos.
Resultados de la evaluación pública
Evaluación sobre las 1.536 fotos de test de los autores:
| Zona | Acierto | Detecta NG | Precisión NG | Buenos rechazados | Fotos |
|---|---|---|---|---|---|
| Cabeza | 95,9% | 95,7% | 96,4% | 3,9% | 536 |
| Rosca | 91,8% | 85,6% | 97,7% | 2,0% | 1.000 |
En conjunto acierta el 93,2% de las fotos y tarda entre 13 y 22 ms por foto en un portátil, sin GPU.
La cabeza funciona bien: de 279 tornillos defectuosos se escapan 12, y de 257 buenos rechaza 10. La rosca es más difícil. Rechaza muy pocos tornillos buenos (10 de 500), pero deja pasar 72 de 500 defectuosos. En una línea real ese es el número que habría que bajar, aunque sea a costa de rechazar algún tornillo bueno de más: bajar el umbral de decisión, añadir una segunda vista de la rosca o mejorar la iluminación del perfil.
La galería de inspecciones enseña también estos errores, con la etiqueta real al lado del veredicto del modelo.
Lo que se construye encima
El modelo es la pieza central, pero en una fábrica se usa a través de pantallas. Estas tres funcionan con los resultados del lote de test.

Puesto de operario. El veredicto se lee a dos metros, con la zona en la que se fijó el modelo y su confianza. El operario confirma el rechazo con una tecla o manda la pieza a revisión si cree que está bien. Calidad recibe un aviso cuando la tasa de defectuosos que pasan como buenos supera lo aceptable, como el 14,4% de la rosca en este lote.

Revisión y reentrenamiento. Las piezas con confianza baja y los errores del modelo forman una cola que revisa calidad: en este lote son 104 fotos, 82 de rosca y 22 de cabeza. Con ellas se entrena una versión nueva, que solo sustituye a la de la línea si mejora en el mismo test.

Calidad por zona. Acierto y rechazos de cabeza y rosca, el desglose de decisiones del modelo y los errores concretos para revisarlos. La siguiente fase es conectar el rechazo con el PLC de la línea y llevar los NOK al MES y al ERP. Esa integración con PLC ya la tenemos funcionando en producción en un proyecto que no podemos publicar por confidencialidad.
Antes de llevarlo a otro entorno
- Fotos de la línea del cliente: con su cámara, su iluminación y sus defectos. Un modelo entrenado con las fotos de otra estación no se puede instalar tal cual.
- Umbral decidido con calidad: cuánto cuesta un defectuoso que llega al cliente frente a un bueno que se descarta. Con eso se elige el punto de corte.
- Integración con la línea: disparo de la cámara sincronizado con el transportador y una señal al PLC para apartar la pieza rechazada.
Lo planteamos siempre con una fase de viabilidad en planta: unas semanas fotografiando piezas reales antes de comprometer cifras de detección.
Stack técnico
| Pieza | Tecnología |
|---|---|
| Recorte | Python, OpenCV |
| Clasificación | PyTorch, ResNet-18 ajustada (cabeza y rosca) |
| Explicación | Grad-CAM |
| Evaluación | Fotos de test de los autores, sin uso en el entrenamiento |
| Dashboard | HTML estático, Chart.js |
Fotos: M2 Screw Defect Detection Dataset, R. P. Prastio y R. W. Indrawan, Universidad Airlangga (2026), doi:10.17632/2y6mcsyrpy.2, CC BY 4.0. Recortadas para el entrenamiento y la galería.
Cómo trabajamos
Cada proyecto sigue nuestro proceso artesanal, adaptado a las necesidades específicas del cliente.
Discovery & Requisitos
Inmersión en negocio, usuarios y objetivos. Workshops de ideación, research de mercado y alcance MVP.
Diseño & Arquitectura
Wireframes, prototipos interactivos y arquitectura técnica. Validación con cliente antes de escribir código.
Desarrollo & Testing
Sprints de 2 semanas con demos. CI/CD, code review y testing continuo. Feedback en cada iteración.
Entrega & Evolución
Deploy a producción, monitorización y soporte. Métricas post-lanzamiento y roadmap de mejoras.