VGG16 – Convolutional Network for Classification and Detection

jun 29, 2021
admin

VGG16 er en konvolutional neural netværksmodel, der er foreslået af K. Simonyan og A. Zisserman fra University of Oxford i artiklen “Very Deep Convolutional Networks for Large-Scale Image Recognition”. Modellen opnår en top-5-testnøjagtighed på 92,7 % i ImageNet, som er et datasæt med over 14 millioner billeder tilhørende 1000 klasser. Det var en af de berømte modeller, der blev indsendt til ILSVRC-2014. Den opnår en forbedring i forhold til AlexNet ved at erstatte store filtre af kerne-størrelse (11 og 5 i henholdsvis det første og andet konvolutionelle lag) med flere filtre af 3×3 kerne-størrelse efter hinanden. VGG16 blev trænet i flere uger og brugte NVIDIA Titan Black GPU’er.

vgg16-arkitektur
VGG16

Datasæt

ImageNet er et datasæt med over 15 millioner mærkede billeder i høj opløsning, der tilhører ca. 22.000 kategorier. Billederne blev indsamlet fra internettet og mærket af menneskelige mærkere ved hjælp af Amazons Mechanical Turk crowd-sourcing-værktøj. Siden 2010 er der som led i Pascal Visual Object Challenge blevet afholdt en årlig konkurrence kaldet ImageNet Large-Scale Visual Recognition Challenge (ILSVRC) som en del af Pascal Visual Object Challenge. ILSVRC anvender en delmængde af ImageNet med ca. 1000 billeder i hver af 1000 kategorier. I alt er der ca. 1,2 mio. træningsbilleder, 50 000 valideringsbilleder og 150 000 testbilleder. ImageNet består af billeder med variabel opløsning. Derfor er billederne blevet down-samplet til en fast opløsning på 256×256. Gives et rektangulært billede, omskaleres billedet og beskæres det centrale 256×256-felt ud af det resulterende billede.

Arkitekturen

Den arkitektur, der er afbildet nedenfor, er VGG16.

VGG16-arkitektur
Figur 1. VGG16-arkitektur

Indgangen til cov1-laget har en fast størrelse på 224 x 224 RGB-billeder. Billedet sendes gennem en stak af konvolutionelle lag (conv.), hvor filtrene blev anvendt med et meget lille receptivt felt: 3×3 (hvilket er den mindste størrelse til at indfange begreberne venstre/højre, op/ned og centrum). I en af konfigurationer anvendes der også 1×1 konvolutionsfiltre, som kan ses som en lineær transformation af indgangskanalerne (efterfulgt af ikke-linearitet). Foldningsskridtet er fastlåst til 1 pixel; den rumlige udfyldning af indgangen til det indgående konvolutionslag er således, at den rumlige opløsning bevares efter konvolutionen, dvs. at udfyldningen er 1 pixel for 3×3 konvolutionslag. Den rumlige pooling udføres af fem max-pooling-lag, som følger nogle af conv. lagene (ikke alle conv. lagene følges af max-pooling). Max-pooling udføres over et vindue på 2×2 pixel med skridt 2.

Tre Fully-Connected (FC)-lag følger en stak af konvolutionelle lag (som har forskellig dybde i forskellige arkitekturer): de to første har hver 4096 kanaler, det tredje udfører 1000-vejs ILSVRC-klassifikation og indeholder således 1000 kanaler (en for hver klasse). Det sidste lag er soft-max-laget. Konfigurationen af de fuldt forbundne lag er den samme i alle netværk.

Alle skjulte lag er udstyret med ikke-linearitet ved rektificering (ReLU). Det bemærkes også, at ingen af nettene (undtagen ét) indeholder Local Response Normalisation (LRN), en sådan normalisering forbedrer ikke ydeevnen på ILSVRC-datasættet, men fører til øget hukommelsesforbrug og beregningstid.

Konfigurationer

Konfigurationerne af ConvNet’erne er skitseret i figur 2. Der henvises til nettene ved deres navne (A-E). Alle konfigurationer følger det generiske design, der findes i arkitekturen, og adskiller sig kun i dybden: fra 11 vægtlag i net A (8 conv. og 3 FC-lag) til 19 vægtlag i net E (16 conv. og 3 FC-lag). Bredden af conv. lag (antallet af kanaler) er ret lille, idet den starter med 64 i det første lag og derefter øges med en faktor 2 efter hvert max-pooling lag, indtil den når 512.

Figur 2. ConvNet-konfiguration

Anvendelsestilfælde og implementering

Der er desværre to store ulemper ved VGGNet:

  1. Det er smerteligt langsomt at træne.
  2. Netværksarkitekturens vægte i sig selv er ret store (med hensyn til disk/båndbredde).

På grund af dens dybde og antallet af fuldt forbundne knuder er VGG16 over 533 MB. Dette gør udrulning af VGG til en trættende opgave. VGG16 anvendes i mange deep learning-billedklassificeringsproblemer; mindre netværksarkitekturer er dog ofte mere ønskelige (såsom SqueezeNet, GoogLeNet osv.). Men det er en fantastisk byggesten til læringsformål, da den er nem at implementere.

Resultat

VGG16 overgår den tidligere generation af modeller betydeligt i ILSVRC-2012- og ILSVRC-2013-konkurrencerne. VGG16-resultatet konkurrerer også med vinderen af klassifikationsopgaven (GoogLeNet med en fejl på 6,7 %) og overgår væsentligt det vindende ILSVRC-2013-indlæg Clarifai, som opnåede 11,2 % med eksterne træningsdata og 11,7 % uden. Hvad angår enkeltnetspræstationen, opnår VGG16-arkitekturen det bedste resultat (7,0 % testfejl) og overgår et enkelt GoogLeNet med 0,9 %.

VGG16 sammenligning
VGG16 sammenligning

Det blev påvist, at repræsentationsdybden er gavnlig for klassifikationsnøjagtigheden, og at der kan opnås state-of-the-art-præstationer på ImageNet-udfordringsdatasættet ved hjælp af en konventionel ConvNet-arkitektur med væsentligt øget dybde.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.