Projeto de visão por computador desenvolvido pela Soamee para um cliente industrial, hoje em produção em linhas de montagem com maquinaria real. Um acordo de confidencialidade impede-nos de nomear o cliente.
Em produção e demo pública
O que vê nesta página é uma réplica: foi treinada e avaliada com um dataset público. Os ecrãs, imagens e métricas abaixo vêm daí. O sistema do cliente funciona em produção em linhas de montagem e, pelo acordo de confidencialidade, não podemos mostrar nada dele.
Uma configuração possível inclui alimentador vibratório, transportador, câmaras de cabeça e perfil e rejeição pneumática controlada por PLC. É um exemplo de maquinaria compatível, não a identificação dos equipamentos do cliente.
As imagens são do M2 Screw Defect Detection Dataset, publicado por R. P. Prastio e R. W. Indrawan (Universidade Airlangga) com licença CC BY 4.0: 5.536 fotografias de parafusos M2 tiradas numa estação de inspeção ótica.
O desafio
Numa linha de parafusos, a inspeção costuma fazer-se por amostragem: retiram-se algumas peças por lote e verificam-se à mão ou com calibre. Um parafuso M2 tem dois milímetros de diâmetro, e um defeito na rosca ou na cabeça mal se vê sem lupa.
O dataset fotografa cada parafuso duas vezes: a cabeça vista de cima, sobre fundo preto, e a rosca de perfil, em contraluz. Cada fotografia está marcada como OK ou NG (defeituosa). Nas NG veem-se rebarbas, filetes esmagados, cabeças deformadas ou mal estampadas e manchas no metal.
Como o resolvemos
Recorte automático
Na fotografia original, o parafuso ocupa muito pouco do enquadramento. Se a imagem inteira for reduzida para a dar a uma rede neuronal, o defeito desaparece. Por isso, o primeiro passo localiza o parafuso (a cabeça brilhante sobre o fundo preto, ou a silhueta escura contra a luz) e recorta um quadrado à sua volta.
Um classificador por zona
Treinámos duas redes ResNet-18, uma para a cabeça e outra para a rosca, a partir dos pesos públicos do ImageNet. Cada uma aprende com 1.700 fotografias e usa outras 300 para escolher a melhor versão durante o treino. As fotografias de teste dos autores (536 de cabeça e 1.000 de rosca) não se tocam até ao fim.
Onde olhou o modelo
Uma rede que diz “NG” sem explicar porquê é difícil de defender perante um responsável de qualidade. Para cada peça rejeitada calculamos um mapa Grad-CAM, que assinala a zona da imagem que mais pesou na decisão. O dashboard marca-a com uma caixa. Não é um contorno medido do defeito: é uma pista para o operador saber onde olhar.

Arquitetura
O modelo exporta um JSON por lote que alimenta um dashboard estático: fotografias inspecionadas, peças rejeitadas por zona, decisões do modelo face à etiqueta real e a galeria de inspeções, erros incluídos.
Resultados da avaliação pública
Avaliação sobre as 1.536 fotografias de teste dos autores:
| Zona | Acerto | Deteta NG | Precisão NG | Bons rejeitados | Fotos |
|---|---|---|---|---|---|
| Cabeça | 95,9% | 95,7% | 96,4% | 3,9% | 536 |
| Rosca | 91,8% | 85,6% | 97,7% | 2,0% | 1.000 |
No conjunto acerta em 93,2% das fotografias e demora entre 13 e 22 ms por fotografia num portátil, sem GPU.
A cabeça funciona bem: de 279 parafusos defeituosos escapam 12, e de 257 bons rejeita 10. A rosca é mais difícil. Rejeita muito poucos parafusos bons (10 em 500), mas deixa passar 72 de 500 defeituosos. Numa linha real, é esse o número a baixar, mesmo que à custa de rejeitar algum parafuso bom a mais: baixar o limiar de decisão, acrescentar uma segunda vista da rosca ou melhorar a iluminação do perfil.
A galeria de inspeções mostra também estes erros, com a etiqueta real ao lado do veredicto do modelo.
O que se constrói por cima
O modelo é a peça central, mas numa fábrica usa-se através de ecrãs. Estes três funcionam com os resultados do lote de teste.

Posto do operador. O veredicto lê-se a dois metros, com a zona em que o modelo se fixou e a sua confiança. O operador confirma a rejeição com uma tecla ou envia a peça para revisão se achar que está boa. A qualidade recebe um aviso quando a taxa de defeituosos que passam como bons ultrapassa o aceitável, como os 14,4% da rosca neste lote.

Revisão e retreino. As peças com confiança baixa e os erros do modelo formam uma fila que a qualidade revê: neste lote são 104 fotografias, 82 de rosca e 22 de cabeça. Com elas treina-se uma versão nova, que só substitui a da linha se melhorar no mesmo teste.

Qualidade por zona. Acerto e rejeições de cabeça e rosca, a decomposição das decisões do modelo e os erros concretos para os rever. A fase seguinte é ligar a rejeição ao PLC da linha e levar os NOK ao MES e ao ERP. Essa integração com PLC já a temos a funcionar em produção num projeto que não podemos publicar por confidencialidade.
Antes de o levar para outro ambiente
- Fotografias da linha do cliente: com a sua câmara, a sua iluminação e os seus defeitos. Um modelo treinado com fotografias de outra estação não se pode instalar tal como está.
- Limiar decidido com a qualidade: quanto custa um defeituoso que chega ao cliente face a um bom que se descarta. Com isso escolhe-se o ponto de corte.
- Integração com a linha: disparo da câmara sincronizado com o transportador e um sinal ao PLC para desviar a peça rejeitada.
Começamos sempre com uma fase de viabilidade na fábrica: algumas semanas a fotografar peças reais antes de nos comprometermos com números de deteção.
Stack técnico
| Componente | Tecnologia |
|---|---|
| Recorte | Python, OpenCV |
| Classificação | PyTorch, ResNet-18 ajustada (cabeça e rosca) |
| Explicação | Grad-CAM |
| Avaliação | Fotografias de teste dos autores, sem uso no treino |
| Dashboard | HTML estático, Chart.js |
Fotografias: M2 Screw Defect Detection Dataset, R. P. Prastio e R. W. Indrawan, Universidade Airlangga (2026), doi:10.17632/2y6mcsyrpy.2, CC BY 4.0. Recortadas para o treino e a galeria.
Como trabalhamos
Cada projeto segue o nosso processo artesanal, adaptado as necessidades especificas de cada cliente.
Discovery & Requisitos
Imersao no negócio, utilizadores e objetivos. Workshops de ideação, pesquisa de mercado e definição do escopo MVP.
Design & Arquitetura
Wireframes, protótipos interativos e arquitetura técnica. Validação com cliente antes de escrever código.
Desenvolvimento & Testing
Sprints de 2 semanas com demos. CI/CD, code review e testing contínuo. Feedback em cada iteração.
Entrega & Evolução
Deploy em produção, monitorização e suporte. Métricas pos-lançamento e roadmap de melhorias contínuas.