logo

VGG-16 | CNN-Modell

Eine Convolutional Neural Network (CNN)-Architektur ist ein Deep-Learning-Modell, das für die Verarbeitung strukturierter gitterartiger Daten wie Bilder entwickelt wurde. Es besteht aus mehreren Schichten, einschließlich Faltungs-, Pooling- und vollständig verbundenen Schichten. CNNs sind aufgrund ihrer hierarchischen Merkmalsextraktionsfunktionen äußerst effektiv für Aufgaben wie Bildklassifizierung, Objekterkennung und Bildsegmentierung.

VGG-16

Das VGG-16-Modell ist eine Convolutional Neural Network (CNN)-Architektur, die von der Visual Geometry Group (VGG) an der Universität Oxford vorgeschlagen wurde. Es zeichnet sich durch seine Tiefe aus und besteht aus 16 Schichten, darunter 13 Faltungsschichten und 3 vollständig verbundene Schichten. VGG-16 ist bekannt für seine Einfachheit und Effektivität sowie für seine Fähigkeit, bei verschiedenen Computer-Vision-Aufgaben, einschließlich Bildklassifizierung und Objekterkennung, eine starke Leistung zu erzielen. Die Architektur des Modells besteht aus einem Stapel von Faltungsschichten, gefolgt von Max-Pooling-Schichten mit zunehmender Tiefe. Dieses Design ermöglicht es dem Modell, komplexe hierarchische Darstellungen visueller Merkmale zu erlernen, was zu robusten und genauen Vorhersagen führt. Trotz seiner Einfachheit im Vergleich zu neueren Architekturen bleibt VGG-16 aufgrund seiner Vielseitigkeit und hervorragenden Leistung eine beliebte Wahl für viele Deep-Learning-Anwendungen.



Die ImageNet Large Scale Visual Recognition Challenge (ILSVRC) ist ein jährlicher Wettbewerb im Bereich Computer Vision, bei dem Teams Aufgaben wie Objektlokalisierung und Bildklassifizierung bewältigen. VGG16, 2014 von Karen Simonyan und Andrew Zisserman vorgeschlagen, erreichte bei beiden Aufgaben Spitzenplätze, indem es Objekte aus 200 Klassen erkannte und Bilder in 1000 Kategorien klassifizierte.


Kontrollstrukturen Python

VGG-16-Architektur



Dieses Modell erreicht 92,7 % Top-5 Testgenauigkeit des ImageNet-Datensatzes, der enthält 14 Millionen Bilder, die zu 1000 Klassen gehören.

Ziel des VGG-16-Modells:

Der ImageNet-Datensatz enthält Bilder mit einer festen Größe von 224*224 und verfügen über RGB-Kanäle. Wir haben also einen Tensor von (224, 224, 3) als unser Input. Dieses Modell verarbeitet das Eingabebild und gibt den Vektor aus 1000 Werte:

hat{y} =egin{bmatrix} hat{y_0} hat{y_1} hat{y_2} . . . hat{y}_{999} end{bmatrix}



Dieser Vektor repräsentiert die Klassifizierungswahrscheinlichkeit für die entsprechende Klasse. Angenommen, wir haben ein Modell, das mit Wahrscheinlichkeit vorhersagt, dass das Bild zur Klasse 0 gehört 1 , Klasse 1 mit Wahrscheinlichkeit 0,05 , Klasse 2 mit Wahrscheinlichkeit 0,05 , Klasse 3 mit Wahrscheinlichkeit 0,03 , Klasse 780 mit Wahrscheinlichkeit 0,72 , Klasse 999 mit Wahrscheinlichkeit 0,05 und alle anderen Klassen mit 0 .

Der Klassifizierungsvektor dafür lautet also:

hat{y}=egin{bmatrix} hat{y_{0}}=0.1 0.05 0.05 0.03 . . . hat{y_{780}} = 0.72 . . hat{y_{999}} = 0.05 end{bmatrix}

Um sicherzustellen, dass sich diese Wahrscheinlichkeiten addieren 1 , wir verwenden die Softmax-Funktion.

Javascript

