Was sind die Unterschiede zwischen Convolutional1D, Convolutional2D und Convolutional3D?


9

Ich habe etwas über Faltungs-Neuronale Netze gelernt. Bei der Betrachtung von KerasBeispielen bin ich auf drei verschiedene Faltungsmethoden gestoßen. Nämlich 1D, 2D & 3D. Was sind die Unterschiede zwischen diesen drei Schichten? Was sind ihre Anwendungsfälle? Gibt es einige Links oder Verweise, um ihre Anwendungsfälle zu zeigen?

Antworten:


5

Der einzige Unterschied ist die Dimensionalität des Eingaberaums. Die Eingabe für eine Faltungsschicht hat die folgende Form:

input_shape = (batch_size, input_dims, channel)

  • Eingabeform für conv1D : (batch_size, W, Kanäle)

    Beispiel: 1 Sekunde Stereo-Sprachsignal mit 44100 Hz, Form: (batch_size, 44100,2)

  • Eingabeform für conv2D : (batch_size, (H, W), Kanäle)

    Beispiel: 32x32 RGB-Bild, Form: (batch_size, 32,32,3)

  • Eingabeform für conv3D : (batch_size, (H, w, D), Kanäle)

    Beispiel (kniffliger): 1 Sekunde Video von 32x32 RGB-Bildern mit 24 fps, Form: (batch_size, 32,32,3,24)

Was ist ein Kanal?

Der Schlüssel ist, darüber nachzudenken, was der Kanal für unsere Eingabedaten bedeutet. Die Faltungsschicht wendet für jeden Kanal unterschiedliche Filter an, daher haben die Gewichte der Faltungsschicht die folgende Form:

(kernel_size,num_channels,num_filter_per_channels)

Beispiel:

Faltungsschicht mit 12 Filtern und einer quadratischen Kernelmatrix der Größe 3. Diese Schicht wendet 12 verschiedene Filter für jeden Kanal an. In den zuvor angegebenen Beispielen:

  • 1 Sekunde Stereo-Sprachsignal mit 44100 Hz abgetastet, kernel_size = 3

    12 x 2 = 24 eindimensionale Filter, 12 Filter für jeden Kanal

     Weigths shape: (3, 2, 12)
  • 32x32 RGB-Bild, kernel_size = (3,3)

    12 x 3 = 36 zweidimensionale Filter, 12 Filter für jeden Kanal

    Weights shape: (3, 3, 3, 12)
  • 1 Sekunde Video von 32x32 RGB-Bildern mit 24 fps, kernel_size = (3,3,3)

    24 x 12 = 288 dreidimensionale Filter, 12 Filter für jeden Kanal

    Weights shape: (3, 3, 3, 24, 12)

Daher ist es sehr wichtig zu entscheiden, was ein Kanal bedeutet, da jeder Kanal seine eigenen Filter hat. Für die ersten Beispiele scheint es einfach zu sein, zu entscheiden, dass die Stereosignale und die RGB-Bilder unterschiedliche Kanäle sind ... sie werden üblicherweise so genannt (Stereokanäle, RGB-Kanäle). Im Videobeispiel ist es mehrdeutig ... Das Festlegen eines Videos als 3D-Eingabe mit der zeitlichen Dimension als Kanal ist möglicherweise nicht die beste Option, da auf diese Weise die Reihenfolge der zeitlichen Frames keine Rolle spielt (die Ausgaben für Die Filter jedes Kanals werden zusammengefasst. Dies führt dazu, dass die intrinsische zeitliche Dynamik der Eingabedaten verloren geht. Ein besserer Ansatz (je nach Anwendung) besteht darin, die RGB-Bilder mit 2D-Faltungen in einem wiederkehrenden neuronalen Netzwerk zu verarbeiten. Das gleiche passiert mit dem Sprachsignal,

Es ist wichtig zu beachten, dass ein Signal mit einer Eingangsdimension D als ein Signal mit einer D + 1-Dimension mit einem Kanal betrachtet werden kann, der resultierende Merkmalsraum jedoch möglicherweise weniger repräsentativ / nützlich ist :

 (44100,2) --> expand_dimension(axis=-1)--> ((44100,2),1)

Keras-Code, der die Beispiele unterstützt

from keras import Input, Conv1D, Conv2D, Conv3D
#1D
in_ = Input(shape=(44100,2))
layer = Conv1D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))

#2D
in_ = Input(shape=(32,32,3))
layer = Conv2D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))

#3D
in_ = Input(shape=(32,32,3,24))
layer = Conv3D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))

8

Conv1D wird für Eingangssignale verwendet, die der Stimme ähnlich sind. Indem Sie sie verwenden, können Sie Muster über das Signal finden. Zum Beispiel haben Sie ein Sprachsignal und eine Faltungsschicht. Jede Faltung durchläuft die Stimme, um durch Verwendung einer Kostenfunktion sinnvolle Muster zu finden.

Conv2D wird für Bilder verwendet. Dieser Anwendungsfall ist sehr beliebt. Das für diese Schicht verwendete Faltungsverfahren ist die sogenannte Faltung über das Volumen . Dies bedeutet, dass Sie ein zweidimensionales Bild haben, das mehrere Kanäle enthält, beispielsweise RGB. In diesem Fall sollte jedes Faltungsfilter ein dreidimensionales Filter sein, das gefaltet und tatsächlich mit dem Bild kreuzkorreliert werden soll, um geeignete Muster über das Bild zu finden.

3D.

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.