Deep Learning

Liste der Abschnitte ↓

Einleitung

Der Begriff Deep Learning (DL) bezieht sich auf eine Familie von Verfahren des maschinellen Lernens. In HALCON sind folgende Methoden implementiert:

Anomalieerkennung:
Jeder Pixel des Eingabebildes erhält einen Score, der angibt, wie warscheinlich der Pixel ein unbekanntes Merkmal, eine Anomalie, zeigt. Für weitere Informationen wird auf das Kapitel Deep Learning / Anomalieerkennung verwiesen.
image/svg+xml
Ein mögliches Beispiel der Anomalieerkennung: Jeder Pixel des Eingabebildes erhält einen Score.
Klassifikation:
Ein Bild wird einer Klasse aus einer gegebenen Menge an Klassen zugeordnet. Für weitere Informationen wird auf das Kapitel Deep Learning / Klassifikation verwiesen.
image/svg+xml orange: apple: lemon:
Ein mögliches Beispiel der Klassifikation: Dem Bild wird eine Klasse zugeordnet.
Objektdetektion:
Objekte der gegebenen Klassen werden erkannt und innerhalb des Bildes lokalisiert. Für weitere Informationen wird auf das Kapitel Deep Learning / Objektdetektion verwiesen.
image/svg+xml 'apple' 'apple' 'lemon'
Ein mögliches Beispiel der Objektdetektion: Innerhalb des Bildes werden drei Instanzen gefunden und jeweils einer Klasse zugeordnet.
Semantische Segmentierung:
Jedem Pixel eines Bildes wird eine Klasse zugeordnet. Für weitere Informationen wird auf das Kapitel Deep Learning / Semantische Segmentierung verwiesen.
image/svg+xml apple lemon orange background
Ein mögliches Beispiel der Semantischen Segmentierung: Jedem Pixel des Eingabebildes wird eine Klasse zugeordnet.

All diese Deep Learning Methoden verwenden für die Zuordnung ein Netzwerk. In HALCON sind sie im Rahmen des generellen DL Modells implementiert, siehe Deep Learning / Modell. Dieses Netzwerk wird nur mit Hilfe von Ein- und Ausgabe trainiert, was auch als End-to-End Lernen bezeichnet wird. Im Wesentlichen wird durch die Bilder und die Information, was darauf ersichtlich ist, durch den Trainingsalgorithmus das Modell so angepasst, dass dieses die verschiedenen Klassen unterscheiden kann und gegebenenfalls auch die Objekte findet. Für den Anwender hat dies den Vorteil, dass er nicht händisch Merkmale angeben muss. Stattdessen müssen geeignete Daten ausgewählt und gesammelt werden.

Systemvoraussetzungen

Für Deep Learning gelten zusätzliche Voraussetzungen, siehe den HALCON „Installation Guide“, Abschnitt „Minimum System Requirements“.

Um den Trainingsprozess zu beschleunigen, empfehlen wir eine schnelle Festplatte. Solid-State-Drives (SSD) sind konventionellen Festplatten (HDD) vorzuziehen.

Genereller Ablauf

Die genannten DL Methoden unterscheiden sich sowohl bezüglich was sie tun als auch wie die Daten benötigt werden. Deshalb ist es wichtig, erst zu wissen, welche Methoden für die spezifische Aufgabe am geeignetsten ist. Ist dies klar, müssen genügend Daten gesammelt werden, sprich Bilder und die von der Methode dazu benötigten Informationen. Danach gilt für all diese Methoden grob der folgende Ablauf:

Vorbereiten des Netzwerks und der Daten

Das Netzwerk muss für die spezifische Aufgabe vorbereitet werden. Ebenso müssen die Daten an die Anforderungen des Netzwerks angepasst werden.

Training des Netzwerks und Auswertung des Trainingsfortschritts

Sobald das Netzwerk und der Datensatz vorbereitet sind, kann das Netzwerk für die spezifische Aufgabe trainiert werden.

Anwenden und Evaluieren des finalen Netzwerks

Nun ist das Netzwerk für die spezifische Anwendung trainiert und bereit zur Anwendung. Doch davor sollte noch evaluiert werden, wie gut es sich auf dem Test-Datensatz verhält.

Inferenzphase

Ist das Netzwerk trainiert und seine Leistung zufriedenstellend, kann es für die Inferenz neuer Bilder verwendet werden. Dafür müssen die Bilder entsprechend den Anforderungen des Netzwerks vorverarbeitet werden (d.h., auf dieselbe Art und Weise wie dies beim Training geschah).

Daten

Der Begriff 'Daten' wird innerhalb DL für Bilder und die Information, was darauf ist, verwendet. Letztere muss so gegeben sein, damit das Netzwerk sie verarbeiten kann. Es verwundert nicht, dass die verschiedenen Methoden ihre eigenen Anforderungen haben, was für Informationen gegeben sein müssen und wie diese vorzuliegen haben. Für die spezifischen Anforderungen wird auf das jeweilige Kapitel verwiesen.

Das Netzwerk stellt auch Anforderungen an die Bilder betreffend der Bilddimensionen, dem Grauwertbereich und dem Bildtyp. Diese Voraussetzungen hängen vom verwendeten Netzwerk ab und können mit get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam abgefragt werden. Zusätzlich gibt es je nach Methode auch Anforderungen an die dazugehörigen Information, wie z.B. die umschließenden Rechtecke. Um diese Anforderungen zu erfüllen, müssen die Daten vorverarbeitet werden, was komfortabel mit der entsprechenden Prozedur preprocess_dl_samples gemacht werden kann.

