Ich habe hier gelesen , dass "ein zufällig initialisierter Filter sehr ähnlich wie ein Kantendetektor wirkt!". Ich möchte wissen, ob es Papiere gibt, die dieses Phänomen beschreiben und erklären.
Ich habe hier gelesen , dass "ein zufällig initialisierter Filter sehr ähnlich wie ein Kantendetektor wirkt!". Ich möchte wissen, ob es Papiere gibt, die dieses Phänomen beschreiben und erklären.
Antworten:
Warum? Schauen wir uns den einfachsten Fall an, in dem der Kernel 1x2 groß ist (dh zwei Pixel breit und ein Pixel hoch).
Hier ist eine Kernelmatrix für einen Kantendetektor, der vertikale Kanten erkennt:
Hier ist eine weitere Matrix für einen Kantendetektor, der auch vertikale Kanten erkennt:
Insbesondere Faltung mit Reagiert stark auf vertikale Kanten, bei denen die rechte Seite der Kante eine höhere Intensität und die linke Seite eine geringere Intensität aufweist (rechts weißer, links schwärzer). Reagiert stark auf vertikale Kanten mit entgegengesetzter Intensitätsänderung (links weißer, rechts schwärzer).
Wir können sehen, dass dies auch für andere Beispiele gilt. Betrachten Sie zum Beispiel
Dies verhält sich fast identisch mit , außer für die Neuskalierung am Ausgang.
Konzentrieren wir uns der Einfachheit halber auf Faltungskerne, die normalisiert wurden, sodass ihre Einträge zu Null summieren. (Viele Faltungskerne, die wir in der Praxis verwenden, haben diese Form, weil sie schöne Eigenschaften haben.)
Was ist mit einer zufälligen 1x2-Matrix? Nun, wenn es normalisiert wurde, dann wird es notwendigerweise die Form haben
für eine Konstante (wo ist zufällig). Egal was ist, wir sehen, dass sich dies wie entweder verhält oder .
Schlussfolgerung: Ein zufälliges, normalisiertes 1x2-Faltungsfilter verhält sich mit hoher Wahrscheinlichkeit wie ein vertikaler Kantendetektor.
Dies kann auf andere Kernelgrößen verallgemeinert werden. Für einen zufälligen, normalisierten 2x1-Kernel erhalten wir grundsätzlich einen horizontalen Kantendetektor. Ein zufälliger, normalisierter 2x2-Kernel reagiert wahrscheinlich auf Kanten in einer bestimmten Richtung (möglicherweise in einem bestimmten Winkel; die spezifische Richtung hängt von den Einträgen der Matrix ab).
Wenn die Matrix größer und größer wird, nimmt dieser Effekt ab (glaube ich). In der Praxis verwenden wir jedoch normalerweise einen relativ kleinen Faltungskern (ein ziemlich kleines Empfangsfeld), sodass wir uns hauptsächlich um das Verhalten mit kleinen Faltungskernen kümmern.
Was ist mit Normalisierung? Bisher habe ich über Matrizen gesprochen, die zufällig generiert und dann auf Null normiert wurden. Was ist, wenn wir den Normalisierungsschritt überspringen?
Nun, das ändert sich nicht sehr. Ohne Normalisierung a Zufallsmatrix kann zerlegt werden in wo wird normalisiert, so dass seine Einträge zu Null summieren, ist eine Konstante, ist die Matrix enthaltend in jedem Eintrag.
Das Eingabebild mit falten hat eine gute Chance, im Grunde genommen einen Kantendetektorfilter auf das Eingangsbild anzuwenden (wie oben diskutiert). Das Eingabebild mit falten verwischt im Grunde das Bild und multipliziert es dann mit . Somit ist das Ausgabebild die (gewichtete) Summe dieser beiden: die (gewichtete) Summe eines Kantendetektorfilters plus einer unscharfen Version des Bildes.
Für eine zufällige Matrix gibt es eine gute Chance, dass wird relativ klein sein (da der Mittelwert der Summe einer Reihe von Zufallsvariablen oft ziemlich klein ist), also multiplizieren mit bewirkt, dass das Ausgabebild mehr durch den Kantendetektor als durch die Unschärfe bestimmt wird. Wenn klein ist, können wir grundsätzlich den zweiten Term der Summe ignorieren und das Ausgabebild als Ergebnis eines Kantendetektorfilters approximieren.
Aus diesem Grund hat die Faltung mit einer Zufallsmatrix eine gute Chance, dass eine Art Kantendetektor auf das Eingabebild angewendet wird.
Wenn ich mir die Beispielbilder auf diesen Seiten ansehe, sieht das erste für mich mehr oder weniger wie ein Kantendetektor aus, und das zweite sieht mehr oder weniger wie ein Unschärfeoperator aus. Dies steht im Einklang mit der obigen Analyse.