logo

VGG-16 | Modello CNN

Un'architettura di rete neurale convoluzionale (CNN) è un modello di deep learning progettato per l'elaborazione di dati strutturati simili a griglie, come le immagini. È costituito da più livelli, inclusi livelli convoluzionali, di pooling e completamente connessi. Le CNN sono molto efficaci per attività come la classificazione delle immagini, il rilevamento di oggetti e la segmentazione delle immagini grazie alle loro capacità di estrazione gerarchica delle caratteristiche.

VGG-16

Il modello VGG-16 è un'architettura di rete neurale convoluzionale (CNN) proposta dal Visual Geometry Group (VGG) dell'Università di Oxford. Si caratterizza per la sua profondità, composta da 16 strati, di cui 13 strati convoluzionali e 3 strati completamente collegati. VGG-16 è rinomato per la sua semplicità ed efficacia, nonché per la sua capacità di ottenere ottime prestazioni in vari compiti di visione artificiale, tra cui la classificazione delle immagini e il riconoscimento degli oggetti. L’architettura del modello presenta uno stack di strati convoluzionali seguiti da strati di max-pooling, con profondità progressivamente crescente. Questo design consente al modello di apprendere rappresentazioni gerarchiche complesse di caratteristiche visive, portando a previsioni robuste e accurate. Nonostante la sua semplicità rispetto alle architetture più recenti, VGG-16 rimane una scelta popolare per molte applicazioni di deep learning grazie alla sua versatilità e alle eccellenti prestazioni.



L'ImageNet Large Scale Visual Recognition Challenge (ILSVRC) è una competizione annuale di visione artificiale in cui i team affrontano compiti tra cui la localizzazione di oggetti e la classificazione delle immagini. VGG16, proposto da Karen Simonyan e Andrew Zisserman nel 2014, ha ottenuto i primi posti in entrambi i compiti, rilevando oggetti di 200 classi e classificando le immagini in 1000 categorie.


forzatura cache pulita npm

Architettura VGG-16



Questo modello raggiunge 92,7% dei primi 5 testare l'accuratezza sul set di dati ImageNet che contiene 14 milioni di immagini appartenenti a 1000 classi.

Obiettivo del modello VGG-16:

Il set di dati ImageNet contiene immagini di dimensione fissa di 224*224 e hanno canali RGB. Quindi, abbiamo un tensore di (224, 224, 3) come nostro input. Questo modello elabora l'immagine in input e restituisce in output il vettore a di 1000 valori:

hat{y} =egin{bmatrix} hat{y_0} hat{y_1} hat{y_2} . . . hat{y}_{999} end{bmatrix}



Questo vettore rappresenta la probabilità di classificazione per la classe corrispondente. Supponiamo di avere un modello che prevede che l'immagine appartenga alla classe 0 con probabilità 1 , classe 1 con probabilità 0,05 , classe 2 con probabilità 0,05 , classe 3 con probabilità 0,03 , classe 780 con probabilità 0,72 , classe 999 con probabilità 0,05 e tutte le altre classi con 0 .

quindi, il vettore di classificazione per questo sarà:

selezione ordinamento java

hat{y}=egin{bmatrix} hat{y_{0}}=0.1 0.05 0.05 0.03 . . . hat{y_{780}} = 0.72 . . hat{y_{999}} = 0.05 end{bmatrix}

Per assicurarsi che queste probabilità si aggiungano 1 , utilizziamo la funzione softmax.

Questa funzione softmax è definita come segue:

hat{y}_i = frac{e^{z_i}}{sum_{j=1}^{n} e^{z_j}}

Successivamente inseriamo nel vettore i 5 candidati più probabili.

C =egin{bmatrix} 780 0 1 2 999 end{bmatrix}

e il nostro vettore di verità a terra è definito come segue:

G = egin{bmatrix} G_{0} G_{1} G_{2} end{bmatrix}=egin{bmatrix} 780 2 999 end{bmatrix}

Quindi definiamo la nostra funzione Errore come segue:

E = frac{1}{n}sum_{k}min_{i}d(c_{i}, G_{k})

un array in Java

Calcola la distanza minima tra ciascuna classe di verità a terra e i candidati previsti, dove la funzione di distanza d è definita come:

  • d=0 sec_i=G_k
  • d=1 altrimenti

Quindi, la funzione di perdita per questo esempio è:

egin{aligned} E &=frac{1}{3}left ( min_{i}d(c_{i}, G_{1}) +min_{i}d(c_{i}, G_{2})+min_{i}d(c_{i}, G_{3}) ight ) &= frac{1}{3}(0 + 0 +0) &=0 end{aligned}

Poiché tutte le categorie nella verità di base si trovano nella matrice delle prime 5 previste, la perdita diventa 0.

VGG Architettura:

L'architettura VGG-16 è una rete neurale convoluzionale profonda (CNN) progettata per attività di classificazione delle immagini. È stato introdotto dal Visual Geometry Group dell'Università di Oxford. VGG-16 è caratterizzato dalla sua semplicità e architettura uniforme, che lo rendono facile da comprendere e implementare.

checkout con git

