Perché utilizzare NN convoluzionali per un'attività di ispezione visiva rispetto alla classica corrispondenza del modello CV?


9

Ho avuto un'interessante discussione sulla base di un progetto a cui stavamo lavorando: perché usare un sistema di ispezione visiva della CNN su un algoritmo di corrispondenza dei modelli?

Sfondo: avevo mostrato una demo di un semplice sistema di visione della CNN (webcam + laptop) che rilevava se un particolare tipo di oggetto era "rotto" / difettoso o no - in questo caso, un circuito stampato PCB. Al mio modello CNN sono stati mostrati esempi dei circuiti stampati corretti (circa 100 immagini di ciascuno) su uno sfondo statico. Il nostro modello ha utilizzato i primi pochi strati conv / maxpool di VGG16 pre-addestrato (su imagenet), e quindi abbiamo aggiunto alcuni conv / trains più allenabili, con alcuni dense, portando a un dim-3 un output vettoriale codificato a caldo per la classificazione : (is_empty, has_good_product, has_defective_product).

Il modello si è allenato abbastanza facilmente e ha raggiunto la validazione del 99% senza problemi; ci siamo anche allenati con vari miglioramenti dei dati poiché sappiamo che il nostro set di dati era piccolo. In pratica, ha funzionato circa 9 volte su 10, ma alcune traduzioni / rotazioni casuali dello stesso circuito stampato lo avrebbero occasionalmente inserito nella classe opposta. Forse un aumento dei dati più aggressivo avrebbe aiutato. Ad ogni modo, per un prototipo di progetto concettuale eravamo felici.

Ora ci stavamo presentando a un altro ingegnere e al suo collega, e ha sollevato l'argomento secondo cui le NN sono eccessive per questo, dovrebbe semplicemente usare la corrispondenza dei modelli, perché si vorrebbe fare delle CNN?

Non abbiamo avuto un'ottima risposta sul perché il nostro approccio potrebbe essere migliore in alcune applicazioni (ad esempio altre parti da ispezionare). Alcuni punti che abbiamo sollevato:

1) Più robusto per le invarianti (ad es. Aumento dei dati)

2) Può fare apprendimento online per migliorare il sistema (es. Umano può dire al software quali esempi ha sbagliato)

3) Non c'è bisogno di fissare soglie come nei classici algoritmi di visione artificiale Cosa ne pensate, ci sono più vantaggi per un sistema CNN per questo tipo di attività di ispezione? In quali casi sarebbe meglio della corrispondenza dei modelli?

Alcune idee casuali in più su quando le NN profonde potrebbero essere la tecnologia per il lavoro: per i sistemi che richiedono il rilevamento della profondità 3D come parte dell'input o qualsiasi tipo di oggetto che può essere deformato / allungato / schiacciato ma che è ancora "buono" e non difettoso (ad esempio un animale impagliato, fili, ecc.). Curioso di sentire i tuoi pensieri :)


Mi piacciono gli approcci al deep learning e so che sono il futuro. Tuttavia, quando hai bisogno di risultati di alta precisione, diciamo rotazione esatta e scala esatta, la corrispondenza del modello offre comunque risultati migliori. Sto parlando di un errore del fattore di scala di 0,1 gradi o inferiore. L'apprendimento profondo continua a darti una "probabilità" di quello che è probabilmente il risultato "migliore", quindi non è sufficiente quando è richiesta un'alta precisione. Mi piacerebbe trovare un modo per ottenere tale precisione utilizzando l'apprendimento profondo, ma non riesco ancora a trovare alcun algoritmo per corrispondenza del modello ad alta precisione con l'apprendimento profondo. Sono aperto a qualsiasi opinione / suggerimento o
Pablo Gonzalez,

Risposte:


3

L'ingegnere in questione che ha proposto metodi CV tradizionali per la tua applicazione lo ha fatto semplicemente per abitudine. L'uso della corrispondenza dei modelli è estremamente obsoleto e ha dimostrato di avere prestazioni molto scarse. Tuttavia, penso che una CNN sia eccessiva a seconda delle dimensioni del set di dati.

Come funziona la corrispondenza dei modelli?

La corrispondenza dei modelli fa scorrere una finestra sull'immagine che fornirà una corrispondenza percentuale con il modello. Se la corrispondenza percentuale supera una determinata soglia predefinita, si presume che corrisponda. Ad esempio, se si dispone di un'immagine di un cane e si desidera determinare se nell'immagine è presente un cane, è possibile far scorrere un modello di cane sull'intera area dell'immagine e vedere se esiste una corrispondenza percentuale sufficientemente grande. Ciò comporterà probabilmente prestazioni molto scadenti perché richiede che il modello si sovrapponga in modo identico all'immagine . Qual è la probabilità di ciò nella pratica? Non molto alto.

