Unterschied zwischen "Kernel" und "Filter" in CNN

37

Was ist der Unterschied zwischen den Begriffen "Kernel" und "Filter" im Kontext von Faltungsnetzwerken?

Ryguy
quelle
5
Sie sind gleich! Filter oder Kernel ist eine einfache Gruppe von Wertigkeiten, die über den gesamten Eingabebereich verteilt sind.
yasin.yazici

Antworten:

42

Im Kontext von Faltungs-Neuronalen Netzen ist Kernel = Filter = Merkmalsdetektor.


Hier ist eine großartige Illustration aus Stanfords ausführlichem Lernprogramm (auch von Denny Britz gut erklärt ).

Bildbeschreibung hier eingeben

Der Filter ist das gelbe Schiebefenster und hat folgenden Wert:

[101010101]
Franck Dernoncourt
quelle
2
Gibt es einen bestimmten Namen für den Filter? Wie ein "Blur" oder ein "Edge
Detect
2
@PratikKhadloya nein, diese Namen werden subjektiv von Forschern vergeben, basierend auf dem, was der Filter zu erkennen scheint.
Shadowtalker
1
@Frank Dernoncourt laut diesem Link Richtung Datascience / ... unterscheiden sie sich, wenn wir ein paar Kanäle haben. Tatsächlich, wenn es mehrere Kanäle gibt Jeder Filter ist zufällig eine Sammlung von Kerneln, wobei für jeden einzelnen Eingangskanal der Ebene ein Kernel und jeder Kernel einzigartig ist. Ich würde mich freuen, Ihre Idee zu haben
sariii
6

Eine Feature-Map ist in diesem speziellen Kontext dasselbe wie ein Filter oder "Kernel". Die Gewichte des Filters bestimmen, welche spezifischen Merkmale erkannt werden.

So hat Franck zum Beispiel ein großartiges Bild geboten. Beachten Sie, dass sein Filter / Feature-Detektor x1 entlang der diagonalen Elemente und x0 entlang aller anderen Elemente hat. Diese Kernel-Gewichtung würde somit Pixel im Bild erkennen, die entlang der Bilddiagonalen den Wert 1 haben.

Beachten Sie, dass das resultierende Faltungsmerkmal überall dort, wo das Bild eine "1" entlang der Diagonalen des 3x3-Filters aufweist (wodurch der Filter in diesem speziellen 3x3-Abschnitt des Bildes erkannt wird), Werte von 4 und in den Bereichen von 2 niedrigere Werte anzeigt Das Bild, in dem dieser Filter nicht so stark übereinstimmt.

JohnnyUtah
quelle
4

k×k×CCCHichn×Hichn×C32×32RGB-Bild). Es ist sinnvoll, ein anderes Wort zur Beschreibung eines 2D-Arrays von Gewichten und ein anderes für die 3D-Struktur der Gewichte zu verwenden, da die Multiplikation zwischen 2D-Arrays erfolgt und dann die Ergebnisse summiert werden, um die 3D-Operation zu berechnen.

Derzeit gibt es ein Problem mit der Nomenklatur in diesem Bereich. Es gibt viele Begriffe, die dasselbe beschreiben, und sogar Begriffe, die synonym für verschiedene Konzepte verwendet werden! Nehmen Sie als Beispiel die Terminologie, die zur Beschreibung der Ausgabe einer Faltungsschicht verwendet wird: Feature-Maps, Kanäle, Aktivierungen, Tensoren, Ebenen usw.

Basierend auf Wikipedia, "In der Bildverarbeitung ist ein Kernel eine kleine Matrix".

Basierend auf Wikipedia, "Eine Matrix ist eine rechteckige Anordnung in Zeilen und Spalten".

k1×k2×C

Nun, ich kann nicht behaupten, dass dies die beste Terminologie ist, aber es ist besser, als die Begriffe "Kernel" und "Filter" austauschbar zu verwenden. Darüber hinaus benötigen wir ein Wort, um das Konzept der einzelnen 2D-Arrays zu beschreiben, die einen Filter bilden.

Jim
quelle
1

Die vorhandenen Antworten sind hervorragend und beantworten die Frage umfassend. Ich möchte nur hinzufügen, dass Filter in Convolutional-Netzwerken über das gesamte Bild verteilt sind (dh, die Eingabe wird mit dem Filter zusammengefasst, wie in Francks Antwort dargestellt). Das Empfangsfeld eines bestimmten Neurons sind alle Eingabeeinheiten, die das betreffende Neuron beeinflussen. Das Empfangsfeld eines Neurons in einem Convolutional-Netzwerk ist im Allgemeinen kleiner als das Empfangsfeld eines Neurons in einem Dichten Netzwerk dank gemeinsam genutzter Filter (auch als Parameter-Sharing bezeichnet ).

Die gemeinsame Nutzung von Parametern bietet CNNs einen gewissen Vorteil, nämlich eine Eigenschaft, die als Äquivarianz zur Übersetzung bezeichnet wird . Das heißt, wenn der Eingang gestört oder übersetzt ist, wird auch der Ausgang auf die gleiche Weise modifiziert. Ian Goodfellow liefert im Deep Learning Book ein hervorragendes Beispiel dafür, wie Praktiker die Äquivarianz in CNNs nutzen können:

Wenn Sie Zeitreihendaten verarbeiten, bedeutet dies, dass durch die Faltung eine Art Zeitachse erstellt wird, die anzeigt, wann verschiedene Features in der Eingabe angezeigt werden. Wenn Sie ein Ereignis später in der Eingabe verschieben, wird dieselbe Darstellung in der Ausgabe angezeigt. nur später. Ähnlich wie bei Bildern erstellt die Faltung eine 2-D-Karte, auf der bestimmte Merkmale in der Eingabe angezeigt werden. Wenn wir das Objekt in der Eingabe verschieben, verschiebt sich seine Darstellung in der Ausgabe um den gleichen Betrag. Dies ist nützlich, wenn wir wissen, dass einige Funktionen einer kleinen Anzahl benachbarter Pixel nützlich sind, wenn sie auf mehrere Eingabepositionen angewendet werden. Beispielsweise ist es bei der Verarbeitung von Bildern nützlich, Kanten in der ersten Schicht eines Faltungsnetzwerks zu erkennen. Die gleichen Kanten werden mehr oder weniger überall im Bild angezeigt. Daher ist es praktisch, Parameter für das gesamte Bild gemeinsam zu verwenden.

Pranav Vempati
quelle