Die Faltungsoperation ist, einfach ausgedrückt, eine Kombination eines elementweisen Produkts zweier Matrizen. Solange diese beiden Matrizen in ihren Dimensionen übereinstimmen, sollte es kein Problem geben und ich kann die Motivation hinter Ihrer Anfrage verstehen.
A.1. Die Absicht der Faltung besteht jedoch darin, die Quelldatenmatrix (das gesamte Bild) in Form eines Filters oder Kernels zu codieren. Insbesondere versuchen wir, die Pixel in der Nachbarschaft von Anker- / Quellpixeln zu codieren. Schauen Sie sich die folgende Abbildung an:
Normalerweise betrachten wir jedes Pixel des Quellbilds als Anker- / Quellpixel, müssen dies jedoch nicht tun. Tatsächlich ist es nicht ungewöhnlich, einen Schritt einzuschließen, bei dem Anker- / Quellpixel durch eine bestimmte Anzahl von Pixeln getrennt sind.
Okay, was ist das Quellpixel? Dies ist der Ankerpunkt, an dem der Kern zentriert ist, und wir codieren alle benachbarten Pixel, einschließlich des Anker- / Quellpixels. Da der Kernel symmetrisch geformt ist (nicht symmetrisch in den Kernelwerten), gibt es auf allen Seiten (4-Konnektivität) des Ankerpixels die gleiche Anzahl (n) von Pixeln. Unabhängig von dieser Anzahl von Pixeln beträgt die Länge jeder Seite unseres symmetrisch geformten Kernels 2 * n + 1 (jede Seite des Ankers + das Ankerpixel), und daher haben Filter / Kernel immer eine ungerade Größe.
Was wäre, wenn wir uns dazu entschließen, mit der Tradition zu brechen und asymmetrische Kernel zu verwenden? Sie würden Aliasing-Fehler erleiden, und das tun wir nicht. Wir betrachten das Pixel als die kleinste Entität, dh es gibt hier kein Subpixel-Konzept.
A.2 Das Randproblem wird mit verschiedenen Ansätzen gelöst: Einige ignorieren es, andere füllen es mit Nullen auf, andere spiegeln es wider. Wenn Sie keine inverse Operation, dh Dekonvolution, berechnen und nicht an einer perfekten Rekonstruktion des Originalbilds interessiert sind, ist es Ihnen aufgrund des Randproblems egal, ob Sie Informationen verlieren oder Rauschen einspeisen. In der Regel werden durch die Pooling-Operation (durchschnittliches Pooling oder maximales Pooling) Ihre Grenzartefakte ohnehin entfernt. Sie können also einen Teil Ihres 'Eingabefelds' ignorieren, Ihre Pooling-Operation erledigt dies für Sie.
-
Zen der Faltung:
Im Bereich der Signalverarbeitung der alten Schule gab es, wenn ein Eingangssignal gefaltet oder durch ein Filter geleitet wurde, keine Möglichkeit, a-prior zu beurteilen, welche Komponenten der gefalteten / gefilterten Antwort relevant / informativ waren und welche nicht. Infolgedessen bestand das Ziel darin, (alle) Signalkomponenten in diesen Transformationen zu erhalten.
Diese Signalkomponenten sind Informationen. Einige Komponenten sind informativer als andere. Der einzige Grund dafür ist, dass wir daran interessiert sind, Informationen auf höherer Ebene zu extrahieren. Informationen zu einigen semantischen Klassen. Dementsprechend können die Signalkomponenten, die nicht die Informationen liefern, an denen wir speziell interessiert sind, entfernt werden. Daher können wir im Gegensatz zu herkömmlichen Dogmen über Faltung / Filterung die Faltungsreaktion nach Belieben bündeln / beschneiden. Wir möchten dies tun, indem wir konsequent alle Datenkomponenten entfernen, die nicht zur Verbesserung unseres statistischen Modells beitragen.
1) Angenommen,
input_field
bis auf einen Eintrag am Index ist alles Nullidx
. Eine ungerade Filtergröße gibt Daten mit einem zentrierten Peak zurückidx
, eine gerade Filtergröße nicht. Betrachten Sie den Fall eines einheitlichen Filters mit Größe 2. Die meisten Benutzer möchten die Positionen der Peaks beim Filtern beibehalten.2) All dies
input_field
ist für die Faltung relevant, aber die Kanten vonoutput_field
können nicht genau berechnet werden, da die erforderlichen Daten nicht in enthalten sindinput_field
. Wenn ich eine Antwort für das erste Element von berechnen möchte,output_field
muss der Filter auf das erste Element von zentriert werdeninput_field
. Aber dann gibt es Filterelemente, die keinem verfügbaren Element von entsprecheninput_field
. Es gibt verschiedene Tricks, um die Kanten von zu erratenoutput_field
.quelle
Bei einem Filter mit ungerader Größe würden alle Pixel der vorherigen Ebene symmetrisch um das Ausgabepixel liegen. Ohne diese Symmetrie müssen wir Verzerrungen zwischen den Ebenen berücksichtigen, die auftreten, wenn ein Kernel mit gerader Größe verwendet wird. Daher werden Kernel-Filter mit gerader Größe meistens übersprungen, um die Implementierung zu vereinfachen. Wenn Sie Faltung als Interpolation von den angegebenen Pixeln zu einem mittleren Pixel betrachten, können wir mit einem Filter mit gerader Größe nicht zu einem mittleren Pixel interpolieren.
Quelle: https://towardsdatascience.com/deciding-optimal-filter-size-for-cnns-d6f7b56f9363
quelle