Каковы различия между Convolutional1D, Convolutional2D и Convolutional3D?


10

Я узнал о сверточных нейронных сетях. При рассмотрении Kerasпримеров я натолкнулся на три различных метода свертки. А именно, 1D, 2D & 3D. Каковы различия между этими тремя слоями? Каковы их варианты использования? Есть ли ссылки или ссылки, чтобы показать их варианты использования?

Ответы:


5

Разница лишь в размерности входного пространства. Вход для сверточного слоя имеет следующую форму:

input_shape = (batch_size, input_dims, channel)

  • Форма ввода для conv1D : (batch_size, W, каналы)

    Пример: 1-секундный стереофонический голосовой сигнал, дискретизированный с частотой 44100 Гц, форма: (batch_size, 44100,2)

  • Форма ввода для conv2D : (batch_size, (H, W), каналы)

    Пример: изображение RGB 32x32, форма: (batch_size, 32,32,3)

  • Форма ввода для conv3D : (batch_size, (H, w, D), каналы)

    Пример (более хитрый): 1-секундное видео с изображениями RGB 32x32 при 24 кадрах в секунду, форма: (batch_size, 32,32,3,24)

Что за канал?

Главное - подумать о том, что канал означает для наших входных данных. Сверточный слой применяет разные фильтры для каждого канала, таким образом, весовые значения сверточного слоя имеют следующую форму:

(kernel_size,num_channels,num_filter_per_channels)

Пример:

Сверточный слой с 12 фильтрами и квадратной матрицей размером 3. Этот слой будет применять 12 различных фильтров для каждого канала. В приведенных ранее примерах:

  • 1 секунда стереофонического речевого сигнала с частотой дискретизации 44100 Гц, kernel_size = 3

    12 х 2 = 24 одномерных фильтра, 12 фильтров для каждого канала

     Weigths shape: (3, 2, 12)
  • 32x32 RGB-изображение, kernel_size = (3,3)

    12 х 3 = 36 двумерных фильтров, 12 фильтров для каждого канала

    Weights shape: (3, 3, 3, 12)
  • 1 секунда видеоизображений 32x32 RGB со скоростью 24 кадра в секунду, размер ядра = (3,3,3)

    24 х 12 = 288 трехмерных фильтров, 12 фильтров для каждого канала

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

Таким образом, очень важно решить, что означает канал, так как каждый канал имеет свой собственный набор фильтров. Для первых примеров кажется простым принять решение о том, что стереофонические сигналы и изображения RGB - это разные каналы ... они обычно так и называются (стереоканалы, каналы RGB). В примере с видео это более неоднозначно ... Установка видео в качестве 3D-входа с временным измерением в качестве канала может быть не лучшим вариантом, поскольку в этом случае порядок появления временных кадров не имеет значения (выходные данные для фильтры каждого канала суммируются), что приводит к потере внутренней временной динамики входных данных. Одним из лучших подходов (в зависимости от приложения) является обработка изображений RGB с двумерными свертками в рекуррентной нейронной сети. То же самое происходит с голосовым сигналом,

Важно отметить, что сигнал с входным измерением D можно рассматривать как сигнал измерения D + 1 с одним каналом, но результирующее пространство признаков может быть менее представительным / полезным :

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

Код Keras, поддерживающий примеры

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 используется для входных сигналов, которые похожи на голос. Используя их, вы можете найти шаблоны поперек сигнала. Например, у вас есть голосовой сигнал, и у вас есть сверточный слой. Каждая свертка пересекает голос, чтобы найти значимые закономерности, используя функцию стоимости.

Conv2D используется для изображений. Этот вариант использования очень популярен. Метод свертки, используемый для этого слоя, называется так называемой сверткой по объему . Это означает, что у вас есть двумерное изображение, которое содержит несколько каналов, например, RGB. В этом случае каждый сверточный фильтр должен быть трехмерным фильтром, который должен быть свернут, фактически взаимно коррелирован, с изображением, чтобы найти соответствующие шаблоны по всему изображению.

3D

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.