Wenn das Netzwerk trainiert wird, adaptiert es sich an seine neue Aufgabe. Aber zu gewissen Zeitpunkten soll die Leistung des Netzwerks überprüft und zu einem späteren Zeitpunkt auch getestet werden. Dafür wird der Datensatz in drei Teilmengen aufgespalten, die unabhängig und gleichverteilt sein sollten. Das bedeutet, dass die Teilmengen auf keine Art und Weise voneinander abhängen sollten und jede Klasse die gleiche Verteilung von Bildern enthalten sollte. Diese Aufteilung kann bequem mit der Prozedur split_dl_dataset vorgenommen werden. Die größte Teilmenge wird für das Nachtrainieren verwendet. In HALCON wird dieses Set Trainings-Datensatz bezeichnet. Zu bestimmten Zeitpunkten wird die Leistung des Netzwerks überprüft, um festzustellen ob es sich lohnt, die Optimierung des Netzwerks fortzusetzen. Für diese Validierung wird die zweite Teilmenge des Datensatzes verwendet, der Validierungs-Datensatz. Auch wenn diese Teilmenge disjunkt zur ersten Menge ist, hat sie Einfluss auf die Optimierung des Netzwerks. Deshalb wird für die Vorhersage der Leistung des Netzwerks in der Applikation die dritte Teilmenge verwendet, dem Test-Datensatz. Für eine repräsentative Validierung des Netzwerks sollten die zweite und die dritte Teilmenge statistisch relevante Daten enthalten, was eine untere Schranke für die benötigte Menge an Daten darstellt.

Es ist zudem zu beachten, dass die Bilder repräsentativ sein sollten, das heißt denen der späteren Applikation entsprechen und nicht 'perfekten' Bildern. Ansonsten kann das Netzwerk Probleme auf nicht-'perfekten' Bildern haben.

Das Netzwerk und der Trainingsprozess

In DL erfolgen die Zuordnungen, indem das Eingabebild von einem Netzwerk verarbeitet wird. Die Ausgabe des gesamten Netzwerkes besteht aus einer Anzahl Vorhersagen. Solche Vorhersagen sind, z.B. für die Klassifikation, die Konfidenzwerte für jede Klasse, welche die Klassenzugehörigkeit des Bildes darstellen.

Die spezifisches Netzwerke variieren, insbesondere von Methode zu Methode. Einige Methoden wie z.B. die Objekterkennung verwenden ein Subnetzwerk, um Merkmalskarten zu erzeugen (siehe die Erklärungen unten und in Deep Learning / Objektdetektion). Hier wird ein grundlegendes Neuronales Netzwerk erklärt. Ein solches Netzwerk besteht aus einer Anzahl an Layer oder Filter, welche in einer bestimmten Art angeordnet und miteinander verbunden sind. Allgemein ist ein Layer ein Baustein, der besondere Aufgaben durchführt. Er kann wie eine Box gesehen werden, welche Eingaben erhält, diese anhand einer Funktion transformiert und die Ausgabe an den nächsten Layer weiter gibt. Dabei sind verschiedene Funktionen für die unterschiedlichen Typen von Layern möglich, einige Beispiele sind im „Solution Guide on Classification“ gegeben. Viele der Layer haben Gewichte. Diese Filter-Gewichte sind die freien Parameter, welche beim Training verändert werden. Ausgabe der meisten Layer sind Merkmalskarten. Dabei hängt die Anzahl der Merkmalskarten (die Tiefe der Layer-Ausgabe) sowie die Größe der Merkmalskarte (Höhe und Breite) vom spezifischen Layer ab.

image/svg+xml apple lemon orange
Schema eines möglichen Klassifikator-Ausschnitts. Unten sind zu den Layern gehörenden Merkmalskarten gezeigt, wobei diese auf eine einheitliche Größe skaliert wurden.

Um ein Netzwerk für eine spezifische Aufgabe zu trainieren wird eine Zielfunktion verwendet. Abhängig von der Aufgabe gibt es verschiedene Zielfunktionen, doch funktionieren sie alle nach dem gleichen Prinzip. Die Zielfunktion vergleicht die Vorhersage des Netzwerks mit der gegebenen Information, was es im Bild finden soll (und gegebenenfalls wo) und bestraft Abweichungen. Die Zielfunktion wird minimiert durch entsprechende Änderung der Filter-Gewichte. Um also das Netzwerk für eine spezielle Aufgabe zu trainieren, wird die Minimierung der Zielfunktion (eine Funktion des Fehlers) angestrebt, in der Hoffnung, damit auch das Leistungsmaß des Netzwerkes zu verbessern. In der Praxis wird diese Optimierung durch die Berechnung des Gradienten und der entsprechenden Anpassung der Parameter (Filter-Gewichte) bei mehrfacher Iteration über den Trainings-Datensatz erreicht.

Es gibt weitere Parameter, welche das Training beeinflussen aber nicht direkt während des regulären Trainings gelernt werden. Diese Parameter werden vor dem Training gesetzt. Um sie von den anderen Parametern abzuheben, werden sie als Hyperparameter bezeichnet. Siehe den obigen Abschnitt „Setzen der Trainingsparameter“.

