VGG16 – Convolutional Network for Classification and Detection

Giu 29, 2021
admin

VGG16 è un modello di rete neurale convoluzionale proposto da K. Simonyan e A. Zisserman dell’Università di Oxford nel documento “Very Deep Convolutional Networks for Large-Scale Image Recognition”. Il modello raggiunge il 92,7% di accuratezza nei test top-5 in ImageNet, che è un dataset di oltre 14 milioni di immagini appartenenti a 1000 classi. È stato uno dei famosi modelli presentati a ILSVRC-2014. Il miglioramento rispetto ad AlexNet è stato ottenuto sostituendo i filtri di grandi dimensioni del kernel (11 e 5 nel primo e nel secondo strato di convoluzione, rispettivamente) con più filtri di dimensioni 3×3 kernel uno dopo l’altro. VGG16 è stato addestrato per settimane e ha utilizzato la GPU NVIDIA Titan Black.

architettura vgg16
VGG16

DataSet

ImageNet è un dataset di oltre 15 milioni di immagini ad alta risoluzione etichettate appartenenti a circa 22.000 categorie. Le immagini sono state raccolte dal web ed etichettate da etichettatori umani utilizzando lo strumento di crowd-sourcing Mechanical Turk di Amazon. A partire dal 2010, come parte del Pascal Visual Object Challenge, si è tenuta una competizione annuale chiamata ImageNet Large-Scale Visual Recognition Challenge (ILSVRC). ILSVRC utilizza un sottoinsieme di ImageNet con circa 1000 immagini in ciascuna delle 1000 categorie. In totale, ci sono circa 1,2 milioni di immagini di allenamento, 50.000 immagini di convalida e 150.000 immagini di test. ImageNet consiste di immagini a risoluzione variabile. Pertanto, le immagini sono state sottocampionate ad una risoluzione fissa di 256×256. Data un’immagine rettangolare, l’immagine viene ridimensionata e ritagliata dalla patch centrale 256×256 dall’immagine risultante.

L’architettura

L’architettura raffigurata di seguito è VGG16.

Architettura VGG16
Figura 1. Architettura VGG16

L’input al livello cov1 è un’immagine RGB di dimensione fissa 224 x 224. L’immagine è passata attraverso una pila di strati convoluzionali (conv.), dove i filtri sono stati usati con un campo recettivo molto piccolo: 3×3 (che è la dimensione più piccola per catturare la nozione di sinistra/destra, su/giù, centro). In una delle configurazioni, si utilizzano anche filtri di convoluzione 1×1, che possono essere visti come una trasformazione lineare dei canali di ingresso (seguita da una non linearità). Il passo di convoluzione è fissato a 1 pixel; il padding spaziale dell’input degli strati di convoluzione è tale che la risoluzione spaziale è conservata dopo la convoluzione, cioè il padding è di 1 pixel per 3×3 strati di convoluzione. Il pooling spaziale è effettuato da cinque strati di max-pooling, che seguono alcuni degli strati conv. (non tutti gli strati conv. sono seguiti dal max-pooling). Il max-pooling viene eseguito su una finestra di 2×2 pixel, con stride 2.

Tre strati Fully-Connected (FC) seguono una pila di strati convoluzionali (che ha una profondità diversa nelle diverse architetture): i primi due hanno 4096 canali ciascuno, il terzo esegue la classificazione ILSVRC a 1000 vie e quindi contiene 1000 canali (uno per ogni classe). Lo strato finale è lo strato soft-max. La configurazione degli strati completamente connessi è la stessa in tutte le reti.

Tutti gli strati nascosti sono dotati della non linearità di rettifica (ReLU). Si nota anche che nessuna delle reti (tranne una) contiene la normalizzazione della risposta locale (LRN), tale normalizzazione non migliora le prestazioni sul dataset ILSVRC, ma porta ad un aumento del consumo di memoria e del tempo di calcolo.

Configurazioni

Le configurazioni ConvNet sono delineate nella figura 2. Le reti si riferiscono ai loro nomi (A-E). Tutte le configurazioni seguono il design generico presente nell’architettura e differiscono solo nella profondità: da 11 strati di peso nella rete A (8 strati conv. e 3 FC) a 19 strati di peso nella rete E (16 strati conv. e 3 FC). La larghezza degli strati conv. (il numero di canali) è piuttosto piccola, partendo da 64 nel primo strato e poi aumentando di un fattore 2 dopo ogni strato di max-pooling, fino a raggiungere 512.

Figura 2. Configurazione ConvNet

Casi d’uso e implementazione

Purtroppo, ci sono due principali inconvenienti con VGGNet:

  1. È dolorosamente lento da addestrare.
  2. I pesi stessi dell’architettura di rete sono abbastanza grandi (riguardo al disco/larghezza di banda).

A causa della sua profondità e del numero di nodi completamente connessi, VGG16 è oltre 533MB. Questo rende l’implementazione di VGG un compito faticoso.VGG16 è usato in molti problemi di classificazione delle immagini di deep learning; tuttavia, architetture di rete più piccole sono spesso più desiderabili (come SqueezeNet, GoogLeNet, ecc.). Ma è un grande blocco di costruzione per lo scopo di apprendimento in quanto è facile da implementare.

Risultato

VGG16 supera significativamente la precedente generazione di modelli nei concorsi ILSVRC-2012 e ILSVRC-2013. Il risultato di VGG16 è anche in competizione con il vincitore del compito di classificazione (GoogLeNet con un errore del 6,7%) e supera sostanzialmente la presentazione vincente di ILSVRC-2013 Clarifai, che ha ottenuto l’11,2% con dati di allenamento esterni e l’11,7% senza. Per quanto riguarda le prestazioni della singola rete, l’architettura VGG16 raggiunge il miglior risultato (7,0% di errore), superando una singola GoogLeNet dello 0,9%.

Confronto VGG16
Confronto VGG16

È stato dimostrato che la profondità di rappresentazione è vantaggiosa per la precisione di classificazione, e che le prestazioni allo stato dell’arte sul dataset ImageNet challenge possono essere raggiunte utilizzando una architettura ConvNet convenzionale con una profondità sostanzialmente maggiore.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.