VGG16 – Convolutional Network for Classification and Detection

Jun 29, 2021
admin

VGG16 ist ein neuronales Faltungsnetzwerkmodell, das von K. Simonyan und A. Zisserman von der Universität Oxford in der Arbeit „Very Deep Convolutional Networks for Large-Scale Image Recognition“ vorgeschlagen wurde. Das Modell erreicht eine Top-5-Testgenauigkeit von 92,7 % im ImageNet, einem Datensatz mit über 14 Millionen Bildern, die zu 1000 Klassen gehören. Es war eines der bekanntesten Modelle, die bei der ILSVRC-2014 eingereicht wurden. Die Verbesserung gegenüber AlexNet wird dadurch erreicht, dass große Kernel-Filter (11 bzw. 5 in der ersten und zweiten Faltungsschicht) durch mehrere 3×3-Kernel-Filter nacheinander ersetzt werden. VGG16 wurde wochenlang trainiert und verwendete NVIDIA Titan Black GPUs.

vgg16 Architektur
VGG16

Datensatz

ImageNet ist ein Datensatz von über 15 Millionen beschrifteten hochauflösenden Bildern, die zu etwa 22.000 Kategorien gehören. Die Bilder wurden im Internet gesammelt und von menschlichen Beschriftern mit Hilfe von Amazons Crowdsourcing-Tool Mechanical Turk beschriftet. Seit 2010 findet im Rahmen der Pascal Visual Object Challenge ein jährlicher Wettbewerb statt, die ImageNet Large-Scale Visual Recognition Challenge (ILSVRC). ILSVRC verwendet eine Teilmenge von ImageNet mit etwa 1000 Bildern in jeder der 1000 Kategorien. Insgesamt gibt es etwa 1,2 Millionen Trainingsbilder, 50.000 Validierungsbilder und 150.000 Testbilder. ImageNet besteht aus Bildern mit variabler Auflösung. Daher wurden die Bilder auf eine feste Auflösung von 256×256 heruntergerechnet. Bei einem rechteckigen Bild wird das Bild neu skaliert und der zentrale 256×256-Fleck aus dem resultierenden Bild herausgeschnitten.

Die Architektur

Die unten dargestellte Architektur ist VGG16.

VGG16-Architektur
Abbildung 1. VGG16-Architektur

Die Eingabe in die Schicht cov1 hat eine feste Größe von 224 x 224 RGB-Bildern. Das Bild wird durch einen Stapel von Faltungsschichten (conv.) geleitet, wobei die Filter mit einem sehr kleinen rezeptiven Feld verwendet wurden: 3×3 (die kleinste Größe, um die Begriffe links/rechts, oben/unten, Mitte zu erfassen). In einer der Konfigurationen werden auch 1×1-Faltungsfilter verwendet, die als lineare Transformation der Eingangskanäle (gefolgt von Nichtlinearität) angesehen werden können. Der Faltungsschritt ist auf 1 Pixel festgelegt; die räumliche Auffüllung der Faltungsschichteingabe ist so, dass die räumliche Auflösung nach der Faltung erhalten bleibt, d. h. die Auffüllung beträgt 1 Pixel für 3×3 Faltungsschichten. Das räumliche Pooling wird von fünf Max-Pooling-Schichten durchgeführt, die auf einige der Faltungsschichten folgen (nicht auf alle Faltungsschichten folgt das Max-Pooling). Max-Pooling wird über ein 2×2-Pixel-Fenster mit Stride 2 durchgeführt.

Drei Fully-Connected (FC)-Schichten folgen auf einen Stapel von Faltungsschichten (der in verschiedenen Architekturen eine unterschiedliche Tiefe hat): die ersten beiden haben jeweils 4096 Kanäle, die dritte führt eine 1000-fache ILSVRC-Klassifizierung durch und enthält daher 1000 Kanäle (einen für jede Klasse). Die letzte Schicht ist die Soft-Max-Schicht. Die Konfiguration der vollständig verbundenen Schichten ist in allen Netzen gleich.

Alle versteckten Schichten sind mit der Rektifikations-Nichtlinearität (ReLU) ausgestattet. Es ist auch anzumerken, dass keines der Netze (außer einem) die Local Response Normalisation (LRN) enthält, eine solche Normalisierung verbessert die Leistung auf dem ILSVRC-Datensatz nicht, führt aber zu erhöhtem Speicherverbrauch und Rechenzeit.

Konfigurationen

Die ConvNet-Konfigurationen sind in Abbildung 2 skizziert. Die Netze werden mit ihren Namen bezeichnet (A-E). Alle Konfigurationen folgen dem generischen Design der Architektur und unterscheiden sich nur in der Tiefe: von 11 Gewichtungsschichten im Netz A (8 konv. und 3 FC-Schichten) bis 19 Gewichtungsschichten im Netz E (16 konv. und 3 FC-Schichten). Die Breite der konv. Schichten (die Anzahl der Kanäle) ist eher gering, sie beginnt mit 64 in der ersten Schicht und steigt dann um den Faktor 2 nach jeder Max-Pooling-Schicht, bis sie 512 erreicht.

Abbildung 2. ConvNet Konfiguration

Anwendungsfälle und Implementierung

Leider gibt es zwei große Nachteile von VGGNet:

  1. Es ist schmerzhaft langsam zu trainieren.
  2. Die Gewichte der Netzwerkarchitektur selbst sind ziemlich groß (in Bezug auf Festplatte/Bandbreite).

Aufgrund seiner Tiefe und der Anzahl der voll verbundenen Knoten ist VGG16 über 533MB groß. VGG16 wird in vielen Deep-Learning-Problemen zur Bildklassifizierung verwendet, aber kleinere Netzwerkarchitekturen sind oft wünschenswerter (wie SqueezeNet, GoogLeNet usw.). Aber es ist ein großartiger Baustein für Lernzwecke, da es einfach zu implementieren ist.

Ergebnis

VGG16 übertrifft die vorherige Generation von Modellen in den Wettbewerben ILSVRC-2012 und ILSVRC-2013 deutlich. Das VGG16-Ergebnis konkurriert auch mit dem Gewinner der Klassifizierungsaufgabe (GoogLeNet mit 6,7 % Fehler) und übertrifft deutlich den ILSVRC-2013-Siegerbeitrag Clarifai, der 11,2 % mit externen Trainingsdaten und 11,7 % ohne diese erreichte. Was die Leistung eines einzelnen Netzes betrifft, so erzielt die VGG16-Architektur das beste Ergebnis (7,0 % Testfehler) und übertrifft ein einzelnes GoogLeNet um 0,9 %.

VGG16-Vergleich
VGG16-Vergleich

Es konnte gezeigt werden, dass die Repräsentationstiefe für die Klassifizierungsgenauigkeit von Vorteil ist und dass die beste Leistung auf dem ImageNet-Herausforderungsdatensatz mit einer konventionellen ConvNet-Architektur mit wesentlich höherer Tiefe erreicht werden kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.