Alle Gewichte von Grund auf zu optimieren benötigt eine große Menge an Ressourcen. Deshalb wird von der folgenden Erkenntnis Gewinn gezogen. Die ersten, tiefen Layer detektieren einfache Merkmale wie Kanten oder Kurven. Die Merkmalskarten der späteren Layer sind kleiner, doch zeigen sie komplexere Merkmale. Für ein großes Netzwerk sind die Merkmale der tiefen Layer generell genug, damit sich deren Gewichte zwischen verschiedenen Aufgaben nur gering ändern. Dies führt zu einer Technik, die Transferlernen genannt wird: Man nimmt ein bereits trainiertes Netzwerk inklusive seiner Gewichte und trainiert es für eine neue Aufgabe, wobei man von passenden Gewichten der tiefer liegenden Layer profitiert. Als Resultat werden viel weniger Ressourcen benötigt. Während generell gesagt ein Netzwerk mit größerem Datensatz zuverlässiger wird, hängt die Menge an notwendiger Daten auch mit der Komplexität der Aufgabe zusammen. Ein Schema für den Ablauf mit Transferlernen ist unten mit Hilfe der Klassifikation gezeigt.
image/svg+xml ... ... image/svg+xml ... ... 'apple' 'lemon' 'lemon' 'lemon' 'lemon' 'apple' 'apple' 'apple' image/svg+xml ... ... image/svg+xml ... ... '?' 'apple' 'lemon' 0.9 0.1
(1) (2) (3) (4)
Elementares Schema des Transferlernens anhand der Klassifikation. (1) Ein vortrainiertes Netzwerk wird eingelesen. (2) Trainingsphase, das Netzwerk wird auf dem Trainings-Datensatz trainiert. (3) Das trainierte Modell mit neuen Fähigkeiten. (4) Inferenzphase, das trainierte Netzwerk inferiert auf neuen Bildern.

Setzen der Trainingsparameter

Die verschiedenen DL Methoden sind für unterschiedliche Aufgaben konzipiert und unterscheiden sich in der Art und Weise, wie sie zusammengesetzt sind. Allen ist gemeinsam, dass das Training ein Minimisierungsproblem darstellt. Beim Trainieren des Netzwerkes oder Subnetzwerkes wird eine geeignete Zielfunktion minimiert, siehe dazu den obigen Abschnitt „Das Netzwerk und der Trainingsprozess“. Um dies zu tun, gibt es bestimmte Parameter, die vor dem Training gesetzt werden müssen und während des Trainings nicht optimiert werden. Diese Parameter werden als Hyperparameter bezeichnet. Für ein DL Modell kann über eine Veränderungsstrategie vorgegeben werden, wann und wie diese Hyperparameter während des Trainings geändert werden sollen. In diesem Abschnitt wird der Grundgedanke verschiedener Hyperparameter erklärt. Es ist zu beachten, dass die jeweiligen Methoden weitere Hyperparameter haben können, weitere Informationen dazu finden sich im jeweiligen Kapitel.

Wie zuvor erwähnt, vergleicht die Zielfunktion die Vorhersage des Netzwerks mit den Informationen zum Bildinhalt und bestraft Abweichungen. Das Netzwerk zu trainieren bedeutet, die Filter-Gewichte so zu ändern, dass die Zielfunktion weniger bestraft, d.h., die Zielfunktion optimiert wird. Um dies zu tun wird eine Menge Daten des Trainings-Datensatzes genommen. Für diese Teilmenge wird der Gradient der Zielfunktion berechnet und das Netzwerk angepasst, indem die Filter-Gewichte geändert werden. Dies wird mit der nächsten Teilmenge an Daten wiederholt bis der ganze Trainings-Datensatz verarbeitet wurde. Eine solche Teilmenge an Daten wird als Batch oder Minibatch bezeichnet. Die Batchgröße ('batch_size'"batch_size""batch_size""batch_size""batch_size") bestimmt die Anzahl der Daten, die einen Batch bilden und deshalb simultan verarbeitet werden.

Eine gesamte Iteration über den vollständigen Trainings-Datensatz wird Epoche genannt. Es ist vorteilhaft, mehrmals über den Trainings-Datensatz zu iterieren. Die Anzahl Iterationen wird dabei über die 'Epochen' definiert. Das bedeutet, 'Epochen' bestimmt, wie oft der Trainingsalgorithmus über den Trainings-Datensatz iteriert.

