VGG16 – Rețea convoluțională pentru clasificare și detecție
VGG16 este un model de rețea neuronală convoluțională propus de K. Simonyan și A. Zisserman de la Universitatea din Oxford în lucrarea „Very Deep Convolutional Networks for Large-Scale Image Recognition”. Modelul atinge o acuratețe de 92,7% în testul top 5 în ImageNet, care este un set de date de peste 14 milioane de imagini aparținând la 1000 de clase. Acesta a fost unul dintre cele mai renumite modele prezentate la ILSVRC-2014. Îmbunătățirea față de AlexNet se realizează prin înlocuirea filtrelor de dimensiuni mari de tip kernel (11 și 5 în primul și, respectiv, al doilea strat convoluțional) cu mai multe filtre de dimensiuni de tip kernel 3×3, unul după altul. VGG16 a fost antrenat timp de săptămâni și a folosit GPU-uri NVIDIA Titan Black.
Set de date
ImageNet este un set de date de peste 15 milioane de imagini de înaltă rezoluție etichetate aparținând la aproximativ 22.000 de categorii. Imaginile au fost colectate de pe web și etichetate de etichetatori umani folosind instrumentul de crowd-sourcing Mechanical Turk de la Amazon. Începând din 2010, ca parte a Pascal Visual Object Challenge, a avut loc o competiție anuală numită ImageNet Large-Scale Visual Recognition Challenge (ILSVRC). ILSVRC utilizează un subset al ImageNet cu aproximativ 1000 de imagini în fiecare dintre cele 1000 de categorii. În total, există aproximativ 1,2 milioane de imagini de antrenament, 50.000 de imagini de validare și 150.000 de imagini de testare. ImageNet este format din imagini cu rezoluție variabilă. Prin urmare, imaginile au fost eșantionate la o rezoluție fixă de 256×256. Având în vedere o imagine dreptunghiulară, imaginea este redimensionată și se decupează pata centrală de 256×256 din imaginea rezultată.
Arhitectura
Arhitectura descrisă mai jos este VGG16.
Arhitectura VGG16
Intrarea în stratul cov1 este o imagine RGB de dimensiune fixă 224 x 224. Imaginea este trecută printr-o stivă de straturi convoluționale (conv.), în care filtrele au fost utilizate cu un câmp receptiv foarte mic: 3×3 (care este cea mai mică dimensiune pentru a surprinde noțiunea de stânga/dreapta, sus/jos, centru). Într-una dintre configurații, se utilizează, de asemenea, filtre de convoluție 1×1, care pot fi văzute ca o transformare liniară a canalelor de intrare (urmată de neliniaritate). Pasul de convoluție este fixat la 1 pixel; umplutura spațială a straturilor de convecție de intrare este astfel încât rezoluția spațială să fie păstrată după convoluție, adică umplutura este de 1 pixel pentru straturi de convecție 3×3. Gruparea spațială se realizează prin cinci straturi de max-pooling, care urmează unele dintre straturile de conventie (nu toate straturile de conventie sunt urmate de max-pooling). Max-pooling-ul se realizează pe o fereastră de 2×2 pixeli, cu pasul 2.
Trei straturi Fully-Connected (FC) urmează o stivă de straturi convoluționale (care are o adâncime diferită în diferite arhitecturi): primele două au 4096 de canale fiecare, al treilea realizează o clasificare ILSVRC cu 1000 de căi și conține astfel 1000 de canale (unul pentru fiecare clasă). Ultimul strat este stratul soft-max. Configurația straturilor complet conectate este aceeași în toate rețelele.
Toate straturile ascunse sunt echipate cu neliniaritatea de rectificare (ReLU). De asemenea, se remarcă faptul că niciuna dintre rețele (cu excepția uneia) nu conține normalizarea răspunsului local (LRN), o astfel de normalizare nu îmbunătățește performanța pe setul de date ILSVRC, dar duce la creșterea consumului de memorie și a timpului de calcul.
Configurări
Configurările ConvNet sunt prezentate în figura 2. Rețelele sunt menționate cu numele lor (A-E). Toate configurațiile urmează designul generic prezent în arhitectură și diferă doar prin adâncime: de la 11 straturi de greutate în rețeaua A (8 straturi conv. și 3 straturi FC) la 19 straturi de greutate în rețeaua E (16 straturi conv. și 3 straturi FC). Lățimea straturilor de conv. (numărul de canale) este destul de mică, pornind de la 64 în primul strat și crescând apoi cu un factor de 2 după fiecare strat de max-pooling, până când ajunge la 512.
Cazuri de utilizare și implementare
Din păcate, există două dezavantaje majore cu VGGNet:
- Este dureros de lent la antrenare.
- Ponderile arhitecturii rețelei în sine sunt destul de mari (în ceea ce privește discul/lățimea de bandă).
Datorită profunzimii sale și numărului de noduri complet conectate, VGG16 are peste 533MB. Acest lucru face ca implementarea VGG să fie o sarcină obositoare. VGG16 este utilizată în multe probleme de clasificare a imaginilor prin învățare profundă; cu toate acestea, arhitecturile de rețea mai mici sunt adesea mai de dorit (cum ar fi SqueezeNet, GoogLeNet etc.). Dar este un bloc de construcție excelent în scopul învățării, deoarece este ușor de implementat.
Rezultate
VGG16 depășește semnificativ generația anterioară de modele în competițiile ILSVRC-2012 și ILSVRC-2013. Rezultatul VGG16 concurează, de asemenea, cu câștigătorul sarcinii de clasificare (GoogLeNet cu o eroare de 6,7%) și depășește substanțial propunerea câștigătoare ILSVRC-2013, Clarifai, care a obținut 11,2% cu date de instruire externe și 11,7% fără acestea. În ceea ce privește performanța unei singure rețele, arhitectura VGG16 obține cel mai bun rezultat (7,0% eroare de testare), depășind o singură rețea GoogLeNet cu 0,9%.
S-a demonstrat că adâncimea de reprezentare este benefică pentru acuratețea clasificării și că performanța de ultimă generație pe setul de date ImageNet challenge poate fi obținută folosind o arhitectură ConvNet convențională cu o adâncime substanțial crescută.
.