VGG16 – Convolutional Network for Classification and Detection

jun 29, 2021
admin

VGG16 är en modell för ett konvolutionellt neuralt nätverk som föreslogs av K. Simonyan och A. Zisserman från University of Oxford i artikeln ”Very Deep Convolutional Networks for Large-Scale Image Recognition”. Modellen uppnår 92,7 % topp-5-testnoggrannhet i ImageNet, som är en datamängd med över 14 miljoner bilder som tillhör 1 000 klasser. Den var en av de berömda modellerna som lämnades in till ILSVRC-2014. Den förbättrar AlexNet genom att ersätta stora filter av kärnstorlek (11 och 5 i det första respektive andra konvolutionella lagret) med flera 3×3 filter av kärnstorlek, ett efter ett. VGG16 tränades i veckor och använde NVIDIA Titan Black GPU:er.

vgg16-arkitektur
VGG16

Dataset

ImageNet är ett dataset med över 15 miljoner märkta högupplösta bilder med hög upplösning som tillhör ungefär 22 000 kategorier. Bilderna samlades in från webben och märktes av mänskliga etiketterare med hjälp av Amazons mekaniska turkverktyg för crowd-sourcing. Från och med 2010, som en del av Pascal Visual Object Challenge, har en årlig tävling som kallas ImageNet Large-Scale Visual Recognition Challenge (ILSVRC) anordnats. ILSVRC använder en delmängd av ImageNet med ungefär 1 000 bilder i var och en av 1 000 kategorier. Totalt finns det ungefär 1,2 miljoner träningsbilder, 50 000 valideringsbilder och 150 000 testbilder. ImageNet består av bilder med varierande upplösning. Därför har bilderna nedskalats till en fast upplösning på 256×256. Med en rektangulär bild skalas bilden om och den centrala 256×256-fliken tas bort från den resulterande bilden.

Arkitekturen

Den arkitektur som avbildas nedan är VGG16.

VGG16 Artitecture
Figure 1. VGG16-arkitektur

Inmatningen till cov1-skiktet har en fast storlek på 224 x 224 RGB-bilder. Bilden passerar genom en stapel av konvolutionära lager (conv.), där filtren användes med ett mycket litet mottagningsfält: 3×3 (vilket är den minsta storleken för att fånga begreppen vänster/höger, upp/ner, centrum). I en av konfigurationerna används också 1×1 konvolutionsfilter, vilket kan ses som en linjär omvandling av ingångskanalerna (följt av icke-linjäritet). Falsningssteget är fixerat till 1 pixel; den rumsliga utfyllnaden av inmatningen av konvolutionslagren är sådan att den rumsliga upplösningen bevaras efter konvolutionen, dvs. utfyllnaden är 1 pixel för 3×3 konvolutionslagren. Spatial pooling utförs av fem max-pooling-skikt som följer några av konvolutionsskikten (inte alla konvolutionsskikt följs av max-pooling). Max-pooling utförs över ett fönster på 2×2 pixlar, med steg 2.

Tre FC-skikt (Fully-Connected) följer en stapel av konvolutionära skikt (som har olika djup i olika arkitekturer): de två första har 4096 kanaler vardera, det tredje utför ILSVRC-klassificering på 1 000 sätt och innehåller således 1 000 kanaler (en för varje klass). Det sista lagret är det mjuka maximala lagret. Konfigurationen av de fullt anslutna lagren är densamma i alla nätverk.

Alla dolda lager är utrustade med den icke-linjära rektifieringen (ReLU). Det noteras också att inget av nätverken (utom ett) innehåller Local Response Normalisation (LRN), en sådan normalisering förbättrar inte prestandan på ILSVRC-dataset, utan leder till ökad minnesförbrukning och beräkningstid.

Konfigurationer

Konfigurationerna av ConvNet beskrivs i figur 2. Näten hänvisas till sina namn (A-E). Alla konfigurationer följer den generiska utformning som finns i arkitekturen och skiljer sig endast i djupet: från 11 viktskikt i nät A (8 conv. och 3 FC-skikt) till 19 viktskikt i nät E (16 conv. och 3 FC-skikt). Bredden på konv. lagren (antalet kanaler) är ganska liten och börjar med 64 i det första lagret och ökar sedan med en faktor 2 efter varje max-poolinglager tills den når 512.

Figur 2. ConvNet-konfiguration

Användningsfall och genomförande

Det finns tyvärr två stora nackdelar med VGGNet:

  1. Det är smärtsamt långsamt att träna upp.
  2. Nätverksarkitekturens vikter i sig själva är ganska stora (när det gäller disk/bandbredd).
  3. På grund av dess djup och antal fullt anslutna noder är VGG16 över 533 MB. Detta gör att det är en besvärlig uppgift att installera VGG.VGG16 används i många bildklassificeringsproblem med djupinlärning, men mindre nätverksarkitekturer är ofta mer önskvärda (t.ex. SqueezeNet, GoogLeNet, etc.). Men det är en utmärkt byggsten för inlärningsändamål eftersom den är lätt att implementera.

    Resultat

    VGG16 överträffar den tidigare generationens modeller avsevärt i tävlingarna ILSVRC-2012 och ILSVRC-2013. VGG16-resultatet konkurrerar också med vinnaren av klassificeringsuppgiften (GoogLeNet med 6,7 % fel) och överträffar avsevärt det vinnande bidraget Clarifai från ILSVRC-2013, som uppnådde 11,2 % med externa träningsdata och 11,7 % utan. När det gäller prestanda för enskilda nät uppnår VGG16-arkitekturen det bästa resultatet (7,0 % testfel) och överträffar GoogLeNet med 0,9 %.

    VGG16-jämförelse
    VGG16-jämförelse

    Det visades att representationsdjupet är fördelaktigt för klassificeringsnoggrannheten och att toppresultatet för ImageNet-dataseten kan uppnås genom att använda en konventionell ConvNet-arkitektur med väsentligt ökat djup.

Lämna ett svar

Din e-postadress kommer inte publiceras.