Gewisse Modelle (z.B. Anomalieerkennung) nutzen den gesamten Datensatz auf einmal. Andere Modellen verarbeiten den Datensatz batchweise, wobei der stochastische Gradientenabsenkungsalgorithmus SGD verwendet wird. Dies bringt weitere Parameter mit sich, welche im Folgenden erläutert werden. Nach jeder Berechnung des Zielfunktions-Gradienten werden die Filter-Gewichte aktualisiert. Es gibt zwei Hyperparameter, die für die Anpassung der Filter-Gewichte wichtig sind: Die Lernrate 'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate" , die den Einfluss des Gradienten auf die Anpassung der Gewichte beschreibt und das Momentum ('momentum'"momentum""momentum""momentum""momentum" , im Intervall ), das den Einfluss früherer Anpassungen festlegt. Mehr Informationen dazu befinden sich in der Dokumentation von train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch. In einfachen Worten gesagt: Bei der Anpassung der Gewichte erinnert man sich an den Schritt, den man für die letzte Anpassung gemacht hat. Jetzt wird ein Schritt in die Richtung des Gradienten gemacht, wobei die Länge abhängig ist von der Lernrate. Zusätzlich wird der Schritt der letzten Anpassung wiederholt, aber diesmal nur mit einer Länge entsprechend dem Momentum . Dies wird in der folgenden Grafik illustriert. Eine zu hohe Lernrate kann dazu führen, dass der Algorithmus divergiert, eine zu kleine Lernrate führt zu unnötig vielen Schritten. Daher startet man üblicherweise mit einer höheren Lernrate und reduziert sie während dem Training. Mit einem Momentum hat das Momentum Verfahren keinen Einfluss, so dass nur der Gradient den Anpassungsvektor bestimmt.
image/svg+xml k+1 k+1 k-1 k k μv v λg v v λg μv k-1 k
Skizze von 'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate" und 'momentum'"momentum""momentum""momentum""momentum" während eines Lernschrittes. Der Gradientenschritt: Die Lernrate multipliziert mit dem Gradienten g ( g - gestrichelte Linie). Der Momentumschritt: Das Momentum multipliziert mit dem vorherigen Anpassungsvektor v ( v - gepunktete Linie). Zusammen ergeben sie den eigentlichen Lernschritt: Der Anpassungsvektor v (v - durchgezogene Linie).

Regularisierung kann verwendet werden, um Überanpassung an die Trainingsdaten zu reduzieren (siehe auch den Abschnitt „Risiko von Überanpassung und Unteranpassung“ weiter unten). Mit dieser Technik wird der Zielfunktion ein zusätzlicher Term hinzugefügt. Eine mögliche Regularisierung ist die Gewichts-Dämpfung, siehe train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch. Einfach gesagt begünstigt die Regularisierung einfachere Modelle, die weniger anfällig sind, Rauschen in den Daten zu lernen. Dadurch generalisieren diese Modelle in der Regel besser. Regularisierung kann über den Hyperparameter weight_priorweight_priorweight_priorweight_priorweightPrior gesetzt werden. Die Wahl des Wertes ist ein Kompromiss zwischen der Fähigkeit des Modells zur Generalisierung, Überanpassung und Unteranpassung. Ist der Wert für 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" zu klein, kann Überanpassung auftreten, ist er zu groß, kann das Modell seine Fähigkeit, sich an die Daten anzupassen, verlieren, da alle Gewichte effektiv Null sind.

Mit den Daten und den Hyperparametern gibt es viele Einflussfaktoren auf das Resultat des Trainingsalgorithmus. Im Allgemeinen helfen mehr Daten, die Leistung des Netzwerks zu verbessern. Ob mehr Daten immer eine gute Lösung für Verbesserungen sind, hängt davon ab, wie einfach es ist, diese Daten zu sammeln. Üblicherweise hat eine kleine zusätzliche Menge an Daten kaum merklichen Einfluss auf die Gesamtleistung.

Das Training beaufsichtigen

Die verschiedenen DL Methoden geben verschiedene Resultate zurück. Entsprechend werden auch unterschiedliche Maße verwendet, um zu bestimmen 'wie gut' die Leistung eines Netzwerks ist. Dennoch gibt es gemeinsame Verhaltensmuster und mögliche Tücken während des Trainings, welche hier beschrieben werden.

Evaluierung während des Trainings

Bei der Evaluierung der Leistung des Netzwerks muss beachtet werden, dass es sich nicht um ein reines Optimierungsproblem handelt (siehe die obigen Abschnitte „Das Netzwerk und der Trainingsprozess“ und „Setzen der Trainingsparameter“).

Um den Trainingsfortschritt zu beobachten ist es meistens nützlich, das Leistungsmaß zu visualisieren, z.B.den Fehler für die Elemente eines Batches im Falle der Klassifikation. Da sich die Elemente unterscheiden, kann die Schwierigkeit der Zuordnung variieren. Deshalb kann es sein, dass das Netzwerk bei den Elementen eines Batches besser oder schlechter abschneidet als bei den Elementen eines anderen Batches. Es ist also normal, dass sich das Leistungsmaß nicht glatt über die Iterationen verändert. Insgesamt sollte er aber sinken. Die Anpassung der Hyperparameter Lernrate 'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate" und Momentum 'momentum'"momentum""momentum""momentum""momentum" kann helfen, das Maß zu verbessern. Die folgende Grafik zeigt ein mögliches Beispiel.

image/svg+xml Error Iteration image/svg+xml Error Iteration
(1) (2)
Schema eines Leistungsmaß während des Trainings, hier exemplarisch für die Klassifikation. (1) Generelle Tendenzen für mögliche Folgen verschiedener Werte für 'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate", dunkelblau: angemessene Lernrate, rot: sehr hohe Lernrate, hellblau: hohe Lernrate, orange: tiefe Lernrate. (2) Ideal Fall eines Lernraten-Programms zum Reduzieren der Lernrate nach einer gewissen Anzahl Iterationen. In orange: Trainingsfehler, dunkelblau: Validierungsfehler. Der Pfeil markiert die Iteration, bei welcher die Lernrate angepasst, d.h., verringert wurde.
Risiko von Unteranpassung und Überanpassung

