Warum verwenden Convolutions immer ungerade Zahlen als filter_size?


13

Betrachten wir 90-99% der Veröffentlichungen über ein CNN (ConvNet). Die überwiegende Mehrheit von ihnen verwendet Filtergrößen mit ungeraden Zahlen : {1, 3, 5, 7} für die am häufigsten verwendeten.

Diese Situation kann zu einem Problem führen: Bei diesen Filtergrößen ist die Faltungsoperation normalerweise nicht perfekt, wenn ein Abstand von 2 (gemeinsamer Abstand) verwendet wird, und einige Kanten des input_field gehen dabei verloren ...

Frage 1: Warum nur ungerade_Nummern für Faltungsfiltergrößen verwenden?

Frage 2: Ist es tatsächlich ein Problem, einen kleinen Teil des input_field während der Faltung wegzulassen? Warum so / nicht?

Antworten:


14

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: Bildbeschreibung hier eingeben 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.


Vielen Dank für Ihre Erklärung, aber ist es nicht einfacher, dies zu verstehen, wenn man sich die Definition der Faltung in mathematischen Begriffen ansieht? en.wikipedia.org/wiki/Convolution#Discrete_convolution Weil wir hier sehen, dass wir immer m Terme links und rechts vom Ursprung haben werden ... daher wird dies immer zu einer ungeraden Menge führen.
Zwep

@zwep Einverstanden! Q & A-Foren ersetzen keine Enzyklopädien. sondern nur ergänzen. Eine breitere Perspektive zu Ihrem Kommentar: Die Definition ist in der Regel nur eine von Experten geprüfte beste Wahl unter den verfügbaren Optionen. Es ist nicht die Wahrheit des Evangeliums. Trotzdem müssen Regeln erst erlernt werden, bevor sie gebrochen werden, damit der Community genau mitgeteilt werden kann, wie und warum Sie es anders machen. Die Gründe und Alternativen für eine bestimmte Definition sind in Forschungsarbeiten und in der Regel nicht in einer Enzyklopädie aufgeführt.
Dynamische Stardust

5

1) Angenommen, input_fieldbis auf einen Eintrag am Index ist alles Null idx. Eine ungerade Filtergröße gibt Daten mit einem zentrierten Peak zurück idx, 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_fieldist für die Faltung relevant, aber die Kanten von output_fieldkönnen nicht genau berechnet werden, da die erforderlichen Daten nicht in enthalten sind input_field. Wenn ich eine Antwort für das erste Element von berechnen möchte, output_fieldmuss der Filter auf das erste Element von zentriert werden input_field. Aber dann gibt es Filterelemente, die keinem verfügbaren Element von entsprechen input_field. Es gibt verschiedene Tricks, um die Kanten von zu erraten output_field.


2

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.

Warum gerade große Filter nicht funktionieren

Quelle: https://towardsdatascience.com/deciding-optimal-filter-size-for-cnns-d6f7b56f9363

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.