Es gibt einige Variationen beim Normalisieren der Bilder, aber die meisten scheinen diese beiden Methoden zu verwenden:
- Subtrahiere den über alle Bilder berechneten Mittelwert pro Kanal (zB VGG_ILSVRC_16_layers )
- Über alle Bilder berechnete Subtraktion nach Pixel / Kanal (z. B. CNN_S , siehe auch Caffes Referenznetzwerk )
Die natürliche Herangehensweise würde meines Erachtens jedes Bild normalisieren. Ein Bild, das am helllichten Tag aufgenommen wurde, löst mehr Neuronen aus als ein Nachtbild. Es gibt uns möglicherweise Auskunft über die Zeit, in der wir uns normalerweise um interessantere Merkmale an den Rändern usw. kümmern.
Pierre Sermanet bezieht sich in 3.3.3 auf die lokale Kontrastnormalisierung , die bildbasiert wäre, aber ich bin in keinem der Beispiele / Tutorials darauf gestoßen, die ich gesehen habe. Ich habe auch eine interessante Quora-Frage und den Beitrag von Xiu-Shen Wei gesehen, aber sie scheinen die beiden oben genannten Ansätze nicht zu unterstützen.
Was genau vermisse ich? Handelt es sich um ein Problem mit der Farbnormalisierung oder gibt es ein Papier, in dem erklärt wird, warum so viele diesen Ansatz verwenden?
quelle
Antworten:
Durch Subtrahieren des Datensatzmittelwerts werden die Daten "zentriert". Darüber hinaus möchten Sie im Idealfall auch durch den sttdev dieses Features oder Pixels dividieren, wenn Sie jeden Feature-Wert in einen Z-Score normalisieren möchten.
Der Grund, warum wir beides tun, ist, dass wir beim Trainieren unseres Netzwerks diese anfänglichen Eingaben multiplizieren (Gewichte) und addieren (Verzerrungen), um Aktivierungen auszulösen, die wir dann mit den Verläufen auf zurückpropagieren trainiere das Modell.
Wir möchten in diesem Prozess, dass jedes Feature einen ähnlichen Bereich hat, damit unsere Farbverläufe nicht außer Kontrolle geraten (und wir nur einen globalen Lernratenmultiplikator benötigen).
Eine andere Möglichkeit ist, dass Deep-Learning-Netzwerke traditionell viele Parameter gemeinsam nutzen - wenn Sie Ihre Eingaben nicht auf eine Weise skaliert hätten, die zu ähnlich variierenden Merkmalswerten geführt hätte (dh über den gesamten Datensatz durch Subtrahieren des Mittelwerts), würde dies nicht der Fall sein passieren sehr leicht, weil ein Teil des Bildgewichts
w
viel ist und zum anderen ist es zu klein.Sie werden in einigen CNN-Modellen feststellen, dass die Bleichung pro Bild verwendet wird, was eher Ihren Vorstellungen entspricht.
quelle
Vor der Chargennormalisierung wurde die mittlere Subtraktion pro Kanal verwendet, um die Daten um den Mittelwert Null für jeden Kanal (R, G, B) zu zentrieren. Auf diese Weise kann das Netzwerk in der Regel schneller lernen, da die Verläufe für jeden Kanal einheitlich sind. Ich vermute, wenn Sie die Batch-Normalisierung verwenden, ist der Vorverarbeitungsschritt für die mittlere Subtraktion pro Kanal nicht wirklich erforderlich, da Sie ohnehin pro Mini-Batch normalisieren.
quelle
Normalisierung pro Bild ist weit verbreitet und sogar die einzige in Tensorflow eingebaute Funktion (vor allem, weil sie sehr einfach zu implementieren ist). Sie wird genau aus dem von Ihnen genannten Grund verwendet (Tag VS Nacht für dasselbe Bild). Wenn Sie sich jedoch ein idealeres Szenario vorstellen, in dem die Beleuchtung gesteuert wird, sind die relativen Unterschiede zwischen den einzelnen Bildern im Algorithmus von großem Wert, und wir möchten dies nicht mit der Normalisierung pro Bild auslöschen (und möchten dies auch tun) Normalisierung im Kontext des gesamten Trainingsdatensatzes durchführen).
quelle
Dies wird als Vorverarbeitung von Daten vor deren Verwendung bezeichnet. Sie können auf viele Arten verarbeiten, aber es gibt eine Bedingung, dass Sie alle Daten mit derselben Funktion verarbeiten sollten. X_preproc = f (X) und dieses f (.) Sollte nicht von den Daten selbst abhängen. Wenn Sie also das aktuelle Bild verwenden, bedeutet dies, dass Sie dies verarbeiten aktuelles Bild, dann ist dein f (X) tatsächlich wirklich f (X, Bild) und du willst das nicht.
Die von Ihnen angesprochene Bildkontrastnormalisierung dient einem anderen Zweck. Die Normalisierung des Bildkontrasts hilft bei der Funktion.
Aber f (.) Hilft bei der Optimierung, indem alle Funktionen numerisch gleich sind (natürlich ungefähr).
quelle