Unteranpassung tritt auf, wenn das Modell die Komplexität der Aufgabe nicht wiedergeben kann. Das spiegelt sich direkt im Leistungsmaß wieder, welches in diesem Fall hoch bleibt.

Überanpassung tritt dann auf, wenn das Modell anfängt, sich die Trainingsdaten zu merken, statt generelle Regeln zur Aufgabe zu lernen. In diesem Fall bleibt das Leistungsmaß gleich oder verbessert sich, während sich das Leistungsmaß auf dem Validierungsdatensatz verschlechtert. In diesem Fall kann Regularisierung helfen. Siehe die Erklärung zum Hyperparameter weight_priorweight_priorweight_priorweight_priorweightPrior im obigen Abschnitt „Setzen der Trainingsparameter“. Es ist zu beachten, dass ein ähnlicher Effekt auftritt, wenn die Kapazität des Models im Verhältnis zum Trainings-Datensatz zu hoch ist.

image/svg+xml Error Iteration
Skizze von möglicher Überanpassung, sichtbar durch die Generalisierungslücke (durch den Pfeil markiert). Der Fehler aus der Klassifikation dient als Beispiel für ein Leistungsmaß.
Konfusionsmatrix

Für jede Instanz inferiert das Netzwerk eine top-Vorhersage, die Klasse für welche das Netzwerk die größte Affinität schlussfolgert. Ist die Ground Truth Klasse und damit die wahre Klasse bekannt, können die beiden Klassen miteinander verglichen werden: Die vorhergesagte mit der Ground Truth Klasse. Dabei unterscheiden sich die Instanzen zwischen den verschiedenen Methoden, z.B. sind die Instanzen Bilder in der Klassifikation, hingegen einzelne Pixel in der Semantischen Segmentierung.

Werden mehr als zwei Klassen unterschieden, kann man den Vergleich auf ein binäres Problem reduzieren. Das bedeutet, für eine gegebene Klasse wird nur verglichen, ob es sich um die selbe Klasse handelt (positiv) oder irgendeine andere Klasse (negativ). Somit reduziert sich der Vergleich für binäre Klassifikationsprobleme auf die folgenden vier möglichen Einheiten (die nicht alle bei jeder Methode Anwendung finden):

Eine Konfusionsmatrix ist eine Tabelle mit solchen Vergleichen. Sie hilft, die Leistung des Netzwerkes für die einzelnen Klassen darzustellen. Für jede Klasse listet sie, wie viele Instanzen das Netzwerk welcher Klasse zugeordnet hat. Z.B. für einen Klassifikator, der die drei Klassen 'apple', 'peach' und 'pear' unterscheidet, zeigt die Tabelle wieviele Bilder mit der Ground Truth Klasse 'apple' auch wirklich als 'apple' erkannt wurden und wieviele als 'peach', bzw. 'pear' klassifiziert wurden. Es versteht sich, dass dies auch für die anderen Klassen angegeben wird. In HALCON repräsentiert jede Spalte die Ground Truth (wahren) Instanzen einer Klasse und jede Zeile die Instanzen der vom Netzwerk vorhergesagten Klasse.

image/svg+xml image/svg+xml TP FP FN TN
(1) (2)
Ein Beispiel für eine Konfusionsmatrix aus der Klassifikation. In diesem Beispiel werden 68 Bilder der Klasse 'apple' auch als solche erkannt (TP), ebenso werden 60 Bilder die keinen Vertreter der Klasse 'apple' zeigen, auch korrekt als 'peach' (30) oder 'pear' (30) klassifiziert (TN). 0 Bilder gehören zur Klasse 'peach' oder 'pear' und werden als 'apple' klassifiziert (FP), aber 24 Bilder der Klasse 'apple' werden als 'peach' (21) oder 'pear' (3) klassifiziert (FN). (1) Die Konfusionsmatrix mit allen drei zu unterscheidenden Klassen. Es scheint als ob der Klassifikator Äpfel und Pfirsiche öfters 'verwechselt' als andere Kombinationen. (2) Die Konfusionsmatrix des Binärproblems zur deutlicheren Darstellung der Klasse 'apple'.

Glossar

Im Folgenden beschreiben wir die wichtigsten Begriffe, welche wir im Kontext von Deep Learning verwenden:

Anchor

Anchors sind festgesetzte umschließende Rechtecke. Diese dienen als Referenzrechtecke, aus denen das Netzwerk umschließende Rechtecke für die zu lokalisierenden Objekte vorschlägt.

Annotation

Eine Annotation ist die Ground Truth Information darüber, was eine in den Daten gegebene Instanz repräsentiert. Dies ist z.B. das umschließende Rechteck und das zugehörige Label für eine Instanz der Objektdetektion. Dabei wird diese Information in einer dem Netzwerk zugänglichen Form gegeben.

Anomalie

Eine Anomalie meint dabei eine Abweichung zum Normalen, etwas Unbekanntes.

Backbone

Ein Backbone ist ein Teil eines vortrainiertes Klassifikationsnetzwerk. Die Aufgabe des Backbones ist das Generieren verschiedener Merkmalskarten, weshalb der klassifizierende Layer entfernt wurde.

Batchgröße - Hyperparameter 'batch_size'"batch_size""batch_size""batch_size""batch_size"