La configurazione VGG-16 consiste tipicamente di 16 strati, inclusi 13 strati convoluzionali e 3 strati completamente connessi. Questi strati sono organizzati in blocchi, ciascuno dei quali contiene più strati convoluzionali seguiti da uno strato di pooling massimo per il downsampling.

Mappa dell'architettura VGG-16

Ecco una ripartizione dell'architettura VGG-16 basata sui dettagli forniti:

  1. Livello di input:
    1. Dimensioni di input: (224, 224, 3)
  2. Strati convoluzionali (64 filtri, filtri 3×3, stessa imbottitura):
    • Due strati convoluzionali consecutivi con 64 filtri ciascuno e una dimensione del filtro di 3×3.
    • La stessa imbottitura viene applicata per mantenere le dimensioni spaziali.
  3. Livello di pooling massimo (2×2, passo 2):
    • Strato di pooling massimo con una dimensione del pool di 2×2 e una falcata di 2.
  4. Strati convoluzionali (128 filtri, filtri 3×3, stessa imbottitura):
    • Due strati convoluzionali consecutivi con 128 filtri ciascuno e una dimensione del filtro di 3×3.
  5. Livello di pooling massimo (2×2, passo 2):
    • Strato di pooling massimo con una dimensione del pool di 2×2 e una falcata di 2.
  6. Livelli convoluzionali (256 filtri, filtri 3×3, stessa imbottitura):
    • Due strati convoluzionali consecutivi con 256 filtri ciascuno e una dimensione del filtro di 3×3.
  7. Strati convoluzionali (512 filtri, filtri 3×3, stessa imbottitura):
    • Due serie di tre strati convoluzionali consecutivi con 512 filtri ciascuno e una dimensione del filtro di 3×3.
  8. Livello di pooling massimo (2×2, passo 2):
    • Strato di pooling massimo con una dimensione del pool di 2×2 e una falcata di 2.
  9. Stack di livelli convoluzionali e pooling massimo:
    • Due strati convoluzionali aggiuntivi dopo lo stack precedente.
    • Dimensione del filtro: 3×3.
  10. Appiattimento:
    • Appiattisci la mappa delle caratteristiche di output (7x7x512) in un vettore di dimensione 25088.
  11. Livelli completamente connessi:
    • Tre livelli completamente connessi con attivazione ReLU.
    • Primo livello con dimensione di input 25088 e dimensione di output 4096.
    • Secondo livello con dimensione di input 4096 e dimensione di output 4096.
    • Terzo livello con dimensione di input 4096 e dimensione di output 1000, corrispondente alle 1000 classi nella sfida ILSVRC.
    • L'attivazione Softmax viene applicata all'uscita del terzo livello completamente connesso per la classificazione.

Questa architettura segue le specifiche fornite, incluso l'uso della funzione di attivazione ReLU e il livello finale completamente connesso che genera probabilità per 1000 classi utilizzando l'attivazione softmax.

Configurazione VGG-16:

La differenza principale tra le configurazioni C e D del VGG-16 risiede nell'uso delle dimensioni del filtro in alcuni strati convoluzionali. Sebbene entrambe le versioni utilizzino prevalentemente filtri 3×3, nella versione D ci sono casi in cui vengono invece utilizzati filtri 1×1. Questa leggera variazione si traduce in una differenza nel numero di parametri, con la versione D che ha un numero di parametri leggermente superiore rispetto alla versione C. Tuttavia, entrambe le versioni mantengono l'architettura generale e i principi del modello VGG-16.

Configurazione VGG diversa

Localizzazione dell'oggetto nell'immagine:

Per eseguire la localizzazione, dobbiamo sostituire il punteggio della classe con le coordinate di posizione del riquadro di delimitazione. La posizione di un riquadro di delimitazione è rappresentata dal vettore 4-D (coordinate del centro (x,y), altezza, larghezza). Esistono due versioni dell'architettura di localizzazione, una è il riquadro di delimitazione condiviso tra diversi candidati (l'output è 4 vettore dei parametri) e l'altro è un riquadro di delimitazione specifico della classe (l'output è 4000 vettore dei parametri). L'articolo ha sperimentato entrambi gli approcci sull'architettura VGG -16 (D). Qui dobbiamo anche cambiare la perdita da perdita di classificazione a funzioni di perdita di regressione (come MSE ) che penalizzano lo scostamento della perdita prevista dalla realtà.

Risultati: VGG-16 è stata una delle architetture con le migliori prestazioni nella sfida ILSVRC 2014. Si è classificata seconda nel compito di classificazione con un errore di classificazione tra i primi 5 di 7,32% (solo dietro GoogLeNet con un errore di classificazione di 6,66% ). È stato anche il vincitore del compito di localizzazione con 25,32% errore di localizzazione.

Limitazioni del VGG 16:

  • L'addestramento è molto lento (il modello VGG originale è stato addestrato sulla GPU Nvidia Titan per 2-3 settimane).
  • La dimensione dei pesi imageNet addestrati VGG-16 è 528 MB. Pertanto, richiede molto spazio su disco e larghezza di banda, il che lo rende inefficiente.
  • 138 milioni di parametri portano al problema dei gradienti esplosivi.

Ulteriori miglioramenti: vengono introdotti i Resnet per prevenire il problema dell'esplosione dei gradienti che si verificava in VGG-16.