Sensibilità convoluzionale della scala della rete neurale


11

Per esempio, supponiamo che stiamo costruendo uno stimatore di età, basato sull'immagine di una persona. Di seguito abbiamo due persone in giacca e cravatta, ma la prima è chiaramente più giovane della seconda.


(fonte: tinytux.com )

Ci sono molte caratteristiche che lo implicano, ad esempio la struttura del viso. Tuttavia la caratteristica più significativa è il rapporto tra la dimensione della testa e la dimensione del corpo :


(fonte: wikimedia.org )

Supponiamo quindi di aver addestrato una regressione della CNN per prevedere l'età della persona. In molti predittori di età che ho provato, l'immagine sopra del bambino sembra ingannare le previsioni nel pensare che sia più vecchio, a causa del seme e probabilmente perché si basano principalmente sul viso:

Mi chiedo quanto bene un'architettura vaniglia della CNN possa inferire il rapporto tra testa e busto?

Rispetto a un RCNN regionale, che è in grado di ottenere scatole di delimitazione sul corpo e sulla testa, la CNN vaniglia avrà sempre prestazioni peggiori?

Poco prima dell'appiattimento globale nella CNN vaniglia (cioè subito dopo tutte le convoluzioni), ogni uscita ha un campo ricettivo corrispondente, che dovrebbe avere un senso di scala. So che RCNN più veloce lo sfrutta facendo esattamente le proposte di box di delimitazione in questa fase, in modo che tutti i precedenti filtri convoluzionali si allenino automaticamente su tutte le scale.

Quindi, penso che la CNN vaniglia dovrebbe essere in grado di inferire il rapporto tra la testa e le dimensioni del busto? È giusto? In tal caso, è l'unico vantaggio dell'utilizzo di un framework RCNN più veloce per sfruttare il fatto che potrebbe essere stato pre-addestrato a rilevare le persone?


1
Sai dove fallisce esattamente il tuo ricongiungitore di età? Perché pensi che sia la proporzione della dimensione della testa? Hai visto l'output degli strati intermedi?
Aksakal,

@Aksakal Non credo che abbia sperimentato l'addestramento di una CNN. Da quello che ho capito, ha fatto dei test con i servizi web esistenti: "In molti predittori di età che ho provato [..]".
DeltaIV,

Risposte:


8

Innanzitutto, grazie per aver pubblicato una domanda molto interessante.

Per rispondere a breve, un convnet vaniglia addestrato end-2-end per prevedere l'età di una foto sarà generalmente incline a classificare erroneamente immagini come quella che hai pubblicato . In secondo luogo, notare che stimare con precisione l'età di una persona è un compito quasi impossibile 1 .

La principale differenza rispetto all'approccio proposto utilizzando alcuni rilevatori di oggetti (sia esso RCNN, Faster RCNN, YOLO o SSD) è che si utilizzano informazioni diverse per addestrare i modelli. La CNN è addestrata solo sulle immagini e deve scoprire da sola tutte le funzionalità necessarie. Molto probabilmente troverà varie caratteristiche facciali, ma dipenderà anche dall'abbigliamento e forse dalle caratteristiche della scena (i bambini potrebbero essere spesso nella foto con alcuni giocattoli, gli adulti saranno più probabili negli ambienti d'ufficio, ecc.). Queste funzionalità non saranno affidabili per il tuo controesempio.

D'altra parte, se si addestra la rete per rilevare esplicitamente gli oggetti come "torso" e "testa", si stanno fornendo ulteriori informazioni sul fatto che questi oggetti sono importanti per l'attività e quindi semplificano il problema 2 .

Mentre l'approccio del rilevamento di testa e busto e quindi la valutazione del rapporto dimensionale delle scatole di delimitazione suona interessante, posso vedere diversi ostacoli:

  1. Ottenimento di dati: non sono a conoscenza della disponibilità di set di dati di grandi dimensioni in cui sarebbero presenti sia i riquadri di età che i limiti.
  2. FOV imperfetto: nella maggior parte delle immagini (ad es. Entrambi i tuoi esempi), le persone non vengono visualizzate intere. Dovresti affrontare il fatto che le scatole di delimitazione del busto non sarebbero sempre perfette semplicemente perché una parte della persona non è nell'immagine e la rete dovrebbe indovinare quanto manca la parte (e le scatole di delimitazione della verità di base sarebbero la maggior parte probabilmente non acquisire queste informazioni). Inoltre, i suddetti rilevatori di oggetti non gestiscono sempre correttamente le previsioni degli oggetti parziali. Ciò potrebbe introdurre troppo rumore nel modello.
  3. Varie pose: il rapporto busto-testa sarebbe molto diverso per le persone viste frontalmente e lateralmente.
  4. Adulti: sembra che il rapporto funzioni bene per prevedere età comprese tra 0 e 21 anni, ma non vedo come sarebbe utile prevedere le età degli adulti (suppongo che il rapporto non cambi in età avanzata).

Tutti questi problemi suggeriscono che anche l'approccio del rapporto testa-busto non funzionerà perfettamente, anche se potrebbe essere più robusto per il tuo controesempio particolare.

Immagino che il modo migliore per eseguire questo compito sia quello di 1) rilevare il viso, 2) prevedere l'età solo dal raccolto del viso (rimuove informazioni potenzialmente fuorvianti). Si noti che alcune architetture simili a R-CNN che utilizzano il ROI-pooling potrebbero essere addestrate per fare questo end-2-end.


1 Anche usando metodi medici molto sofisticati (che sono probabilmente molto più istruttivi di una foto della persona) non è possibile farlo con precisione. Vedi questo thread Quora per maggiori informazioni .

