05 Convolutional Neural Networks Flashcards
LeNet
Entwickelt zur Handschrifterkennung
7 Layer (exkl. Input) :
* 2x Convolution, 2x Subsampling (Pooling)
* 3x Fully Connected NN (incl. Output)
Datenfluss im Netz
Daten werden in Form von Feature Maps von Layer zu Layer übertragen
- Jeder Layer erhält als Eingabe r Feature Maps (mxm)
- Im Input Layer gilt: Feature Maps = Engabebild (RGB Eingabe: mxmx3)
- Alle Feature Maps zwischen zwei Layern entsprechen einem Tensor
Pooling Layer
Zusammenfassung kleiner Bildbereiche
- pxp Bereich
- p gewählt nach Zweck und Größe des Eingabebildes
- Meist p € [2,5]
- 2 für eher kleine Inputs, 5 eher große
Pooling Strategien
Max Pooling: max {a€A}
Mean Pooling: 1/|A| Sum a
Stochastic Pooling (stoch. Auswahl abh. von Aktivierung)
Nutzen von Pooling Layer
Lokale Translationsinvarianz
Invarianz gegen leichte Veränderungen und Verzerrungen
Datenreduktion
Convolution Layer
Anwendung von Faltungsoperationen auf die Eingabe
Eingabe: Feature Maps des vorherigen Layers
Ausgabe: Feature Maps des Layers, entanden durch Faltung der Eingabe mit k Filtern
Stride
Schrittweite des Faltungskernels (in beiden Dimensionen)
Muss zur Größe der Eingabe passen
Randbetrachtung
Relevant vA bei Convolution Layer, bei Filter größe 1x1
Ursprungsgröße geht durch Randeffekte bei Faltung verloren
=> Informationsverlust
=> Mögliche Strides für jeden Convolution Layer andere
Möglichkeiten zur Behandlung
- dont care: Berechnung des inneren Bereichs, Reduktion der Ergebnisgröße
- padding: ausfüllen des Randbereichs
Padding
Ausfüllen der Verlorenen Zeilen / spalten
=> Ursprungsgröße bleibt erhalten
=> Stabilisiert den Größenverlauf der Layer
Varianten:
- Zero padding: auffüllen mit 0
- nearest padding: duplizieren der Randpixel
- reflect padding: matrix nach außen spiegeln
Weight Sharing
im klassischen NN:
- jede Verbindung zwischen zwei Schichten enthält ein zu lernendes Gewicht
- Bei Verarbeitung von Bildern: Ein Neuron verbunden zu jedem Bildpixel => schnell sehr viele Gewichte
im CNN:
- Gewichte werden nur in Filtern gelernt
- Lokale Wiederbenutzung von Gewichten
- Hierdurch deutliche Reduzierung der zu lernenden Gewichte (Parameter) => geringere Anzahl Lerndaten nötig, kürzere Trainingszeiten
Methoden zur Initialisierung der Gewichte
Random Initialization
* Gewichte initialisiert über Zufallsfunktion
Fixed Feature extractor
- Übernahme der Gewichte von trainiertem Netz
- Fixieren der Gewichte der Feature Extraction SChichten
Fine-Tuning
- Übernahme der Gewichte von trainiertem Netz
- geringe Lernrate für ausgewählte Schichten
Pretrained Initialization
- Übernahme der Gewichte von trainiertem Netz lediglich zur Initialsierung
- Normale Lernrate
Fully Convolutional Networks
Konvertierung der Fully Connected Schichten in Convolutional Schichten
Netze äquivalent bei gleicher Eingabegröße
Im Gegensatz zu fully connected CNNs Eingabegröße nicht fix - größere Eingabebilder möglich
Ausgabe eines FCN
Ausgabe Fully connected CNN:
Ein Wahrscheinlichkeitswert pro Klasse
Ausgabe FCN:
- Eine Wahrscheinlichkeitskarte pro Klasse
- Gibt die Wahrscheinlichkeit dafür an, dass ein Bereich / Pixel im Bild zur entsprechenden Klasse gehört
- Größe eines Bereichs abhängig von der Netzarchitektur