ML-Praktikum: Bildklassifizierung

Neu: Convolutional Neural Networks

Ein Durchbruch bei der Erstellung von Modellen für die Bildklassifizierung kam mit der Feststellung, dass ein Convolutional Neural Network (CNN) verwendet werden kann, um nach und nach höhere Darstellungen von Bildinhalten zu extrahieren. Anstatt die Daten vorzuverarbeiten, um Merkmale wie Texturen und Formen zu erstellen, verwendet ein CNN die Rohpixeldaten des Bildes als Eingabe und lernt, wie diese Merkmale extrahiert und letztendlich abgeleitet wird, aus welchem Objekt sie bestehen.

Zu Beginn erhält die CNN eine Eingabemerkmalkarte: eine dreidimensionale Matrix, in der die Größe der ersten beiden Abmessungen der Länge und Breite der Bilder in Pixeln entspricht. Die Größe der dritten Dimension beträgt 3 (entsprechend den drei Kanälen eines Farbbilds: Rot, Grün und Blau). Die CNN besteht aus einem Stack von Modulen, von denen jedes drei Vorgänge ausführt.

1. Faltung

Ein Faltung extrahiert Kacheln der Eingabemerkmalzuordnung und wendet Filter darauf an, um neue Merkmale zu berechnen und eine Ausgabemerkmalkarte oder ein zusammengeführtes Merkmal zu generieren. Diese können eine andere Größe und Tiefe als die Eingabemerkmalzuordnung haben. Faltungen werden durch zwei Parameter definiert:

  • Größe der extrahierten Kacheln (in der Regel 3 x 3 oder 5 x 5 Pixel).
  • Die Tiefe der Ausgabemerkmalkarte, die der Anzahl der angewendeten Filter entspricht.

Während einer Faltung werden die Filter (Matrizen, die dieselbe Größe wie die Kachelgröße haben) effektiv über das Eingaberasterraster horizontal und vertikal verschoben, ein Pixel nach dem anderen, wobei die jeweiligen Kacheln extrahiert werden (siehe Abbildung 3).

Eine 3x3-Faltung über eine 4x4-Funktionskarte Abbildung 3. Eine Faltung von 3 x 3, die Tiefe 1 über eine 5 x 5 große Eingabe-Merkmalskarte mit ebenfalls Tiefe 1 ausführt. Es gibt neun mögliche 3x3-Positionen zum Extrahieren von Kacheln aus der 5x5-Funktionskarte. Diese Faltung erzeugt daher eine 3x3-Ausgabekarte.

Für jedes Filterkachelpaar führt die CNN eine Elementmultiplikation der Filtermatrix und der Kachelmatrix durch und summiert anschließend alle Elemente der resultierenden Matrix zu einem einzigen Wert. Jeder dieser resultierenden Werte für jedes Filterkachel-Paar wird dann in die Matrix für die geteilte Funktion ausgegeben (siehe Abbildungen 4a und 4b).

Eine Funktionskarte mit 5 x 5 Pixeln und eine Faltung 3 x 3 Abbildung 4a. Links: Eine 5x5-Eingabe Feature Map (Tiefe 1). Rechts: Eine 3x3-Faltung (Tiefe 1).

Abbildung 4b. Links: Die 3 x 3-Faltung wird auf der 5 x 5-Eingabemerkmalzuordnung ausgeführt. Rechts: Das resultierende faltende Feature. Klicken Sie auf einen Wert in der Merkmalszuordnung für die Ausgabe, um zu sehen, wie er berechnet wurde.

Während des Trainings lernt der CNN die optimalen Werte für die Filtermatrizen, mit denen sich aussagekräftige Merkmale (Texturen, Kanten, Formen) aus der Eingabemerkmalzuordnung extrahieren lassen. Wenn die Anzahl der Filter (Tiefstwert der Kartentiefe) auf die Eingabe ansteigt, nimmt auch die Anzahl der Merkmale zu, die die CNN extrahieren kann. Der Kompromiss besteht jedoch darin, dass Filter den Großteil der Ressourcen ausmachen, die vom CNN verbraucht werden. Dadurch erhöht sich auch die Trainingszeit, wenn mehr Filter hinzugefügt werden. Darüber hinaus bietet jeder Filter, der dem Netzwerk hinzugefügt wird, einen geringeren inkrementellen Wert als der vorherige, sodass Entwickler Netzwerke erstellen, die die Mindestanzahl von Filtern verwenden, die zum Extrahieren der für die genaue Bildklassifizierung erforderlichen Merkmale erforderlich sind.

