OpenCV è arrivato alla versione 1.0 questo mese, e con essa l’ispezione visiva automatica in linea di produzione smette di dipendere da una libreria proprietaria a ogni passaggio. La pipeline tipica del controllo qualità — acquisizione, estrazione di feature, classificazione, decisione di scarto — si compone ora con software il cui codice si legge, si modifica e si riproduce su hardware commodity.
Contesto
L’ispezione di superfici e parti meccaniche in linea è stata a lungo terreno di sistemi chiusi: telecamera, illuminatore e software venduti come blocco sigillato, tarati dal fornitore, difficili da adattare quando cambia il pezzo o il difetto da cercare. Il costo non è solo la licenza. È che non si riesce a ispezionare l’algoritmo: quando il sistema scarta un pezzo buono o lascia passare un difetto, l’operatore non ha modo di sapere su quale feature si sia fondata la decisione.
Il riconoscimento di pattern applicato alla qualità è, in sostanza, un problema di classificazione supervisionata. Si acquisisce un’immagine del pezzo, se ne ricava una rappresentazione numerica, e si decide se quella rappresentazione cade nella regione “conforme” o “difettosa” di uno spazio di feature. I tre passaggi — rappresentazione, addestramento, decisione — si scompongono con nettezza, e ognuno ha oggi un’implementazione aperta consolidata.
Architettura
Il primo passaggio è la rappresentazione. Per i difetti superficiali (graffi, porosità, inclusioni) la scelta storica sono le feature di Haar calcolate sull’immagine integrale, l’approccio che Viola e Jones descrivono nel 2001 per il rilevamento dei volti e poi esteso a oggetti qualsiasi. L’immagine integrale rende il calcolo di una feature rettangolare indipendente dalla sua dimensione: tre somme per qualunque finestra. Per riconoscere parti in posizione e orientamento variabili, i descrittori SIFT (Scale Invariant Feature Transform) di Lowe, pubblicati nel 2004, danno punti caratteristici stabili rispetto a scala e rotazione — utili quando il pezzo non arriva sempre allo stesso modo sotto la telecamera.
Il secondo passaggio è la classificazione. Qui entra LIBSVM, la libreria di support vector machine di Chang e Lin disponibile dal 2001, che copre il caso comune: dato un vettore di feature, decidere fra due o più classi con un margine massimizzato. Nel rilevamento difetti il problema è quasi sempre sbilanciato — i pezzi buoni sono la maggioranza schiacciante — e la formulazione one-class SVM, anch’essa in LIBSVM, addestra il sistema sui soli esempi conformi e tratta il difetto come deviazione dalla distribuzione appresa. Si evita così di raccogliere un campione rappresentativo di ogni difetto possibile, cosa che in produzione riesce di rado.
Il terzo passaggio, la decisione di scarto, è il punto in cui il sistema tocca il processo produttivo: una soglia sul punteggio del classificatore, un tempo di ciclo da rispettare, un attuatore che separa il pezzo. OpenCV 1.0 fornisce l’acquisizione, le primitive di pre-elaborazione (filtri, soglie, morfologia) e il classificatore a cascata di Viola-Jones, addestrabile con gli strumenti inclusi. La cascata serve proprio perché ordina i classificatori per complessità crescente: la maggior parte delle finestre conformi cade ai primi stadi, quelli economici, e solo le candidate sospette arrivano agli stadi costosi. Su una linea con tempo di ciclo stretto è questa asimmetria a rendere il rilevamento sostenibile in tempo reale.
Punto critico
La precisione del sistema non si perde nel classificatore, ma a monte, nell’acquisizione. Una SVM addestrata su immagini ben illuminate degrada in silenzio quando l’illuminazione deriva: il vettore di feature si sposta, il punto attraversa il confine di decisione, e il sistema scarta pezzi buoni senza segnalare alcun errore. Il classificatore non sa distinguere fra “pezzo difettoso” e “immagine acquisita in condizioni diverse da quelle di addestramento”. In entrambi i casi quel che produce è un vettore lontano dalla regione conforme.
Questo sposta il problema dell’affidabilità dall’algoritmo all’apparato di acquisizione e alla disciplina con cui si addestra. Un illuminatore stabile, una geometria di ripresa fissa e un protocollo che riaddestra quando cambia il lotto pesano più della scelta fra un kernel SVM e un altro. Il vantaggio degli strumenti aperti, qui, è diagnostico: quando il tasso di falsi scarti sale, si guarda il vettore di feature dei pezzi rifiutati e si verifica se la deriva è nell’immagine o nel pezzo. Con un sistema sigillato questa verifica non si può fare.
Implicazioni
La componibilità cambia chi può costruire e mantenere un sistema di ispezione. Con OpenCV, LIBSVM e descrittori documentati in letteratura, una pipeline di rilevamento difetti diventa un progetto che chi conosce il processo produttivo può mettere insieme da sé, anziché un acquisto da un solo fornitore. La conoscenza del dominio — quali difetti interessano, quale tasso di falsi scarti si tollera, quando il pezzo è cambiato abbastanza da imporre un riaddestramento — resta in azienda invece di finire dentro un eseguibile opaco.
La riproducibilità ha una seconda conseguenza, sulla validazione. Un sistema costruito con componenti aperti si verifica in modo indipendente: si ripercorre la pipeline su un campione noto, si confrontano le decisioni con il giudizio umano, si misura il tasso di falsi positivi e falsi negativi su dati tracciabili. Per un controllo qualità che deve rispondere delle proprie decisioni — verso un cliente, un audit, una non conformità contestata — quella tracciabilità è un requisito, non un dettaglio implementativo.
Limiti
Gli strumenti aperti coprono la pipeline, non la calibrazione. SIFT è coperto da brevetto e il suo uso commerciale richiede cautela, a prescindere dalla disponibilità del codice. La cascata di Viola-Jones vuole migliaia di esempi etichettati per stadio e un addestramento che, sull’hardware del 2006, si misura in ore o giorni. La one-class SVM riduce il fabbisogno di esempi difettosi ma resta sensibile alla scelta dei parametri, e una taratura sbagliata produce un sistema che scarta troppo o troppo poco, con l’errore che non si vede prima della produzione. Nessuno di questi strumenti sostituisce la fase, manuale e specifica per il pezzo, in cui si decide cosa vale come difetto. È quella decisione, non la libreria, a stabilire se l’ispezione automatica regge.
Come questi componenti si montino in un controllo qualità industriale reale è raccontato in un insight noze sul rilevamento difetti in linea: https://www.noze.it/insights/pattern-recognition/.
- https://opencv.org/
- https://www.cs.cmu.edu/~efros/courses/LBMV07/Papers/viola-cvpr-01.pdf
- https://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf
- https://www.csie.ntu.edu.tw/~cjlin/libsvm/
Immagine di copertina: Foto di gruppo in bianco e nero con riquadri rettangolari sovrapposti attorno a ciascun volto, prodotti dal rilevatore di volti di… — foto di Sylenius, pubblico dominio — https://commons.wikimedia.org/wiki/File:Face_detection_example_openCV.jpg