VGG16 – Convolutional Network for Classification and Detection

cze 29, 2021
admin

VGG16 to model konwolwentnej sieci neuronowej zaproponowany przez K. Simonyana i A. Zissermana z University of Oxford w pracy „Very Deep Convolutional Networks for Large-Scale Image Recognition”. Model ten osiąga 92,7% dokładności testu top-5 w ImageNet, który jest zbiorem danych zawierającym ponad 14 milionów obrazów należących do 1000 klas. Był to jeden z najsłynniejszych modeli zgłoszonych do ILSVRC-2014. Udoskonalenie w stosunku do AlexNet polega na zastąpieniu dużych filtrów o rozmiarze jądra (11 i 5, odpowiednio w pierwszej i drugiej warstwie konwolucyjnej) wieloma filtrami o rozmiarze jądra 3×3, jeden po drugim. VGG16 był trenowany przez kilka tygodni przy użyciu procesorów graficznych NVIDIA Titan Black.

vgg16 architektura
VGG16

Zbiór danych

ImageNet to zbiór ponad 15 milionów oznaczonych obrazów o wysokiej rozdzielczości należących do około 22 000 kategorii. Obrazy zostały zebrane z sieci i oznakowane przez ludzi etykietujących za pomocą narzędzia Mechanical Turk firmy Amazon. Od 2010 roku, w ramach Pascal Visual Object Challenge, organizowany jest coroczny konkurs o nazwie ImageNet Large-Scale Visual Recognition Challenge (ILSVRC). ILSVRC wykorzystuje podzbiór ImageNet zawierający około 1000 obrazów w każdej z 1000 kategorii. W sumie jest to około 1,2 miliona obrazów treningowych, 50 000 obrazów walidacyjnych i 150 000 obrazów testowych. ImageNet składa się z obrazów o zmiennej rozdzielczości. Dlatego obrazy zostały poddane down-samplingowi do stałej rozdzielczości 256×256. Biorąc pod uwagę prostokątny obraz, jest on przeskalowywany i wykadrowany z centralnego obszaru 256×256 z wynikowego obrazu.

Architektura

Architektura przedstawiona poniżej to VGG16.

Architektura VGG16
Figura 1. Architektura VGG16

Wejściem do warstwy cov1 jest obraz RGB o stałym rozmiarze 224 x 224. Obraz ten przechodzi przez stos warstw konwolucyjnych (conv.), gdzie zastosowano filtry o bardzo małym polu receptywnym: 3×3 (jest to najmniejszy rozmiar pozwalający uchwycić pojęcie lewo/prawo, góra/dół, środek). W jednej z konfiguracji wykorzystano również filtry konwolucyjne 1×1, które można traktować jako liniowe przekształcenie kanałów wejściowych (po którym następuje nieliniowość). Pasek konwolucji jest ustalony na 1 piksel; padding przestrzenny na wejściu warstwy konwolucyjnej jest taki, że rozdzielczość przestrzenna jest zachowana po konwolucji, tzn. padding wynosi 1 piksel dla 3×3 warstw konwolucyjnych. Łączenie przestrzenne realizowane jest przez pięć warstw max-poolingowych, które następują po niektórych warstwach konwolucyjnych (nie po wszystkich warstwach konwolucyjnych następuje max-pooling). Max-pooling jest wykonywany na oknie 2×2 piksele, z rozstępem 2.

Trzy warstwy Fully-Connected (FC) następują po stosie warstw konwolucyjnych (który ma różną głębokość w różnych architekturach): dwie pierwsze mają po 4096 kanałów, trzecia wykonuje 1000-kierunkową klasyfikację ILSVRC i dlatego zawiera 1000 kanałów (po jednym dla każdej klasy). Ostatnią warstwą jest warstwa soft-max. Konfiguracja warstw w pełni połączonych jest taka sama we wszystkich sieciach.

Wszystkie warstwy ukryte wyposażone są w nieliniowość rektyfikacyjną (ReLU). Należy również zauważyć, że żadna z sieci (poza jedną) nie zawiera lokalnej normalizacji odpowiedzi (LRN), normalizacja taka nie poprawia wydajności na zbiorze danych ILSVRC, a prowadzi do zwiększenia zużycia pamięci i czasu obliczeń.

Konfiguracje

Konfiguracje sieci ConvNet zostały przedstawione na rysunku 2. Sieci odnoszą się do swoich nazw (A-E). Wszystkie konfiguracje są zgodne z ogólnym projektem obecnym w architekturze i różnią się jedynie głębokością: od 11 warstw wagowych w sieci A (8 warstw conv. i 3 warstwy FC) do 19 warstw wagowych w sieci E (16 warstw conv. i 3 warstwy FC). Szerokość warstw conv. (liczba kanałów) jest raczej niewielka, zaczyna się od 64 w pierwszej warstwie, a następnie zwiększa się o współczynnik 2 po każdej warstwie max-pooling, aż do osiągnięcia 512.

Rysunek 2. Konfiguracja ConvNet

Przypadki użycia i implementacja

Niestety, istnieją dwie główne wady VGGNet:

  1. Jest boleśnie powolny do wytrenowania.
  2. Same wagi architektury sieci są dość duże (w odniesieniu do dysku/szerokości pasma).

Dzięki swojej głębokości i liczbie w pełni połączonych węzłów, VGG16 ma ponad 533MB. To sprawia, że wdrażanie VGG jest męczącym zadaniem.VGG16 jest używany w wielu problemach klasyfikacji obrazów opartych na głębokim uczeniu, jednak mniejsze architektury sieciowe są często bardziej pożądane (takie jak SqueezeNet, GoogLeNet, itp.). Jest to jednak świetny budulec do celów uczenia się, ponieważ jest łatwy do zaimplementowania.

Wyniki

VGG16 znacząco przewyższa modele poprzedniej generacji w konkursach ILSVRC-2012 i ILSVRC-2013. Wynik VGG16 jest również konkurencyjny dla zwycięzcy zadania klasyfikacji (GoogLeNet z błędem 6,7%) i znacząco przewyższa zwycięskie zgłoszenie ILSVRC-2013 – Clarifai, które osiągnęło 11,2% z zewnętrznymi danymi treningowymi i 11,7% bez nich. Jeśli chodzi o wydajność pojedynczej sieci, architektura VGG16 osiąga najlepszy wynik (7,0% błędu testu), przewyższając pojedynczą sieć GoogLeNet o 0,9%.

Porównanie VGG16
Porównanie VGG16

Zademonstrowano, że głębokość reprezentacji ma korzystny wpływ na dokładność klasyfikacji oraz że najnowocześniejszą wydajność na zbiorze danych ImageNet można osiągnąć przy użyciu konwencjonalnej architektury ConvNet ze znacznie zwiększoną głębią.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.