Diese Softmax-Funktion ist wie folgt definiert:

hat{y}_i = frac{e^{z_i}}{sum_{j=1}^{n} e^{z_j}}

Danach nehmen wir die 5 wahrscheinlichsten Kandidaten in den Vektor auf.

C =egin{bmatrix} 780 0 1 2 999 end{bmatrix}

und unser Grundwahrheitsvektor ist wie folgt definiert:

G = egin{bmatrix} G_{0} G_{1} G_{2} end{bmatrix}=egin{bmatrix} 780 2 999 end{bmatrix}

Dann definieren wir unsere Fehlerfunktion wie folgt:

E = frac{1}{n}sum_{k}min_{i}d(c_{i}, G_{k})

ein Array in Java

Es berechnet den Mindestabstand zwischen jeder Ground-Truth-Klasse und den vorhergesagten Kandidaten, wobei die Abstandsfunktion d wie folgt definiert ist:

  • d=0 wennc_i=G_k
  • sonst d=1

Die Verlustfunktion für dieses Beispiel lautet also:

egin{aligned} E &=frac{1}{3}left ( min_{i}d(c_{i}, G_{1}) +min_{i}d(c_{i}, G_{2})+min_{i}d(c_{i}, G_{3}) ight ) &= frac{1}{3}(0 + 0 +0) &=0 end{aligned}

Da sich alle Kategorien in der Grundwahrheit in der vorhergesagten Top-5-Matrix befinden, beträgt der Verlust 0.

VGG Die Architektur:

Die VGG-16-Architektur ist ein Deep Convolutional Neural Network (CNN), das für Bildklassifizierungsaufgaben entwickelt wurde. Es wurde von der Visual Geometry Group an der Universität Oxford eingeführt. VGG-16 zeichnet sich durch seine Einfachheit und einheitliche Architektur aus, wodurch es leicht zu verstehen und zu implementieren ist.

enthält Teilzeichenfolge Java

Die VGG-16-Konfiguration besteht typischerweise aus 16 Schichten, darunter 13 Faltungsschichten und 3 vollständig verbundene Schichten. Diese Schichten sind in Blöcken organisiert, wobei jeder Block mehrere Faltungsschichten enthält, gefolgt von einer Max-Pooling-Schicht für das Downsampling.

VGG-16-Architekturkarte

Hier ist eine Aufschlüsselung der VGG-16-Architektur basierend auf den bereitgestellten Details:

  1. Eingabeebene:
    1. Eingabedimensionen: (224, 224, 3)
  2. Faltungsschichten (64 Filter, 3×3 Filter, gleiche Polsterung):
    • Zwei aufeinanderfolgende Faltungsschichten mit jeweils 64 Filtern und einer Filtergröße von 3×3.
    • Die gleiche Polsterung wird angewendet, um die räumlichen Abmessungen beizubehalten.
  3. Max. Pooling-Schicht (2×2, Schritt 2):
    • Max-Pooling-Schicht mit einer Poolgröße von 2×2 und einem Schritt von 2.
  4. Faltungsschichten (128 Filter, 3×3 Filter, gleiche Polsterung):
    • Zwei aufeinanderfolgende Faltungsschichten mit jeweils 128 Filtern und einer Filtergröße von 3×3.
  5. Max. Pooling-Schicht (2×2, Schritt 2):
    • Max-Pooling-Schicht mit einer Poolgröße von 2×2 und einem Schritt von 2.
  6. Faltungsschichten (256 Filter, 3×3 Filter, gleiche Polsterung):
    • Zwei aufeinanderfolgende Faltungsschichten mit jeweils 256 Filtern und einer Filtergröße von 3×3.
  7. Faltungsschichten (512 Filter, 3×3 Filter, gleiche Polsterung):
    • Zwei Sätze von drei aufeinanderfolgenden Faltungsschichten mit jeweils 512 Filtern und einer Filtergröße von 3×3.
  8. Max. Pooling-Schicht (2×2, Schritt 2):
    • Max-Pooling-Schicht mit einer Poolgröße von 2×2 und einem Schritt von 2.
  9. Stapel von Faltungsschichten und maximales Pooling:
    • Zwei zusätzliche Faltungsschichten nach dem vorherigen Stapel.
    • Filtergröße: 3×3.
  10. Abflachung:
    • Reduzieren Sie die Ausgabe-Feature-Map (7x7x512) in einen Vektor der Größe 25088.
  11. Vollständig verbundene Schichten:
    • Drei vollständig verbundene Schichten mit ReLU-Aktivierung.
    • Erste Ebene mit Eingabegröße 25088 und Ausgabegröße 4096.
    • Zweite Ebene mit Eingabegröße 4096 und Ausgabegröße 4096.
    • Dritte Schicht mit Eingabegröße 4096 und Ausgabegröße 1000, entsprechend den 1000 Klassen in der ILSVRC-Herausforderung.
    • Die Softmax-Aktivierung wird zur Klassifizierung auf den Ausgang der dritten vollständig verbundenen Schicht angewendet.