Der Datensatz wird in kleinere Untergruppen, genannt Batches, unterteilt. Die Batchgröße bestimmt die Anzahl Bilder eines einzelnen Batches und somit die Anzahl Bilder, welche simultan verarbeitet werden.

COCO

COCO ist eine Abkürzung aus dem Englischen "common objects in context" und bezeichnet einen großen Datensatz zur Objektdetektion, zur Segmentierung und zum Versehen von Überschriften. Dabei gibt es für die verschiedenen Arten von Annotationen jeweils ein gängiges Datenformat.

Convolutional Neural Networks (CNNs)

Convolutional Neural Networks sind Netzwerke, die in Deep Learning verwendet werden und mindestens einen Convolutional Layer (Faltungs-Layer) beinhalten. CNNs sind besonders erfolgreich bei der Klassifizierung von Bildern.

Daten

Im Kontext von Deep Learning verwenden wir den Begriff Daten für die zu erkennenden Instanzen (z.B. Bilder) mit ihren zugehörigen Information bezüglich der vorherzusagenden Eigenschaften (z.B. die Labels im Fall der Klassifikation).

Datenanreicherung

Die Datenanreicherung ist die Erstellung von veränderten Kopien von vorhandenen Samples des Datensatzes zur Erhöhung der Vielfalt im Datensatz. Dies wird z.B. über eine Spiegelung oder Rotation erreicht.

Datensatz: Trainings-, Validierungs- und Test-Datensatz

Der Datensatz bezeichnet die komplette Menge an Daten, welche für das Training verwendet werden. Der Datensatz wird in drei disjunkte Untermengen aufgeteilt:

Deep Learning

Der Begriff "Deep Learning" wurde ursprünglich für das Training Neuronaler Netzwerke mit mehreren verborgenen Layer verwendet. Heutzutage wird der Begriff mehr als allgemeiner Begriff für verschiedene Methoden des maschinellen Lernens verwendet. In HALCON verwenden wir den Begriff als für Verfahren des maschinellen Lernens mit einem Neuronalen Netzwerk, welches mehrere verborgene Layer beinhaltet.

Ebene

Mit Ebene wird bei innerhalb eines Merkmalspyramiden-Netzwerkes eine Gruppe von Layern bezeichnet, deren Merkmalskarten die selbe Höhe und Breite aufweisen. Dabei repräsentiert das Eingabebild die Ebene 0.

Epoche

Im Kontext von Deep Learning bedeutet Epoche eine einzelne Trainingsiteration über den ganzen Trainings-Datensatz, d.h. über sämtliche Batches. Eine solche Trainingsiteration über Epochen ist nicht zu verwechseln mit einer Iteration über einen einzelnen Batch (d.h., innerhalb einer Epoche).

Fehler

Im Kontext von Deep Learning verwenden wir den Begriff Fehler, wenn für eine Instanz die vom Netzwerk zugeordnete Klasse nicht mit der eigentlichen Klasse (z.b. dem Label des Bildes im Falle der Klassifikation) übereinstimmt. Dabei meinen wir jeweils den top-1 Fehler (siehe top-k Fehler).

Gewichte

Gewichte sind die freien Parameter des Netzwerks, die während des Trainings zwecks Optimierung der Zielfunktion geändert werden. Ein Layer mit Gewichten multipliziert oder addiert diese mit seinen Eingabewerten. Im Gegensatz zu Hyperparametern werden Gewichte während des Trainings optimiert und werden somit geändert.

Head

Heads sind Teil-Netzwerke, die aus einem oder mehreren Layer bestehen. Bei gewissen Architekturen setzen sie an den ausgewählten Pyramidenstufen an. Sie generieren die Ausgabe des Gesamt-Netzwerkes und erzeugen damit die Eingabe der Zielfunktionen.

Heads sind Teil-Netzwerke. Bei gewissen Architekturen setzen sie an den ausgewählten Pyramidenstufen an. Diese Teil-Netzwerke verarbeiten die Information aus vorherigen Teilen des Gesamt-Netzwerkes um daraus ortsaufgelöste Ausgaben für z.B. die Klassen-Vorhersagen zu generieren. Daraus generieren sie die Ausgabe des Gesamt-Netzwerkes und erzeugen damit die Eingabe der Zielfunktionen.

Hyperparameter

Jede Methode des maschinellen Lernens, und somit auch CNNs, ist eine Umsetzung von Formeln mit mehreren Parametern. Während der Trainingsphase lernt das Modell von den Daten im Sinne von Optimierung der Parameter für die gegebene Aufgabe. Solche Modelle können aber auch noch weitere Parameter haben, deren Wert während der Trainingsphase nicht direkt erlernt wird. Die Werte dieser Parameter werden vor Trainingsbeginn festgelegt. Wir bezeichnen diese letzteren Parameter als Hyperparameter, um sie von jenen Netzwerkparametern (den Gewichten) zu unterscheiden, welche während der Trainingsphase optimiert werden. Aus einem anderen Blickpunkt betrachtet sind Hyperparameter Solver-spezifische Parameter.

Prominente Beispiele für Hyperparameter sind die initiale Lernrate oder die Batchgröße.

Inferenzphase