L'unica corrispondenza temporale tra modelli è una tecnica sufficiente se sai esattamente cosa stai cercando e sei sicuro che apparirà quasi identico in ogni esempio di una determinata classe.

Perché usare invece l'apprendimento automatico?

Le tecniche di apprendimento automatico non sono rigide. A differenza di quanto affermato da stmax, le CNN sono in grado di generalizzare molto bene un set di dati . Ecco perché sono così potenti. Utilizzando l'esempio del cane, la CNN non ha bisogno di vedere un'immagine di ogni cane esistente per capire cosa costituisce un cane. Puoi mostrarlo forse 1000 immagini da una ricerca su Google, e quindi l'algoritmo sarà in grado di rilevare che il tuo cane, in realtà è un cane. Il fatto che gli algoritmi di apprendimento automatico si generalizzino molto bene è il motivo per cui hanno sostituito tutte le antiche tecniche CV. Ora il problema è la quantità di dati necessari per addestrare una CNN. Sono ad alta intensità di dati .

Non credo che 100 punti dati siano sufficienti per formare una solida CNN. A causa della profonda complessità del modello al fine di limitare la distorsione, è necessario aumentare il numero di esempi. Di solito suggerisco 100 esempi per ogni caratteristica per i modelli profondi e 10 esempi per ogni caratteristica per i modelli superficiali. Dipende davvero tutto dal tuo spazio-funzionalità.

Quello che suggerisco.

Quello che stai veramente facendo è il rilevamento delle anomalie . Hai molti esempi che verranno presentati su PCB che altrimenti sarebbero in buone condizioni. Vuoi rilevare quelli che sono rotti. Quindi tenterei invece alcuni metodi di rilevamento delle anomalie. Sono molto più semplici da implementare e puoi ottenere buoni risultati usando modelli poco profondi, specialmente nei set di dati distorti (1 classe è sopra rappresentata).


Grazie per il tuo commento completo! Potete fornire esempi di progetti o articoli che spiegano (e possibilmente dimostrano) il rilevamento di anomalie? Saluti
JDS

1
Ecco una rassegna della letteratura sul rilevamento di anomalie V. Chandola, A. Banerjee e V. Kumar, "Rilevamento di anomalie: un sondaggio", ACM Computing Surveys, vol. 41, n. 3, p. 15, 2009.
JahKnows

5

La risposta dipende dall'attività. La corrispondenza dei modelli può funzionare per alcune attività ma non per tutte. Le CNN potenzialmente hanno la possibilità di generalizzare per input invisibili che non corrispondono a nessuno dei tuoi modelli, quindi possono potenzialmente generalizzare meglio.

Ma se le CNN batteranno la corrispondenza dei modelli dipenderà dall'attività specifica e da ciò che specificamente stai cercando di ottenere. Questa è una scienza empirica; alla fine, il modo in cui scopri quale funziona meglio è provarli entrambi o imparare da altri che li hanno provati (ad esempio, leggendo la letteratura). Non credo che troverai qualche teoria o tassonomia che sostituirà la valutazione empirica sui dati del mondo reale.


5

Un problema che potresti incontrare con un NN (e altri metodi di classificazione) è che dal momento che gli hai mostrato solo alcuni difetti, potrebbe non sapere come reagire a difetti completamente nuovi / ancora invisibili che potrebbero apparire in futuro.

Volete che l'NN apprenda "tutto ciò che non sembra un PCB non difettoso è un PCB difettoso". Ma cosa succede se ha imparato "tutto ciò che non sembra un PCB difettoso è un PCB non difettoso"?

Potresti provare a modificare alcune immagini di PCB non difettosi aggiungendo un piccolo punto bianco (o un'altra piccola perturbazione) a loro in posizioni casuali e facendo classificare la rete neurale queste immagini modificate. Dovrebbe sicuramente classificarli come difettosi, giusto? Ma probabilmente ne mancheranno alcuni (o parecchi) perché non ha mai visto tali difetti prima.

Per rilevare difetti completamente nuovi, i metodi di rilevamento delle anomalie / i classificatori di una classe potrebbero essere più .. affidabili, perché dovrebbero raccogliere tutto ciò che non è mai stato visto prima.

Come ha detto DW, dovrai solo provare entrambi i metodi e scoprire quale funziona meglio. Assicurati di avere un set di test davvero buono che contenga anche difetti completamente nuovi!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.