Wie ist ein CNN grundlegend aufgebaut?
Eingabe Datensatz (RGB-Bilder)
Epochen
Batch
Convolutional-Layer
MaxPooling-Layer
Full Connected-Layer
Flatten
Faltungskernel
Gewichte
Klären Sie anhand der Bestandteile und des Aufbaus der CNN, ob die Klassifizierung der Bildinformation rotationsinvariant, skalierungsinvariant bzw. translationsinvariant ist oder nicht?
Translation und Rotation -> Ja
Durch die Convulutional layer in zusammen hang mit Maxpooling Werden die Merkmale (Features) herausgearbeitet und bleiben auch bei Translation oder Skallierung erhalten.
Rotation Nein, weil z.B. eine rotierte Ecke auch nach den Faltungen andere Merkmale aufweist, und somit nicht erkannt werden kann.
Kann man das Netzt verbessern, so dass es rotationsinvarianter, skalierungsinvarianter bzw. translationsinvarianter wird? Wenn ja, wie?
Skalierungs- und translationsinvariant ja -> mehr daten zur Verfügung stellen oder mit Augmentierung erstellen.
Rotationsinvariant nein -> CNN und auch NN sind generell nicht Rotationsinvariant
Ist ein Full Connected Neural Network, wie wir es im Kapitel 2 verwendet haben, rotationsinvariant, skalierungsinvariant bzw. translationsinvariant?
Nein
Was versteht man unter Parameter und Hyperparameter?
Parameter -> Werte in den Faltungs-Matrizen
Hyperparameter -> Anzahl Layer, Faltungen, Schrittweite, Größe der Matrizen 3x3, 5x5, 7x7
Was passiert im Feed Forward und was in der Backpropagation? Bauen Sie die Begriffe Initialisierung der Gewichte, Aktivierungsfunktion, Fehler bzw. Gradient berechnen, Batch ein.
Feed-Foreward:
Initialisierung der Gewichte
Aufteilung des Datensatzes in Batches
Berechnung der Ausgabewerte der einzelnen Schichten (Faltungen, Aktivierungsfunktionen und Maxpooling)
Flatten der Bilder für das FCNN
Output ausgeben
Fehler werden von einem Batch zusammen gefasst und z.b. gemittelt
Beckpropbagation:
Fehler auf die einzelnen Schichten zurückführen (Gradienten berechnen)
Optimierern (Mittels Gradientenabstiegsverfahren)
Gewichte mittels Fehler und Lernrate anpassen
Nachdem alle Batches abgeschlossen sind, ist eine Epoche abgeschlossen und die Bilder werden neu sortiert, den Batches zugeordnet und alles fängt von vorne an, außer die Initialisierung, die findet nur einmalig statt
Nach welchem Schritt werden die Gewichte in der Mini Batch-Optimization bzw. im Mini Batch Gradientenabstiegsverfahren angepasst?
Es wäre zu aufwendig, nach jedem Feed Forward eine Backpropagation und Optimierung durchzuführen!
Daher wird der Feed Forward für den gesamten Batch berechnet, der resultierende Fehler gemittelt und anschließend eine Optimierung durchgeführt.
Wie kann man entscheiden, ob ein CNN auch für unbekannte Datensätze funktioniert? Training, Validierung, Test, Korrektklassifizierung und Verlustrate sind mögliche Stichwörter.
Unterteilung des Datensatzes in Trainings-, Validierungs- und Testdaten.
Die Testdaten müssen dem System völlig unbekannt sein und dürfen nicht in den Trainings- oder Validierungsdaten enthalten sein.
Wenn die Validierungsergebnisse in Bezug auf die korrekte Klassifikation und die Verlustrate den Testergebnissen ähnlich sind, sollte das CNN auch für unbekannte Datensätze funktionieren. Weichen die Testergebnisse zu stark ab, liegt Overfitting vor.
Woran kann es liegen, wenn Ihr selbstimplementiertes CNN nicht richtig funktioniert? Nennen Sie vier Gründe? Zuerst die wichtigeren Gründe.
Schlechter Datensatz
Zu wenige Bilder
Falsch gelabelt
Schlechte Qualität der Bilder (Auflösung, verwackelt, nicht zutreffend auf die Anwendung)
Flasche Hyperparameter
zu wenige oder zu viele Layer
Sie vermuten, dass Ihr Netz nicht funktioniert, weil Sie zu wenigen Datensätzen (Bildern) zum Trainieren zur Verfügung haben? Welche Möglichkeiten gibt es dennoch ein funktionierendes Netz zu erhalten. Die eigene Implementierung weg zu schmeißen und etwas Neues zu probieren ist nur dann eine Alternative, wenn die neue Lösung mit erheblich weniger Daten auskommt. (Hier ist auch nach dem Transfer-Learning gefragt, das Sie erklären können sollten.)
Bilder Augmentieren
rotieren
scheren
shiften
zoomen
spiegeln
Transfer-Lerning
Vortrainiertes Netzwerk verwenden und nur das FC Network neu mit den wenigen Bildern trainieren oder das Fc Network und den letzte Convolutional Layer neu Trainieren
Kreuzvalidierung
Validierungsdatensatz und Trainingsdatensatz fürs Training verwenden (1 Batch ist aus dem Validierungsdatensatz)
t t t v
t t v t usw...
Wenn die Objekte, die Sie mit Neuronalen Netzen tracken möchten, nicht in einem der bekannten Datensets enthalten sind, müssen Sie eigene Bilder generieren. Welche Möglichkeiten gibt es, um zusätzlichen Daten (Bilder) zu erzeugen?
Manuelle Bilder mit einer Kamera aufnehmen und labeln
Zusätzlich diese Augmentieren um mehr Bilder zu erzeugen
Bilder mithilfe 3D Modellen erstellen
Mit realen Texturen
3D Modellierung und rendern
Fotogrammetrie
mit künstlichen Texturen und Farben
Nur Geometrie und Beleuchtung ist ausschlaggebend
Die Gradienten kann man im Netz durch Traversierung des Graphen verteilen oder durch Ableitung einer Funktion F(X).
Erklären Sie, wie die Funktion F(X) entsteht.
Die Funktion F(x) ist die Verkettung aller Berechnungen der Feed Forwardberechnung
Welchen Funktionswert liefert die Funktion F(X) und wie erhalte ich die Gradienten, die zur Anpassung der Gewichte nötig sind?
Der Gradient ist die 1. Ableitung der Funktion F(X), welche die einzelnen Funkitonen der Layer abbildet, welche die Gewichte und Bias enthalten)
Wo kommt die Jacobi-Matrix zum Einsatz?
Da die Funktion fk einen Vektor auf einen anderen Vektor gleicher, aber unterschiedlicher Dimension abbildet, wird zur Differenzierung einer solchen Funktion die Jacobi-Matrix verwendet. In dieser Matrix sind die transponierten Gradienten der Gewichtungsmatrix der Schicht k enthalten.
ChatGPT:
Die Jacobi-Matrix häufig zur Berechnung der Gradienten verwendet, da sie eine kompakte Darstellung der partiellen Ableitungen der Verlustfunktion nach den Netzwerkgewichten ermöglicht.
Was passiert im Anschluss an die Backpropagation?
Nach der Backprobagation wird da Gradientenabstiegsverfahren ausgeführt.
Anhand des Gradienten und der Lernrate wird der Wert jedes Gewichts so angepasst, dass der Fehler ein bisschen kleiner wird.
Was versteht man unter verschwindenden und explodierenden Gradienten? Welche Möglichkeiten gibt es, um diese unter Kontrolle zu bringen? Nennen Sie vier Möglichkeiten und erklären Sie diese soweit wir dies in der Vorlesung gemacht haben.
Wenn Gradienten während des Trainings sehr groß oder klein werden.
Verbesserungsmöglichkeiten:
Möglichkeit: Explodierende Gradienten -> Lernrate reduzieren (Model lernt dann aber schlechter) verschwindende Gradienten -> Lernrate erhöhen
Möglichkeit: Initialisierung der Gewichte anpassen -> Ziel Gaußverteilung um die Null herum
Möglichkeit: Batch Normalisieren -> BatchNormalisationLayer: Normiert die Werte der Gewichte während des Trainings und ermöglicht, dass der Gradient gleichmäßig durch das Netz fließt. (Gradient eines bestimmten Intervalls abscheiden oder Gradient linear in einem bestimmten Normbereich einpassen)
Möglichkeit: Rekurrente neuronale Netze (Long Short Term Memory Netze - LSTM)
Mithilfe von einer Merkerzelle Mittelwert von Merkerzelle und Eingang bilden und weitergeben
Neuer Input -> Merkerzelle nimmt letzten Output an weiter mit 1…
Daraus ergibt sich, dass die Speicherung von 2 Schritten in der Vergangenheit Einfluss auf die Ausgabe hat.
Wie unterscheidet sich die Semantische Segmentierung vom Objektdetektion? Nennen Sie jeweils ein Beispielnetz?
Bei der semantischen Segmentierung wird jedes Pixel in einem Bild einer bestimmten Klasse oder Kategorie zugeordnet.
Beispielnetz: Mask R-CNN PointRend SEG-YOLO
Die Objektdetektion befasst sich mit der Erkennung und Lokalisierung von mehreren Objekten verschiedener Klassen in einem Bild. Im Gegensatz zur semantischen Segmentierung wird hier nicht jedes Pixel klassifiziert, sondern es werden Bounding Boxes (Begrenzungsrahmen) um erkannte Objekte gezogen und diese Objekte werden mit ihrer entsprechenden Klasse beschriftet.
Beispielnetz: YOLO
Stabilisierung der CNN durch Normalisierung:
Was ermittelt man durch die Berechnung des Mittelwerts und der Standardabweichung eines Bildes bzw. eines Grauwertbildes.
Pro Lab-Farbkanal (l, a, b) erfasst man
- die mittlere Bildhelligkeit, entspricht dem durchschnittlichen Grauwert (Mittelwert als Fließkommazahl)
- die Streuung der Grauwerte um den Mittelwert im Histogramm (Standardabweichung s, als Fließkommazahl)
Wie kann man diese beiden Werte zur Verbesserung des Trainings eines CNN nutzen? Für welche Arten von Trainingsbilder ist diese Art der Verbesserung nützlich?
Der Datensatz kann normalisiert werden, indem der Mittelwert auf Null gesetzt (d. h. von den Pixelwerten subtrahiert) und durch die Standardabweichung dividiert wird, um den Kontrast der Bilder anzugleichen.
Besonders nützlich für Farbbilder oder Bilder mit hoher Beleuchtungsvarianz.
Last changeda year ago