Die Inferenzphase bezeichnet die Phase, in dem ein trainiertes Netzwerk angewandt wird, um die Klassenzugehörigkeit von Instanzen (welche das gesamte Eingabebild oder nur ein Teil davon sein können) und eventuell deren Lokalisierung zu folgern. Im Unterschied zur Trainingsphase wird das Netzwerk nicht mehr optimiert.

Intersection over Union

Die Intersection over Union (IoU) bezeichnet ein Maß, welches den Überlapp zweier Bereiche quantifiziert. Von diesen zwei Bereichen oder Flächen wird die Schnittmenge, Intersection, gebildet, sowie die Vereinigungsmenge, Union. Die IoU ist das Verhältnis der beiden Flächen Intersection und Union.

Die Anwendung dieses Konzepts kann sich für verschiedene Methoden unterscheiden.

Klasse

Klassen sind getrennte Kategorien, welche das Netzwerk unterscheidet (z.B. 'apple', 'peach', 'pear'). In HALCON wird die Klasse einer Instanz durch seine zugehörige Annotation gegeben.

Klassenagnostisch

Klassenagnostisch bedeutet ohne Berücksichtigung der verschiedenen Klassen.

In HALCON wird der Term bei der Reduktion überlappender umschließender Rechtecke verwendet. Bei einer klassenagnostischen Unterdrückung umschließender Rechtecke geschieht die Unterdrückung der umschließenden Rechtecke ohne Beachtung ihrer zugeordneten Klasse, d.h., sich stark überlappende Instanzen werden unabhängig ihrer Klasse unterdrückt.

Klassifikator

Im Kontext von Deep Learning bezeichnen wir mit Klassifikator folgendes: Der Klassifikator folgert für ein erhaltenes Bild die Konfidenz zu allen unterschiedenen Klassen. Als Beispiel seien die drei Klassen 'apple', 'peach', 'pear' unterschieden. Nun wenden wir den Klassifikator auf ein Bild eines Apfels an. Als Resultat erhalten wir Konfidenzen wie 'apple': 0.92, 'peach': 0.07, 'pear': 0.01.

Konfidenz

Die Konfidenz ist eine Zahl, welche die Klassenzugehörigkeit einer Instanz darstellt. In HALCON ist die Konfidenz die Wahrscheinlichkeit, gegeben im Intervall [0,1]. Alternativer Name: Score

Konfusionsmatrix

Eine Konfusionsmatrix ist eine Tabelle, in welcher die vorhergesagten Klassen des Netzwerks (top-1) mit der jeweiligen Ground Truth Klasse verglichen werden. Sie wird oft zur Visualisierung der Leistungsfähigkeit des Netzwerks auf dem Validierungs- oder Test-Datensatz verwendet .

Label

Labels sind beliebige Zeichenketten (Strings), welche die Klasse eines Bildes angeben. In HALCON ist das Label eines Bildes gegeben durch seinen Namen (evt. gefolgt von einer Kombination aus Unterstrich und Ziffern) oder dem Namen seines direkten Ordners, zB. 'apple_01.png', 'peach.png', 'pear/01.png'.

Layer und Verborgene Layer

Layer sind Bausteine von Neuronalen Netzwerken und führen eine spezifische Funktion aus (z.B. Faltung, Vereinigung, etc., siehe „Solution Guide Classification“). Ein Layer kann man als eine Box betrachten, welche Eingabewerte erhält, diese transformiert und den Rückgabewert an den nächsten Layer weiter gibt. Eingabe- und Ausgabe-Layer sind jeweils mit den Daten verbunden, d.h. mit den Bilder, bzw. den Labels. Alle dazwischenliegenden Layers bezeichnet man als verborgenen Layer.

Alternative Namen: Schicht (Layer), Zwischenschicht (hidden Layer)

Lernrate - Hyperparameter 'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate"

Die Lernrate ist die Gewichtung des Gradienten (siehe SGD) beim Anpassen der Argumente der Zielfunktion. In einfachen Worten: Der Gradient sagt uns, in welche Richtung optimiert werden soll und die Lernrate sagt, wie groß unser Schritt sein wird.

Merkmalskarte

Eine Merkmalskarte ist die Ausgabe eines gegebenen Layers. Alternativer Name: Feature Map

Mermkalspyramide

Die Merkmalspyramide ist eine Gruppe von Merkmalskarten, wobei jede Merkmalskarte aus einer anderen Ebene ist, d.h. kleiner als die vorhergehende Merkmalskarte ist.

Momentum - Hyperparameter 'momentum'"momentum""momentum""momentum""momentum"

Das Momentum wird bei der Optimierung der Zielfunktionsargumente eingesetzt. Werden die Argumente der Zielfunktion aktualisiert (nach Berechnung des Gradienten), wird der Aktualisierungsvektor des vorherigen Aktualisierungsschrittes zu einem Anteil berücksichtigt. Dadurch werden Oszillationen gedämpft. Wir nennen den Hyperparameter Momentum. Wird auf gesetzt, hat die Momentenmethode keinen Einfluss mehr. In einfachen Worten, wenn wir die Argumente aktualisieren, erinnern wir uns noch an den Schritt der letzten Aktualisierung. Wir gehen nun einen Schritt mit einer Länge entsprechend der Lernrate in Richtung des Gradienten. Zusätzlich wiederholen wir den Schritt, den wir bei der letzten Aktualisierung gingen, machen ihn jetzt aber nur noch mal so weit.

