VGG16 – Convolutional Network for Classification and Detection

jun 29, 2021
admin

VGG16 is een convolutioneel neuraal netwerk model voorgesteld door K. Simonyan en A. Zisserman van de Universiteit van Oxford in de paper “Very Deep Convolutional Networks for Large-Scale Image Recognition”. Het model behaalt 92,7% top-5 testnauwkeurigheid in ImageNet, een dataset van meer dan 14 miljoen afbeeldingen die tot 1000 klassen behoren. Het was een van de beroemde modellen ingediend bij ILSVRC-2014. Het maakt de verbetering ten opzichte van AlexNet door grote filters met kernelgrootte (11 en 5 in respectievelijk de eerste en tweede convolutionele laag) te vervangen door meerdere filters met kernelgrootte van 3×3, de een na de ander. VGG16 werd wekenlang getraind en maakte gebruik van NVIDIA Titan Black GPU’s.

vgg16-architectuur
VGG16

Dataset

ImageNet is een dataset van meer dan 15 miljoen gelabelde afbeeldingen met een hoge resolutie die behoren tot ruwweg 22.000 categorieën. De afbeeldingen zijn verzameld van het web en gelabeld door menselijke labelaars met behulp van Amazon’s Mechanical Turk crowd-sourcing tool. Vanaf 2010 wordt jaarlijks, als onderdeel van de Pascal Visual Object Challenge, de ImageNet Large-Scale Visual Recognition Challenge (ILSVRC) gehouden. ILSVRC gebruikt een subset van ImageNet met ruwweg 1000 afbeeldingen in elk van 1000 categorieën. In totaal zijn er ruwweg 1,2 miljoen trainingsbeelden, 50.000 validatiebeelden en 150.000 testbeelden. ImageNet bestaat uit afbeeldingen met variabele resolutie. Daarom zijn de afbeeldingen gedownsampled tot een vaste resolutie van 256×256. Bij een rechthoekig beeld wordt de schaal van het beeld aangepast en wordt het centrale 256×256-gebied uit het resulterende beeld gesneden.

De architectuur

De hieronder afgebeelde architectuur is VGG16.

VGG16-architectuur
Figuur 1. VGG16-architectuur

De invoer voor de cov1-laag is een RGB-afbeelding van 224 x 224 met vaste afmetingen. Het beeld wordt door een stapel convolutionele (conv.) lagen geleid, waarbij de filters werden gebruikt met een zeer klein receptief veld: 3×3 (dat is de kleinste maat om het begrip links/rechts, boven/beneden, midden) te vatten. In een van de configuraties wordt ook gebruik gemaakt van 1×1 convolutiefilters, die kunnen worden gezien als een lineaire transformatie van de ingangskanalen (gevolgd door niet-lineariteit). De convolutiestap is vastgesteld op 1 pixel; de ruimtelijke vulling van de input van de conv.-lagen is zodanig dat de ruimtelijke resolutie na de convolutie behouden blijft, d.w.z. de vulling is 1 pixel voor 3×3 conv.-lagen. Ruimtelijke pooling wordt uitgevoerd door vijf max-pooling lagen, die enkele van de conv. lagen volgen (niet alle conv. lagen worden gevolgd door max-pooling). Max-pooling wordt uitgevoerd over een venster van 2×2 pixels, met stride 2.

Drie Fully-Connected (FC) lagen volgen op een stapel convolutionele lagen (die in verschillende architecturen een verschillende diepte heeft): de eerste twee hebben elk 4096 kanalen, de derde voert 1000-weg ILSVRC-classificatie uit en bevat dus 1000 kanalen (één voor elke klasse). De laatste laag is de soft-max laag. De configuratie van de volledig aangesloten lagen is in alle netwerken dezelfde.

Alle verborgen lagen zijn voorzien van de rectificatie (ReLU) niet-lineariteit. Ook wordt opgemerkt dat geen van de netwerken (op één na) Local Response Normalisation (LRN) bevat; een dergelijke normalisatie verbetert de prestaties op de ILSVRC-dataset niet, maar leidt tot een hoger geheugengebruik en een langere rekentijd.

Configuraties

De ConvNet-configuraties zijn geschetst in figuur 2. De netten worden aangeduid met hun namen (A-E). Alle configuraties volgen het generieke ontwerp dat in de architectuur aanwezig is en verschillen alleen in de diepte: van 11 gewichtslagen in het netwerk A (8 conv. en 3 FC lagen) tot 19 gewichtslagen in het netwerk E (16 conv. en 3 FC lagen). De breedte van de conv. lagen (het aantal kanalen) is vrij klein, beginnend bij 64 in de eerste laag en vervolgens toenemend met een factor 2 na elke max-pooling laag, totdat 512 wordt bereikt.

Figuur 2. ConvNet Configuration

Use-Cases and Implementation

Er zijn helaas twee grote nadelen aan VGGNet:

  1. Het is tergend langzaam om te trainen.
  2. De gewichten van de netwerkarchitectuur zelf zijn vrij groot (wat betreft schijf/bandbreedte).

Door de diepte en het aantal volledig aangesloten nodes, is VGG16 meer dan 533MB. Dit maakt het implementeren van VGG een vermoeiende taak.VGG16 wordt gebruikt in veel deep learning beeldclassificatieproblemen; kleinere netwerkarchitecturen zijn echter vaak wenselijker (zoals SqueezeNet, GoogLeNet, enz.). Maar het is een geweldige bouwsteen voor leerdoeleinden omdat het eenvoudig te implementeren is.

Resultaat

VGG16 presteert aanzienlijk beter dan de vorige generatie modellen in de ILSVRC-2012- en ILSVRC-2013-wedstrijden. Het VGG16-resultaat doet ook mee voor de winnaar van de classificatietaak (GoogLeNet met 6,7% fout) en doet het aanzienlijk beter dan de winnende inzending van ILSVRC-2013, Clarifai, die 11,2% haalde met externe trainingsgegevens en 11,7% zonder. Wat de single-net prestaties betreft, behaalt de VGG16-architectuur het beste resultaat (7,0% testfout), en presteert daarmee 0,9% beter dan een enkele GoogLeNet.

VGG16 vergelijking
VGG16 vergelijking

Het werd aangetoond dat de representatiediepte gunstig is voor de classificatienauwkeurigheid, en dat state-of-the-art prestaties op de ImageNet challenge dataset kunnen worden bereikt met een conventionele ConvNet-architectuur met aanzienlijk meer diepte.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.