Progetto di visione artificiale sviluppato da Soamee per un cliente industriale, oggi in produzione su linee di montaggio con macchinari reali. Un accordo di riservatezza ci impedisce di nominare il cliente.
In produzione e demo pubblica
Quello che vedi in questa pagina è una replica: l’abbiamo addestrata e valutata con un dataset pubblico. Schermate, immagini e metriche qui sotto provengono da lì. Il sistema del cliente funziona in produzione su linee di montaggio e, per l’accordo di riservatezza, non possiamo mostrarne nulla.
Una configurazione possibile comprende alimentatore vibrante, trasportatore, telecamere per testa e filetto e scarto pneumatico controllato da PLC. È un esempio di macchinari compatibili, non l’identificazione delle attrezzature del cliente.
Le immagini provengono dal M2 Screw Defect Detection Dataset, pubblicato da R. P. Prastio e R. W. Indrawan (Università Airlangga) con licenza CC BY 4.0: 5.536 foto di viti M2 scattate in una stazione di ispezione ottica.
La sfida
In una linea di viteria il controllo si fa di solito a campione: si prelevano alcuni pezzi per lotto e si verificano a mano o con un calibro. Una vite M2 misura due millimetri di diametro, e un difetto sul filetto o sulla testa si vede a fatica senza lente.
Il dataset fotografa ogni vite due volte: la testa dall’alto, su fondo nero, e il filetto di profilo, in controluce. Ogni foto è etichettata come OK o NG (difettosa). Nelle NG si vedono bave, filetti schiacciati, teste deformate o stampate male e macchie sul metallo.
Come l’abbiamo risolto
Ritaglio automatico
Nella foto originale la vite occupa pochissimo dell’inquadratura. Se si riduce l’immagine intera per darla a una rete neurale, il difetto sparisce. Per questo il primo passo individua la vite (la testa luminosa sul fondo nero, o la sagoma scura contro la luce) e ritaglia un quadrato attorno.
Un classificatore per zona
Abbiamo addestrato due reti ResNet-18, una per la testa e una per il filetto, partendo dai pesi pubblici di ImageNet. Ognuna impara da 1.700 foto e ne usa altre 300 per scegliere la versione migliore durante l’addestramento. Le foto di test degli autori (536 di testa e 1.000 di filetto) restano intatte fino alla fine.
Dove ha guardato il modello
Una rete che dice “NG” senza spiegare perché è difficile da difendere davanti a un responsabile qualità. Per ogni pezzo scartato calcoliamo una mappa Grad-CAM, che evidenzia la zona dell’immagine che ha pesato di più nella decisione. La dashboard la segna con un riquadro. Non è un contorno misurato del difetto: è un indizio che dice all’operatore dove guardare.

Architettura
Il modello esporta un JSON per lotto che alimenta una dashboard statica: foto ispezionate, pezzi scartati per zona, decisioni del modello rispetto all’etichetta reale e la galleria delle ispezioni, errori compresi.
Risultati della valutazione pubblica
Valutazione sulle 1.536 foto di test degli autori:
| Zona | Accuratezza | Rileva NG | Precisione NG | Buoni scartati | Foto |
|---|---|---|---|---|---|
| Testa | 95,9% | 95,7% | 96,4% | 3,9% | 536 |
| Filetto | 91,8% | 85,6% | 97,7% | 2,0% | 1.000 |
Nel complesso indovina il 93,2% delle foto e impiega tra 13 e 22 ms per foto su un portatile, senza GPU.
La testa funziona bene: di 279 viti difettose ne sfuggono 12, e di 257 buone ne scarta 10. Il filetto è più difficile. Scarta pochissime viti buone (10 su 500), ma lascia passare 72 difettose su 500. In una linea reale è quel numero che va abbassato, anche a costo di scartare qualche vite buona in più: abbassare la soglia di decisione, aggiungere una seconda vista del filetto o migliorare l’illuminazione del profilo.
La galleria delle ispezioni mostra anche questi errori, con l’etichetta reale accanto al verdetto del modello.
Cosa si costruisce sopra
Il modello è il cuore, ma in fabbrica lo si usa attraverso delle schermate. Queste tre funzionano con i risultati del lotto di test.

Postazione operatore. Il verdetto si legge da due metri, con la zona su cui si è concentrato il modello e la sua confidenza. L’operatore conferma lo scarto con un tasto o manda il pezzo in revisione se pensa che sia buono. La qualità riceve un avviso quando la quota di difettosi che passano come buoni supera il limite accettabile, come il 14,4% del filetto in questo lotto.

Revisione e riaddestramento. I pezzi con confidenza bassa e gli errori del modello formano una coda che la qualità rivede: in questo lotto sono 104 foto, 82 di filetto e 22 di testa. Con queste si addestra una nuova versione, che sostituisce quella in linea solo se migliora sullo stesso test.

Qualità per zona. Accuratezza e scarti di testa e filetto, il dettaglio delle decisioni del modello e gli errori concreti da rivedere. La fase successiva è collegare lo scarto al PLC della linea e portare i NOK su MES ed ERP. Questa integrazione con PLC l’abbiamo già in produzione in un progetto che non possiamo pubblicare per motivi di riservatezza.
Prima di portarlo in un altro ambiente
- Foto della linea del cliente: con la sua telecamera, la sua illuminazione e i suoi difetti. Un modello addestrato con le foto di un’altra stazione non si può installare così com’è.
- Una soglia decisa con la qualità: quanto costa un pezzo difettoso che arriva al cliente rispetto a uno buono scartato. Da lì si sceglie il punto di taglio.
- Integrazione con la linea: scatto della telecamera sincronizzato con il trasportatore e un segnale al PLC per deviare il pezzo scartato.
Partiamo sempre con una fase di fattibilità in stabilimento: qualche settimana a fotografare pezzi reali prima di impegnarci su cifre di rilevamento.
Stack tecnico
| Componente | Tecnologia |
|---|---|
| Ritaglio | Python, OpenCV |
| Classificazione | PyTorch, ResNet-18 riaddestrata (testa e filetto) |
| Spiegazione | Grad-CAM |
| Valutazione | Foto di test degli autori, non usate nell’addestramento |
| Dashboard | HTML statico, Chart.js |
Foto: M2 Screw Defect Detection Dataset, R. P. Prastio e R. W. Indrawan, Università Airlangga (2026), doi:10.17632/2y6mcsyrpy.2, CC BY 4.0. Ritagliate per l’addestramento e la galleria.
Come lavoriamo
Ogni progetto segue il nostro processo artigianale, adattato alle esigenze specifiche di ogni cliente.
Discovery & Requisiti
Immersione nel business, utenti e obiettivi. Workshop di ideazione, ricerca di mercato e definizione dell'ambito MVP.
Design & Architettura
Wireframe, prototipi interattivi e architettura tecnica. Validazione con il cliente prima di scrivere codice.
Sviluppo & Testing
Sprint di 2 settimane con demo. CI/CD, code review e testing continuo. Feedback a ogni iterazione.
Consegna & Evoluzione
Deploy in produzione, monitoraggio e supporto. Metriche post-lancio e roadmap di miglioramenti continui.