Nachtrainieren

Wir verstehen unter Nachtrainieren das Anpassen der Gewichtungen eines bereits vortrainierten Netzwerkes, d.h. während des Nachtrainierens lernt ein Netzwerk eine spezifische Aufgabe.

Non-Maximum Suppression

Bei der Objektdetektion wird die Non-Maximum Suppression verwendet um umschließende Rechtecke, die vom Netzwerk vorhergesagt wurden und sich dabei überlappen, zu unterdrücken. Überlappen sich verschiedene Instanzen stärker als durch einen Schwellwert erlaubt, wird nur die Instanz mit höchstem Konfidenzwert beibehalten, während alle anderen Instanzen unterdrückt werden.

Regularisierung - Hyperparameter 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior"

Regulariserung ist eine Methode um Überanpassung von Neuronalen Netzwerken zu vermeiden. Dies geschieht durch Addition eines Strafterms zur Zielfunktion. Dieser Regularisierungsterm schiebt die Gewichte gegen Null und bestraft dabei insbesondere große Gewichte. Einfach gesagt führt dies dazu, das einfachere Modelle bevorzugt werden, die sich weniger an Rauschen in den Daten anpassen und besser generalisieren. In HALCON wird die Regularisierung durch den Parameter 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" gesteuert. Dieser Parameter wird in der Literatur auch Regularisierungsparameter, weight decay, oder einfach genannt (Wir vermerken, dass wir innerhalb von HALCON für die Lernrate verwenden und in Formeln das Symbol für den Regularisierungsparameter).

Solver

Der Solver optimiert das Modell, indem er die Gewichtungen so anpasst, dass die Zielfunktion optimiert (d.h. minimiert) wird.

Stochastisches Gradientenverfahren (engl.: stochastic gradient descent, SGD)

Das stochastische Gradientenverfahren ist ein iterativer Optimierungsalgorithmus für differenzierbare Funktionen. Ein besonderes Merkmal bildet die Einschränkung der für einen einzelnen Iterationsschritt berücksichtigten Datenmenge, denn für eine Iteration wird nur ein einzelner Batch mit zufällig gewählten Bildern berücksichtigt. Bei Deep Learning verwenden wir den SGD zur Optimierung (d.h. Minimierung) der Zielfunktion.

Top-k Fehler

Der Klassifikator ordnet einem Bild nicht eine einzelne Klasse zu, sondern bezüglich jeder Klasse eine Konfidenz. Für ein Bild gibt es somit k Klassen mit höchster vorhergesagter Konfidenz. Der top-k Fehler gibt nun an, bei wie vielen Vorhersagen diese k Klassen die Ground Truth Klasse (das Label) beinhalten. Der top-1 Fehler gibt somit an, ob die inferierte Klasse mit größter Wahrscheinlichkeit der Ground Truth, vom Benutzer gegebenen Klasse entspricht. Beim top-3 Fehler wird geprüft, ob das die Ground Truth Klasse einer der drei besten Vorhersagen entspricht (d.h. einer der drei Klassen, die der Klassifikator als am wahrscheinlichsten zutreffend betrachtet).

Transferlernen (engl.: transfer learning)

Transferlernen meint eine Technik, bei der für ein neues Netzwerk das Wissen eines bereits existierenden und trainierten Netzwerkes die Basis bildet. Konkret wird ein bereits (vor)trainiertes Netzwerk inklusive seiner Gewichtungen übernommen und der Ausgabe-Layer für die spezifische Anwendung adaptiert. In HALCON betrachten wir auch den darauf folgenden Schritt des Nachtrainierens als Teil des Transferlernens.

Überanpassung (engl.: overfitting)

Man spricht von Überanpassung, wenn das Netzwerk anfängt, sich die Trainingsdaten zu merken, anstatt generelle Regeln zur Klassifikationsaufgabe zu finden. Überanpassung wird ersichtlich, wenn das Modell den Fehler auf dem Trainings-Datensatz weiter minimiert, während der Fehler auf dem Validierungs-Datensatz steigt. Die meisten Neuronalen Netzwerke haben eine sehr große Anzahl Gewichtungsfaktoren, weshalb diese Netzwerke besonders anfällig für Überanpassung sind.

Umschließendes Rechteck

Umschließende Rechtecke definieren einen bestimmten Teil innerhalb des Bildes. Sie werden auch dazu benutzt, ein Objekt im Bild zu lokalisieren.

Unteranpassung (engl.: underfitting)

Unteranpassung passiert, wenn das Modell übergeneralisiert. D.h. das Modell ist nicht fähig, die Komplexität der Aufgabe zu erfassen. Dies wird ersichtlich, wenn der Wert der Zielfunktion oder der Fehler auf dem Trainings-Datensatz nicht signifikant gemindert wird.

Veränderungsstrategie

Eine Veränderungsstrategie bestimmt, wann und wie die Hyperparameter während des Trainings eines DL Modells geändert werden.

Zielfunktion (engl.: loss)

Eine Zielfunktion vergleicht die Vorhersage des Netzwerks mit der gegebenen Information, was es im Bild finden soll (und gegebenenfalls wo) und bestraft Abweichungen. Beim Training werden die Argumente dieser Zielfunktion optimiert, um das Netzwerk für seine spezifische Aufgabe zu trainieren.


Liste der Abschnitte