Innovazioni del modello di rete neurale convoluzionale per la classificazione delle immagini
Ultimo aggiornamento il 5 luglio 2019
Una delicata introduzione alle innovazioni nelle reti neurali convoluzionali LeNet, AlexNet, VGG, Inception e ResNet.
Le reti neurali convoluzionali sono composte da due elementi molto semplici, ovvero livelli convoluzionali e livelli di pooling.
Anche se semplice, ci sono modi quasi infiniti per organizzare questi livelli per un dato problema di visione artificiale.,
Fortunatamente, ci sono sia modelli comuni per la configurazione di questi livelli e innovazioni architettoniche che è possibile utilizzare al fine di sviluppare reti neurali convoluzionali molto profonde. Lo studio di queste decisioni di progettazione architettonica sviluppate per compiti di classificazione delle immagini all’avanguardia può fornire sia una logica che un’intuizione su come utilizzare questi progetti quando si progettano i propri modelli di rete neurale convoluzionale profonda.
In questo tutorial, scoprirai le pietre miliari dell’architettura chiave per l’uso di reti neurali convoluzionali per problemi di classificazione delle immagini impegnativi.,
Dopo aver completato questo tutorial, saprai:
- Come modellare il numero di filtri e le dimensioni del filtro quando implementi reti neurali convoluzionali.
- Come organizzare convoluzionale e pooling strati in un modello uniforme per sviluppare modelli ben performanti.
- Come utilizzare il modulo inception e il modulo residual per sviluppare reti convoluzionali molto più profonde.
Avvia il tuo progetto con il mio nuovo libro Deep Learning for Computer Vision, inclusi tutorial passo-passo e i file di codice sorgente Python per tutti gli esempi.
Iniziamo.,
- Aggiornamento Apr / 2019: Corretta descrizione delle dimensioni del filtro per LeNet (grazie Huang).
Tutorial Panoramica
Questo tutorial è diviso in sei parti, che sono:
- Progettazione Architettonica per CNNs
- LeNet-5
- AlexNet
- VGG
- Nascita e GoogLeNet
- Residua di Rete o ResNet
Progettazione Architettonica per CNNs
Gli elementi di un convolutional rete neurale, come convolutional e il pool di strati, sono relativamente semplici da capire.,
La parte difficile dell’utilizzo delle reti neurali convoluzionali nella pratica è come progettare architetture modello che utilizzino al meglio questi semplici elementi.
Un approccio utile per imparare a progettare efficaci architetture di rete neurale convoluzionale è quello di studiare applicazioni di successo. Questo è particolarmente semplice da fare a causa dell’intenso studio e applicazione di CNNs attraverso 2012 a 2016 per la sfida di riconoscimento visivo su larga scala ImageNet, o ILSVRC., Questa sfida ha portato sia al rapido avanzamento dello stato dell’arte per compiti di visione artificiale molto difficili sia allo sviluppo di innovazioni generali nell’architettura dei modelli di rete neurale convoluzionale.
Inizieremo con il LeNet-5 che viene spesso descritto come la prima applicazione di successo e importante di CNNs prima dell’ILSVRC, quindi esamineremo quattro diverse innovazioni architettoniche vincenti per la rete neurale convoluzionale sviluppata per l’ILSVRC, vale a dire AlexNet, VGG, Inception e ResNet.,
Comprendendo questi modelli di pietra miliare e la loro architettura o innovazioni architettoniche da un alto livello, si svilupperà sia un apprezzamento per l’uso di questi elementi architettonici nelle moderne applicazioni della CNN in computer vision, sia essere in grado di identificare e scegliere elementi di architettura che possono essere utili nella progettazione dei propri modelli.
Vuoi risultati con Deep Learning per la visione artificiale?
Prendi il mio corso accelerato gratuito di 7 giorni (con codice di esempio).,
Fare clic per iscriversi e anche ottenere una versione PDF Ebook gratuito del corso.
Scarica il tuo Mini-corso GRATUITO
LeNet-5
Forse la prima applicazione ampiamente conosciuta e di successo delle reti neurali convoluzionali è stata LeNet-5, descritta da Yann LeCun, et al. nel loro articolo del 1998 intitolato “Gradient-Based Learning Applied to Document Recognition” (prendi il PDF).
Il sistema è stato sviluppato per l’uso in un problema di riconoscimento dei caratteri scritto a mano e dimostrato sul set di dati standard MNIST, ottenendo circa 99.,precisione di classificazione del 2% (o un tasso di errore dello 0,8%). La rete è stata quindi descritta come la tecnica centrale in un sistema più ampio denominato Graph Transformer Networks.
È un lungo lavoro, e forse la parte migliore su cui concentrarsi è la Sezione II. B. che descrive l’architettura LeNet-5. Nella sezione, il documento descrive la rete come avente sette livelli con immagini in scala di grigi di input aventi la forma 32×32, la dimensione delle immagini nel set di dati MNIST.
Il modello propone un modello di un livello convoluzionale seguito da un livello di pooling medio, denominato livello di sottocampionamento., Questo modello viene ripetuto due volte e mezzo prima che le mappe delle funzionalità di output vengano appiattite e inviate a un numero di livelli completamente collegati per l’interpretazione e una previsione finale. Un’immagine dell’architettura di rete è fornita nel documento e riprodotta di seguito.
Architettura della rete neurale convoluzionale LeNet-5 per il riconoscimento dei caratteri scritti a mano (tratto dal documento del 1998).,
Il modello di blocchi di strati convoluzionali e strati di pooling raggruppati e ripetuti rimane uno schema comune nella progettazione e nell’utilizzo di reti neurali convoluzionali oggi, più di vent’anni dopo.
È interessante notare che l’architettura utilizza un piccolo numero di filtri come primo livello nascosto, in particolare sei filtri ciascuno con la dimensione di 5×5 pixel., Dopo il pooling (chiamato livello di sottocampionamento), un altro livello convoluzionale ha molti più filtri, di nuovo con una dimensione più piccola ma più piccola del precedente livello convoluzionale, in particolare 16 filtri con una dimensione di 5×5 pixel, di nuovo seguiti dal pooling. Nella ripetizione di questi due blocchi di convoluzione e strati di pooling, la tendenza è un aumento del numero di filtri.
Rispetto alle applicazioni moderne, il numero di filtri è anche piccolo, ma la tendenza ad aumentare il numero di filtri con la profondità della rete rimane anche uno schema comune nell’uso moderno della tecnica.,
L’appiattimento delle mappe delle feature e l’interpretazione e la classificazione delle feature estratte da livelli completamente connessi rimane un modello comune oggi. Nella terminologia moderna, la sezione finale dell’architettura è spesso indicata come classificatore, mentre i livelli convoluzionali e di pooling precedenti nel modello sono indicati come estrattore di funzionalità.
Possiamo riassumere gli aspetti chiave dell’architettura rilevanti nei modelli moderni come segue:
- Immagini di input di dimensioni fisse.
- Raggruppa i livelli convoluzionali e di raggruppamento in blocchi.,
- Ripetizione di blocchi convoluzionali-pooling nell’architettura.
- Aumento del numero di filtri con la profondità della rete.
- Estrazione caratteristica distinta e classificatore parti dell’architettura.
AlexNet
Il lavoro che forse potrebbe essere accreditato con scintille rinnovato interesse per le reti neurali e l’inizio del predominio di apprendimento profondo in molte applicazioni di visione artificiale è stato il 2012 carta da Alex Krizhevsky, et al. intitolato ” Classificazione ImageNet con reti neurali convoluzionali profonde.,”
Il documento descrive un modello in seguito denominato” AlexNet ” progettato per affrontare la ImageNet Large Scale Visual Recognition Challenge o ILSVRC-2010 competition per classificare le fotografie di oggetti in una delle 1.000 diverse categorie.
ILSVRC è stato un concorso tenutosi dal 2011 al 2016, progettato per stimolare l’innovazione nel campo della computer vision. Prima dello sviluppo di AlexNet, il compito era considerato molto difficile e ben oltre la capacità dei moderni metodi di visione artificiale., AlexNet ha dimostrato con successo la capacità del modello di rete neurale convoluzionale nel dominio e ha acceso un fuoco che ha portato a molti altri miglioramenti e innovazioni, molti hanno dimostrato sullo stesso compito ILSVRC negli anni successivi. Più in generale, il documento ha dimostrato che è possibile sviluppare modelli end-to-end profondi ed efficaci per un problema impegnativo senza utilizzare tecniche di pretraining non supervisionate che erano popolari all’epoca.
Importante nella progettazione di AlexNet era una suite di metodi che erano nuovi o di successo, ma non ampiamente adottato al momento., Ora, sono diventati requisiti quando si utilizzano CNNs per la classificazione delle immagini.
AlexNet ha fatto uso della funzione di attivazione lineare rettificata, o ReLU, come non lineare dopo ogni livello convoluzionale, invece di funzioni a forma di S come la logistica o tanh che erano comuni fino a quel punto. Inoltre, una funzione di attivazione softmax è stata utilizzata nel livello di output, ora un punto fermo per la classificazione multi-classe con reti neurali.,
Il pooling medio utilizzato in LeNet-5 è stato sostituito con un metodo di pooling massimo, anche se in questo caso, il pooling sovrapposto è risultato sovraperformare il pooling non sovrapposto comunemente usato oggi (ad esempio, il passo dell’operazione di pooling ha le stesse dimensioni dell’operazione di pooling, ad esempio 2 per 2 pixel). Per affrontare l’overfitting, il metodo di dropout appena proposto è stato utilizzato tra i livelli completamente collegati della parte del classificatore del modello per migliorare l’errore di generalizzazione.
L’architettura di AlexNet è profonda e si estende su alcuni dei modelli stabiliti con LeNet-5., L’immagine qui sotto, tratta dalla carta, riassume l’architettura del modello, in questo caso, divisa in due pipeline per allenarsi sull’hardware GPU dell’epoca.
Architettura della rete neurale convoluzionale AlexNet per la classificazione di foto di oggetti (tratta dal paper del 2012).
Il modello ha cinque livelli convoluzionali nella parte di estrazione delle funzionalità del modello e tre livelli completamente collegati nella parte del classificatore del modello.
Immagini di ingresso sono stati fissati alla dimensione 224×224 con tre canali di colore., In termini di numero di filtri utilizzati in ogni strato convoluzionale, il modello di aumento del numero di filtri con profondità visto in LeNet è stato per lo più rispettato, in questo caso, le dimensioni: 96, 256, 384, 384 e 256. Allo stesso modo, è stato utilizzato il modello di riduzione della dimensione del filtro (kernel) con profondità, partendo dalla dimensione più piccola di 11×11 e diminuendo a 5×5, e quindi a 3×3 negli strati più profondi. L’uso di piccoli filtri come 5×5 e 3×3 è ora la norma.,
Un modello di un livello convoluzionale seguito da un livello di pooling è stato utilizzato all’inizio e alla fine della parte di rilevamento delle funzionalità del modello. È interessante notare che è stato utilizzato un modello di strato convoluzionale seguito immediatamente da un secondo strato convoluzionale. Anche questo modello è diventato uno standard moderno.
Il modello è stato addestrato con l’aumento dei dati, aumentando artificialmente le dimensioni del set di dati di allenamento e dando al modello più opportunità di apprendere le stesse caratteristiche in diversi orientamenti.,
Possiamo riassumere gli aspetti chiave dell’architettura rilevanti nei modelli moderni come segue:
- Uso della funzione di attivazione ReLU dopo i livelli convoluzionali e softmax per il livello di output.
- Uso del pooling massimo invece del pooling medio.
- Uso della regolarizzazione del dropout tra i livelli completamente collegati.
- Modello di strato convoluzionale alimentato direttamente ad un altro strato convoluzionale.
- Uso dell’aumento dei dati.,
VGG
Lo sviluppo di reti neurali convoluzionali profonde per compiti di visione artificiale sembrava essere un po ‘ un’arte oscura dopo AlexNet.
Un importante lavoro che ha cercato di standardizzare il design dell’architettura per reti convoluzionali profonde e ha sviluppato modelli molto più profondi e più performanti nel processo è stato il documento del 2014 intitolato “Very Deep Convoluzionale Networks for Large-Scale Image Recognition” di Karen Simonyan e Andrew Zisserman.
La loro architettura è generalmente indicata come VGG dal nome del loro laboratorio, il Visual Geometry Group di Oxford., Il loro modello è stato sviluppato e dimostrato sullo stessoconcorso ELSVRC, in questo caso, la versione ILSVRC-2014 della sfida.
La prima importante differenza che è diventata uno standard de facto è l’uso di un gran numero di piccoli filtri. In particolare, i filtri con le dimensioni 3×3 e 1×1 con il passo di uno, diverso dai filtri di grandi dimensioni in LeNet – 5 e i filtri più piccoli ma ancora relativamente grandi e il grande passo di quattro in AlexNet.,
I livelli di pooling max vengono utilizzati dopo la maggior parte, ma non tutti, i livelli convoluzionali, imparando dall’esempio in AlexNet, eppure tutti i pooling vengono eseguiti con la dimensione 2×2 e lo stesso passo, anche questo è diventato uno standard de facto. In particolare, le reti VGG utilizzano esempi di due, tre e persino quattro livelli convoluzionali impilati insieme prima di utilizzare un livello di pool massimo. La logica era che gli strati convoluzionali impilati con filtri più piccoli approssimano l’effetto di uno strato convoluzionale con un filtro di dimensioni maggiori, ad esempio, tre strati convoluzionali impilati con filtri 3×3 approssimano uno strato convoluzionale con un filtro 7×7.
Un’altra importante differenza è il numero molto elevato di filtri utilizzati. Il numero di filtri aumenta con la profondità del modello, sebbene inizi da un numero relativamente elevato di 64 e aumenti attraverso i filtri 128, 256 e 512 alla fine della parte di estrazione delle funzionalità del modello.
Un certo numero di varianti dell’architettura sono stati sviluppati e valutati, anche se due sono indicati più comunemente date le loro prestazioni e la profondità., Sono chiamati per il numero di strati: sono il VGG-16 e il VGG-19 rispettivamente per 16 e 19 strati appresi.
Di seguito è riportata una tabella tratta dal documento; notare le due colonne all’estrema destra che indicano la configurazione (numero di filtri) utilizzata nelle versioni VGG-16 e VGG-19 dell’architettura.
Architettura della rete neurale convoluzionale VGG per la classificazione di foto di oggetti (tratta dal paper del 2014).,
Le decisioni di progettazione nei modelli VGG sono diventate il punto di partenza per l’uso semplice e diretto delle reti neurali convoluzionali in generale.
Infine, il lavoro VGG è stato tra i primi a rilasciare i preziosi pesi del modello sotto una licenza permissiva che ha portato a una tendenza tra i ricercatori di computer vision deep learning. Questo, a sua volta, ha portato all’uso pesante di modelli pre-addestrati come VGG nell’apprendimento del trasferimento come punto di partenza per nuove attività di visione artificiale.,
Possiamo riassumere gli aspetti chiave dell’architettura rilevanti nei modelli moderni come segue:
- Uso di filtri convoluzionali molto piccoli, ad esempio 3×3 e 1×1 con un passo di uno.
- Utilizzo di max pooling con una dimensione di 2×2 e un passo delle stesse dimensioni.
- L’importanza di impilare insieme i livelli convoluzionali prima di utilizzare un livello di pooling per definire un blocco.
- Ripetizione drammatica del modello di blocco convoluzionale-pooling.
- Sviluppo di modelli molto profondi (16 e 19 strati).,
Inception e GoogLeNet
Importanti innovazioni nell’uso degli strati convoluzionali sono state proposte nel documento 2015 da Christian Szegedy, et al. intitolato ” Andare più in profondità con le circonvoluzioni.”
Nel documento, gli autori propongono un’architettura denominata inception (o inception v1 per differenziarla dalle estensioni) e un modello specifico chiamato GoogLeNet che ha ottenuto i migliori risultati nella versione 2014 della sfida ILSVRC.
L’innovazione chiave sui modelli inception si chiama inception module., Questo è un blocco di strati convoluzionali paralleli con filtri di dimensioni diverse (ad es. 1×1, 3×3, 5×5) e un livello di pool massimo 3×3, i cui risultati vengono quindi concatenati. Di seguito è riportato un esempio del modulo inception tratto dalla carta.
Esempio del modulo Naive Inception (tratto dal documento del 2015).
Un problema con un’implementazione ingenua del modello inception è che il numero di filtri (profondità o canali) inizia a accumularsi velocemente, specialmente quando i moduli inception sono impilati.,
Eseguire circonvoluzioni con filtri di dimensioni maggiori (ad esempio 3 e 5) può essere computazionalmente costoso su un gran numero di filtri. Per risolvere questo problema, vengono utilizzati livelli convoluzionali 1×1 per ridurre il numero di filtri nel modello di inizio. In particolare prima degli strati convoluzionali 3×3 e 5×5 e dopo lo strato di pooling. L’immagine qui sotto presa dalla carta mostra questa modifica al modulo inception.
Esempio del modulo Inception con Riduzione della dimensionalità (tratto dal paper del 2015).,
Una seconda importante decisione di progettazione nel modello di inizio stava collegando l’output in diversi punti del modello. Ciò è stato ottenuto creando piccole reti di output off-shoot dalla rete principale che sono state addestrate per fare una previsione. L’intento era quello di fornire un ulteriore segnale di errore dall’attività di classificazione in diversi punti del modello profondo al fine di affrontare il problema dei gradienti di fuga. Queste piccole reti di output sono state quindi rimosse dopo l’allenamento.,
Di seguito viene mostrata una versione ruotata (da sinistra a destra per input-to-output) dell’architettura del modello GoogLeNet presa dalla carta utilizzando i moduli Inception dall’input a sinistra alla classificazione output a destra e le due reti di output aggiuntive che sono state utilizzate solo durante l’allenamento.
Architettura del modello GoogLeNet Utilizzato durante l’allenamento per la classificazione di foto di oggetti (tratto dal documento del 2015).,
È interessante notare che è stato utilizzato il pool massimo sovrapposto e una grande operazione di pooling medio è stata utilizzata alla fine della parte di estrazione delle funzionalità del modello prima della parte del classificatore del modello.
Possiamo riassumere gli aspetti chiave dell’architettura rilevanti nei modelli moderni come segue:
- Sviluppo e ripetizione del modulo Inception.
- Uso pesante della convoluzione 1×1 per ridurre il numero di canali.
- Uso del feedback degli errori in più punti della rete.
- Sviluppo di modelli molto profondi (22 strati).,
- Utilizzo del pooling medio globale per l’output del modello.
Rete residua o ResNet
Un’ultima importante innovazione nelle reti neurali convoluzionali che esamineremo è stata proposta da Kaiming He, et al. nel loro articolo 2016 intitolato ” Deep Residual Learning for Image Recognition.”
Nel documento, gli autori hanno proposto un modello molto profondo chiamato Rete residua, o ResNet in breve, un esempio del quale ha ottenuto successo nella versione 2015 della sfida ILSVRC.
Il loro modello aveva un impressionante 152 strati., Chiave per la progettazione del modello è l’idea di blocchi residui che fanno uso di collegamenti di scelta rapida. Queste sono semplicemente connessioni nell’architettura di rete in cui l’input viene mantenuto così com’è (non ponderato) e passato a un livello più profondo, ad esempio saltando il livello successivo.
Un blocco residuo è un modello di due livelli convoluzionali con attivazione ReLU in cui l’uscita del blocco è combinata con l’ingresso al blocco, ad esempio la connessione di scelta rapida. Una versione proiettata dell’ingresso utilizzato tramite 1×1 se la forma dell’ingresso al blocco è diversa dall’uscita del blocco, le cosiddette circonvoluzioni 1×1., Questi sono indicati come connessioni di scelta rapida proiettate, rispetto alle connessioni di scelta rapida non ponderate o identità.
Gli autori iniziano con quella che chiamano una rete semplice, che è una rete neurale convoluzionale profonda ispirata a VGG con piccoli filtri (3×3), strati convoluzionali raggruppati seguiti senza pooling in mezzo e un pooling medio alla fine della parte del rilevatore di funzionalità del modello prima del livello di output completamente collegato con una funzione di attivazione softmax.,
La rete normale viene modificata per diventare una rete residua aggiungendo connessioni di scelta rapida per definire i blocchi residui. In genere la forma dell’input per la connessione di scelta rapida ha le stesse dimensioni dell’output del blocco residuo.
L’immagine qui sotto è stata presa dalla carta e da sinistra a destra confronta l’architettura di un modello VGG, un modello convoluzionale semplice e una versione del convoluzionale semplice con moduli residui, chiamata rete residua.,
Architettura della Rete Residua per la classificazione di foto Oggetto (tratto dal documento 2016).
Possiamo riassumere gli aspetti chiave dell’architettura rilevanti nei modelli moderni come segue:
- Uso delle connessioni di scelta rapida.
- Sviluppo e ripetizione dei blocchi residui.
- Sviluppo di modelli molto profondi (152 strati).
Ulteriori letture
Questa sezione fornisce più risorse sull’argomento se stai cercando di approfondire.,
Papers
- Apprendimento basato su gradiente applicato al riconoscimento dei documenti, (PDF) 1998.
- Classificazione ImageNet con reti neurali convoluzionali profonde, 2012.
- Reti convoluzionali molto profonde per il riconoscimento di immagini su larga scala, 2014.
- Andare più in profondità con le circonvoluzioni, 2015.
- Deep Residual Learning for Image Recognition, 2016
API
- Keras Applications API
Articoli
- I 9 documenti di Deep Learning che devi sapere su
- Una semplice guida alle versioni di Inception Network, 2018.,
- Architetture CNN: LeNet, AlexNet, VGG, GoogLeNet, ResNet e altro ancora., 2017.
Sommario
In questo tutorial, hai scoperto le pietre miliari chiave dell’architettura per l’uso di reti neurali convoluzionali per la classificazione delle immagini.
In particolare, hai imparato:
- Come modellare il numero di filtri e le dimensioni del filtro quando implementi reti neurali convoluzionali.
- Come organizzare convoluzionale e pooling strati in un modello uniforme per sviluppare modelli ben performanti.,
- Come utilizzare il modulo inception e il modulo residual per sviluppare reti convoluzionali molto più profonde.
Hai qualche domanda?
Fai le tue domande nei commenti qui sotto e farò del mio meglio per rispondere.
Sviluppare modelli di apprendimento profondo per la visione di oggi!
Sviluppa i tuoi modelli di visione in pochi minuti
…,con poche righe di codice python
Scopri come nel mio nuovo Ebook:
Deep Learning for Computer Vision
Fornisce tutorial di autoapprendimento su argomenti come:
classificazione, rilevamento di oggetti (yolo e rcnn), riconoscimento facciale (vggface e facenet), preparazione dei dati e molto altro…
Finalmente portare l’apprendimento profondo per i vostri progetti di visione
Saltare gli accademici. Solo risultati.
Guarda cosa c’è dentro