VGG16 – Convolutional Network for Classification and Detection

kesä 29, 2021
admin

VGG16 on Oxfordin yliopiston K. Simonyanin ja A. Zissermanin artikkelissa ”Very Deep Convolutional Networks for Large-Scale Image Recognition” (Erittäin syvät konvoluutioverkot suuren mittakaavan kuvantunnistukseen) ehdottama konvoluutiohermoverkkomalli. Malli saavuttaa 92,7 prosentin top-5-testitarkkuuden ImageNet-tietokannassa, joka sisältää yli 14 miljoonaa kuvaa, jotka kuuluvat 1000 luokkaan. Se oli yksi ILSVRC-2014-tapahtumaan lähetetyistä kuuluisista malleista. Se parantaa AlexNetiä korvaamalla suuret kernelin kokoiset suodattimet (11 ja 5 ensimmäisessä ja toisessa konvoluutiokerroksessa) useilla 3×3 kernelin kokoisilla suodattimilla peräkkäin. VGG16:ta koulutettiin viikkoja, ja siinä käytettiin NVIDIA Titan Black GPU:ta.

vgg16-arkkitehtuuri
VGG16

DataSet

ImageNet on tietokokonaisuus, joka koostuu yli 15 miljoonasta leimatusta korkearesoluutioisesta kuvasta, jotka kuuluvat karkeasti arvioiden noin 22 000 luokkaan. Kuvat kerättiin verkosta ja ihmismerkitsijät merkitsivät ne Amazonin Mechanical Turk -joukko-ostotyökalun avulla. Vuodesta 2010 lähtien osana Pascal Visual Object Challenge -kilpailua on järjestetty vuosittain kilpailu nimeltä ImageNet Large-Scale Visual Recognition Challenge (ILSVRC). ILSVRC:ssä käytetään ImageNetin osajoukkoa, jossa on noin 1000 kuvaa kussakin 1000 kategoriassa. Kaikkiaan harjoituskuvia on noin 1,2 miljoonaa, validointikuvia 50 000 ja testikuvia 150 000. ImageNet koostuu vaihtelevan resoluution kuvista. Sen vuoksi kuvat on näytteistetty kiinteään 256×256-resoluutioon. Kun annetaan suorakulmainen kuva, kuva skaalataan uudelleen ja tuloksena syntyvästä kuvasta rajataan pois keskimmäinen 256×256-kokoinen laikku.

Arkkitehtuuri

Alhaalla kuvattu arkkitehtuuri on VGG16.

VGG16-arkkitehtuuri
Avio 1. VGG16-arkkitehtuuri

Cov1-kerroksen syötteenä on kiinteän kokoinen 224 x 224 RGB-kuva. Kuva ohjataan konvoluutiokerrosten (conv.) pinon läpi, jossa käytettiin suodattimia, joiden reseptiivinen kenttä on hyvin pieni: 3×3 (joka on pienin koko, jolla voidaan kuvata käsitteet vasen/oikea, ylös/alas, keskellä). Yhdessä kokoonpanossa käytetään myös 1×1-konvoluutiosuodattimia, jotka voidaan nähdä tulokanavien lineaarisena muunnoksena (jota seuraa epälineaarisuus). Konvoluution askel on 1 pikseli; konvoluutiokerroksen syötteen tilallinen täyte on sellainen, että tilallinen resoluutio säilyy konvoluution jälkeen, eli täyte on 1 pikseli 3×3 konvoluutiokerroksille. Spatiaalinen yhdistäminen suoritetaan viidellä max-pooling-kerroksella, jotka seuraavat joitakin konv. kerroksia (kaikkia konv. kerroksia ei seurata max-pooling). Max-pooling suoritetaan 2×2 pikselin ikkunassa, jonka askelpituus on 2.

Kolme Fully-Connected (FC) -kerrosta seuraa konvoluutiokerrosten pinoa (jonka syvyys vaihtelee eri arkkitehtuureissa): kahdessa ensimmäisessä on 4096 kanavaa kummassakin, kolmannessa suoritetaan 1000-tapainen ILSVRC-luokitus, joten se sisältää 1000 kanavaa (yksi kullekin luokalle). Viimeinen kerros on soft-max-kerros. Täysin kytkettyjen kerrosten konfiguraatio on sama kaikissa verkoissa.

Kaikki piilokerrokset on varustettu oikaisevalla (ReLU) epälineaarisuudella. On myös huomattava, että yksikään verkko (yhtä lukuun ottamatta) ei sisällä paikallisen vasteen normalisointia (LRN, Local Response Normalisation), tällainen normalisointi ei paranna suorituskykyä ILSVRC-tietokannassa, mutta lisää muistin kulutusta ja laskenta-aikaa.

Konfiguraatiot

ConvNet-konfiguraatiot on esitetty kuvassa 2. Verkoihin viitataan niiden nimillä (A-E). Kaikki konfiguraatiot noudattavat arkkitehtuurissa esiintyvää geneeristä suunnittelua ja eroavat toisistaan vain syvyydessä: verkon A 11 painokerroksesta (8 konv. ja 3 FC-kerrosta) verkon E 19 painokerrokseen (16 konv. ja 3 FC-kerrosta). Konv. kerrosten leveys (kanavien lukumäärä) on melko pieni, sillä se alkaa 64:stä ensimmäisessä kerroksessa ja kasvaa sitten kertoimella 2 jokaisen max-pooling-kerroksen jälkeen, kunnes se on 512.

Kuva 2. ConvNet-konfiguraatio

Käyttökohteet ja toteutus

VGGNetissä on valitettavasti kaksi merkittävää haittaa:

  1. Verkon harjoittelu on tuskallisen hidasta.
  2. Verkkoarkkitehtuurin painot itsessään ovat melko suuria (levyn/kaistanleveyden suhteen).

Syvyydeltään ja täysin kytkeytyneiden solmupisteidensä määrän vuoksi VGG16:n koko on reilusti yli 533 Mt. Tämä tekee VGG:n käyttöönotosta työlästä.VGG16:ta käytetään monissa syväoppimisen kuvanluokitusongelmissa; pienemmät verkkoarkkitehtuurit ovat kuitenkin usein toivottavampia (kuten SqueezeNet, GoogLeNet jne.). Se on kuitenkin loistava rakennuspalikka oppimistarkoitukseen, koska se on helppo toteuttaa.

Tulos

VGG16 päihittää merkittävästi edellisen sukupolven mallit ILSVRC-2012- ja ILSVRC-2013-kilpailuissa. VGG16:n tulos kilpailee myös luokittelutehtävän voittajasta (GoogLeNet 6,7 %:n virheellä) ja päihittää huomattavasti ILSVRC-2013:n voittaneen Clarifai-ehdotuksen, joka saavutti 11,2 %:n tuloksen ulkoisen harjoitusdatan kanssa ja 11,7 % ilman sitä. Yksittäisen verkon suorituskyvyn osalta VGG16-arkkitehtuuri saavuttaa parhaan tuloksen (7,0 % testivirhe) ja päihittää yksittäisen GoogLeNet-arkkitehtuurin 0,9 %:lla.

VGG16-vertailu
VGG16-vertailu

On osoitettu, että esityssyvyys vaikuttaa myönteisesti luokittelutarkkuuteen, ja että ImageNet-haastetietokannassa saavutetaan huipputason suorituskyky käyttämällä tavanomaista ConvNet-arkkitehtuuria, jossa on olennaisesti lisää syvyyttä.

Vastaa

Sähköpostiosoitettasi ei julkaista.