2. Logo: Relu

Nach jedem Faltungsvorgang wendet das CNN eine Rectified Linear Unit-Transformation (ReLU) auf das fließende Merkmal an, um das Modell nicht linear zu machen. Die ReLU-Funktion \(F(x)=max(0,x)\)gibt x für alle Werte von x > 0 und 0 für alle Werte von x ≤ 0 zurück.

3. Billard

Nachdem ReLU einen Poolschritt erreicht hat, bei dem der CNN das konsolidierte Feature heruntersenkt, um Zeit zu sparen, die Anzahl der Abmessungen der Merkmalskarte reduziert und gleichzeitig die wichtigsten Merkmalsinformationen beibehalten werden. Ein gängiger Algorithmus für diesen Prozess wird als Max-Pooling bezeichnet.

Max-Pooling funktioniert ähnlich wie die Faltung. Wir ziehen über die Feature Map und extrahieren Kacheln einer bestimmten Größe. Für jede Kachel wird der Maximalwert an eine neue Feature-Map ausgegeben. Alle anderen Werte werden verworfen. Für maximale Poolvorgänge sind zwei Parameter erforderlich:

  • Größe des maximalen Poolfilters (in der Regel 2 x 2 Pixel)
  • Schritt: der Abstand in Pixeln, der die einzelnen extrahierten Kacheln voneinander trennt. Anders als bei Faltung, bei der Filter Pixel für Pixel über die Feature-Map ziehen, bestimmt der Schritt beim maximalen Pooling die Orte, an denen jede Kachel extrahiert wird. Bei einem 2x2-Filter gibt ein Schritt von 2 an, dass der maximale Pooling-Vorgang alle nicht überlappenden 2x2-Kacheln aus der Feature Map extrahiert (siehe Abbildung 5).

Animation von „Max Pooling“ über einer 4x4-Feature-Karte mit einem 2x2-Filter und Schritt 2

Abbildung 5. Links: Max. Pooling über eine 4 x 4 große Merkmalskarte mit einem 2 x 2-Filter und Schritt 2. Rechts: Ausgabe des maximalen Pooling-Vorgangs. Die resultierende Feature Map ist jetzt 2 x 2 groß, wobei nur die Maximalwerte der einzelnen Kacheln beibehalten werden.

Vollständig verbundene Ebenen

Am Ende eines faltenden neuronalen Netzwerks befinden sich eine oder mehrere vollständig verbundene Ebenen (wenn zwei Ebenen vollständig verbunden sind). Jeder Knoten in der ersten Ebene ist mit jedem Knoten in der zweiten Ebene verbunden. Sie dienen dazu, anhand der von den Faltungen extrahierten Features zu klassifizieren. In der Regel enthält die letzte vollständig verbundene Ebene eine Softmax-Aktivierungsfunktion, die für jedes Klassifizierungslabel, das das Modell vorhersagen möchte, einen Wahrscheinlichkeitswert von 0 bis 1 ausgibt.

Abbildung 6 veranschaulicht die End-to-End-Struktur eines faltenden neuronalen Netzwerks.

End-to-End-Diagramm eines Convolutional Neural Network mit Eingabe, zwei Convolution-Modulen und zwei vollständig verbundenen Schichten für die Klassifizierung

Abbildung 6. Die hier gezeigte CNN enthält zwei Faltungsmodule (Faltung + ReLU + Pooling) für die Extraktion von Merkmalen und zwei vollständig verbundene Ebenen für die Klassifizierung. Andere CNNs können eine größere oder kleinere Anzahl von Convolutional-Modulen und mehr oder weniger vollständig verbundene Ebenen enthalten. Entwickler versuchen oft, die Konfiguration zu ermitteln, mit der die besten Ergebnisse für ihr Modell erzielt werden.