2 Consulta l'articolo Questioni di conoscenza: importanza delle informazioni precedenti per l'ottimizzazione per un esempio di come fornire alcune conoscenze intermedie sull'attività può semplificare notevolmente l'apprendimento.


8

Le CNN sono una classe di modelli troppo grande per rispondere a questa domanda. LeNet, AlexNet, ZFNet e VGG16 si comporteranno in modo molto diverso rispetto a GoogLeNet, che è stato costruito appositamente per fare la maggior parte di ciò che fanno R-CNN, con un'architettura CNN (potresti conoscere GoogLeNet con il nome di Inception, anche se a rigor di termini Inception è solo l'unità di base (sottorete) su cui è costruito GoogLeNet). Infine, ResNets si comporterà diversamente. E tutte queste architetture non sono state costruite per classificare le classi di età, ma le classi di 1000 ImageNet, che non contengono classi di età per l'uomo. Si potrebbe usare l' apprendimento del trasferimento(se disponi di immagini di allenamento sufficienti) per allenare uno dei modelli addestrati ampiamente disponibili sopra e vedere come si comportano. In generale, tuttavia, soprattutto le architetture più vecchie (diciamo fino a VGG16) hanno difficoltà ad apprendere "caratteristiche globali" che richiedono di conoscere "testa" (già una caratteristica complessa), "torso" (un'altra caratteristica complessa) e il loro ratio (che richiede anche che le due caratteristiche siano in una certa relazione spaziale). Questo tipo di cose è ciò che Capsule Networks avrebbe dovuto essere in grado di fare.

Le Convnet sono nate per fare esattamente il contrario: essere sensibili alle caratteristiche locali e relativamente insensibili alla loro posizione / scala relativa. Un buon Convnet dovrebbe riconoscere "gatto bianco" se l'immagine è un primo piano o uno scatto americano. Combinando i livelli convoluzionali (che sono sensibili alle caratteristiche locali) con i livelli di pool (che rimuovono parte della sensibilità alle variazioni di scala o traduzione dell'immagine) si ottiene un'architettura che nella sua forma più elementare non è eccezionale nell'apprendimento del tipo di spazio relazioni tra oggetti che stai cercando. C'era un esempio da qualche parte (ma non riesco più a trovarlo) in cui, dopo aver diviso l'immagine di un gatto in varie tessere rettangolari non sovrapposte e averle unite in un ordine casuale, la CNN avrebbe continuato a identificare l'immagine comecat. Ciò indica che le CNN sono più sensibili alle funzionalità locali (trame o qualcosa del genere) rispetto alla relazione spaziale tra funzionalità di alto livello. Vedi anche il documento sulle reti di capsule per alcune discussioni su questo. Hinton ha anche mostrato un esempio di questo in un video sui limiti delle convnet .

La mia ipotesi selvaggia è che una delle recenti architetture sarebbe perfettamente in grado (dati sufficienti) di discernere gli uomini dai bambini, ma non a causa di una "soglia" su una relazione metrica tra caratteristiche di alto livello come "testa" e "torso" . Imparerebbe una certa regolarità statistica, forse completamente impercettibile per l'uomo, che separa le immagini degli adulti dalle immagini dei bambini nel set di addestramento.


Apprezzo la tua risposta, ma non riesco a concordare. Le architetture RCNN hanno essenzialmente la stessa struttura di filtri delle connessioni di oggetti, ad esempio VGG e Resnet. E poiché RCNN è in grado di rilevare la scala e la posizione relativa, ne consegue che VGG e Resnet dovrebbero anche essere in grado di rilevare la scala. Tuttavia, le architetture RCNN si basano su proposte box, di cui ne fanno migliaia per immagine, dopo di che viene valutata ogni proposta box. Quindi sembra che se includo almeno alcune di queste proposte, una CNN vaniglia dovrebbe rilevare meglio la scala. Non sono sicuro se sia necessario farlo.
Alex R.

RCNN non sono CNN. Non solo ti manca la ricerca selettiva per i box di delimitazione, ma perdi anche le fasi di SVM lineare e regressore del riquadro di selezione. Inoltre, esiste una grande differenza tra la capacità di rilevare la scala di AlexNet (che è la CNN utilizzata nel documento RCNN originale) o VGG e la capacità di GoogLeNet o ResNet: GoogLeNet è stata sviluppata proprio per fare ciò che RCNN fa. Penso che sia GoogLeNet che ResNet sarebbero in grado di classificare l'età, ma non c'è modo di sapere se lo farebbero usando una funzione che ha senso per noi (rapporto testa-torso) o trovando qualche statistica 1 /
DeltaIV del

2 / regolarità che un essere umano non avrebbe mai notato. Ti suggerirei di sperimentare e provare, ma purtroppo solo costruire il database di immagini sarebbe un progetto di ricerca in sé (a meno che tu non lavori in un'azienda di moda).
DeltaIV,

1
Mi scuso per la confusione. So che ci sono 20 diverse architetture RCNN là fuori, ognuna delle quali afferma che le altre sono obsolete.
Alex R.,

1
blog.piekniewski.info/2016/12/29/can-a-deep-net-see-a-cat Inoltre, un problema diverso, ma ancora legato alla corrispondenza delle trame, e da ricercatori più rispettati, arxiv.org/pdf/ 1703.06857
DeltaIV,

0

Bene, tutto dipende da come è costruito il tuo set di dati. Dalla mia esperienza, le reti neurali tendono a cercare spiegazioni più semplici. E inferire l'età dall'outfit è in realtà più semplice rispetto all'utilizzo del rapporto testa a corpo. Se puoi espandere il tuo set di dati tenendo presente questo, la CNN dovrebbe funzionare come previsto.

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.