Diese Architektur folgt den bereitgestellten Spezifikationen, einschließlich der Verwendung der ReLU-Aktivierungsfunktion und der endgültigen vollständig verbundenen Schicht, die Wahrscheinlichkeiten für 1000 Klassen mithilfe der Softmax-Aktivierung ausgibt.

VGG-16-Konfiguration:

Der Hauptunterschied zwischen den VGG-16-Konfigurationen C und D liegt in der Verwendung von Filtergrößen in einigen Faltungsschichten. Während beide Versionen überwiegend 3×3-Filter verwenden, gibt es in Version D Fälle, in denen stattdessen 1×1-Filter verwendet werden. Diese geringfügige Variation führt zu einem Unterschied in der Anzahl der Parameter, wobei Version D im Vergleich zu Version C eine etwas höhere Anzahl von Parametern aufweist. Beide Versionen behalten jedoch die Gesamtarchitektur und die Prinzipien des VGG-16-Modells bei.

Unterschiedliche VGG-Konfiguration

Objektlokalisierung im Bild:

Um eine Lokalisierung durchzuführen, müssen wir die Klassenbewertung durch die Standortkoordinaten des Begrenzungsrahmens ersetzen. Die Position eines Begrenzungsrahmens wird durch den 4D-Vektor (Mittelkoordinaten (x, y), Höhe, Breite) dargestellt. Es gibt zwei Versionen der Lokalisierungsarchitektur. Die eine besteht darin, dass der Begrenzungsrahmen von verschiedenen Kandidaten gemeinsam genutzt wird (die Ausgabe lautet 4 Parametervektor) und der andere ist ein Begrenzungsrahmen, der klassenspezifisch ist (die Ausgabe ist 4000 Parametervektor). Der Artikel experimentierte mit beiden Ansätzen zur VGG-16 (D)-Architektur. Hier müssen wir auch Verlustfunktionen von Klassifizierungsverlust zu Regressionsverlustfunktionen ändern (z. B MSE ), die die Abweichung des vorhergesagten Verlusts von der Grundwahrheit bestrafen.

Ergebnisse: VGG-16 war eine der leistungsstärksten Architekturen bei der ILSVRC-Herausforderung 2014. Es belegte den zweiten Platz in der Klassifizierungsaufgabe mit einem Top-5-Klassifizierungsfehler von 7,32 % (nur hinter GoogLeNet mit einem Klassifizierungsfehler von 6,66 % ). Es war auch der Gewinner der Lokalisierungsaufgabe mit 25,32 % Lokalisierungsfehler.

Einschränkungen von VGG 16:

  • Das Training ist sehr langsam (das ursprüngliche VGG-Modell wurde zwei bis drei Wochen lang auf der Nvidia Titan GPU trainiert).
  • Die Größe der mit VGG-16 trainierten ImageNet-Gewichte beträgt 528 MB. Es benötigt also ziemlich viel Speicherplatz und Bandbreite, was es ineffizient macht.
  • 138 Millionen Parameter führen zu einem explodierenden Gradientenproblem.

Weitere Fortschritte: Resnets werden eingeführt, um das in VGG-16 aufgetretene Problem der explodierenden Gradienten zu verhindern.