Начало работы: обзор сверточных структур в глубоком обучении

искусственный интеллект глубокое обучение Нейронные сети Medium

В этой статье представлены три различных свертки и объясняются их преимущества.Для начинающих это хорошая статья, чтобы понять свертки.

свертка

Во-первых, нам нужно определить несколько параметров сверточного слоя.
ядро равно 3, шаг равен 1, двумерная свертка с дополнением
  • Размер ядра свертки: Ядро свертки определяет поле зрения свертки. Обычное ядро ​​свертки для двумерных сверток равно 3, что составляет 3x3 пикселя.
  • шаг: шаг определяет размер шага ядра свертки при обходе изображения. Значение по умолчанию обычно равно 1, мы можем установить шаг равным 2, чтобы уменьшить разрешение изображения, например максимальное объединение.
  • Заполнение: заполнение определяет границы при обработке сэмплов. (Половина) дополненная свертка делает выходное пространственное измерение равным входному, в то время как незаполненная свертка обрезает часть границы, если ядро ​​​​больше 1.
  • Входные и выходные каналы. Сверточные слои обычно требуют определенного количества входных каналов (I) и вычисляют определенное количество выходных каналов (O). Необходимые параметры можно рассчитать по IOK, где K — значение ядра свертки.
Сердце машины представило различные свертки, используемые в семантической сегментации:От полносвязных слоев до больших ядер свертки: подробное руководство по семантической сегментации глубокого обучения

Расширенная извилина (атральная извилина)

2D-свертка с ядром 3, коэффициентом расширения 2 и без заполнения

Расширенная свертка вводит еще один параметр «скорость расширения» в сверточный слой. Он определяет пространство между значениями в ядре свертки. Ядро свертки 3x3, поле зрения свертки со степенью расширения 2 и ядро ​​свертки 5x5 имеют одинаковое поле зрения, и первое использует только 9 параметров. Представьте ядро ​​свертки 5x5, в каждом из которых отсутствует вторая строка и второй столбец.
Эта свертка создает большее поле зрения с теми же вычислительными затратами. Расширенные свертки особенно популярны в области сегментации в реальном времени. Если вам нужно широкое поле зрения, но вы не можете позволить себе использовать несколько сверток или более крупные ядра свертки, вы можете использовать этот тип свертки.

Транспонированная свертка (деконволюция или микрошаговая свертка)

Термин деконволюция не подходит, потому что это не деконволюция. Деконволюция существует, но не очень распространена в области глубокого обучения. Истинная деконволюция — это инверсия процесса свертки. Представьте, что изображение загружается в один сверточный слой. Затем вывод помещается в черный ящик, и снова выводится исходное входное изображение. Этот черный ящик называется деконволюцией. Это математическая обратная операция, выполняемая сверточным слоем.
Транспонированная свертка чем-то похожа на деконволюцию в том смысле, что выходные данные слоя деконволюции с пространственным разрешением также могут быть выведены. Однако фактическая математика, которая выполняется для этих значений, отличается. Транспонированный сверточный слой использует обычные свертки, но по-прежнему способен к преобразованию пространственного разрешения.
2D-свертка без заполнения, шаг 2 и ядро ​​3

Здесь вы можете немного запутаться, поэтому давайте рассмотрим конкретный пример. Изображение 5x5 подается в сверточный слой с шагом, установленным на 2, без заполнения и ядром свертки 3x3. На выходе получается изображение 2x2.
Если бы мы хотели обратить процесс вспять, нам нужно было бы выполнить обратную математику, чтобы каждый введенный пиксель генерировал 9 значений. После этого мы перебираем выходное изображение с шагом 2. Это деконволюция.
Транспонированная 2D-свертка без заполнения, шаг 2, ядро ​​3

Транспонированная свертка этого не делает. Единственное, что у них общего, это то, что на выходе получается изображение 5x5, хотя оно по-прежнему выполняет обычную операцию свертки. Чтобы сделать это, нам нужно выполнить какое-то заполнение на входе.
Как вы понимаете, этот шаг не меняет направление потока сверху, по крайней мере, численно.
Он просто восстанавливает пространственное разрешение спереди и завершает свертку. Это может не быть математическим обращением, но все же очень полезно для архитектур кодер-декодер. Таким образом, вместо выполнения двух отдельных процессов, мы можем объединить свертку и масштабирование изображения.

отделимая свертка

В разделимой свертке мы можем разделить операцию ядра на несколько шагов. Например, мы можем выразить свертку как y = conv(x, k), где y — выходное изображение, x — входное изображение, а k — ядро ​​свертки. Ниже предположим, что k вычисляется как k = k1.dot(k2). Это делает свертки отделимыми, потому что вместо двумерной свертки с k мы получаем тот же результат, выполняя две одномерные свертки с k1 и k2.

Фильтры Sobel X и Y

Возьмем, к примеру, ядро ​​Собеля, которое часто используется при обработке изображений. Вы можете получить такое же ядро, умножив транспонированные векторы векторов [1, 0, -1] и [1,2,1]. Это требует всего 6 аргументов вместо 9 при выполнении того же самого.
В приведенном выше примере показана пространственно разделимая свертка, которая, насколько мне известно, не используется в глубоком обучении. Я просто хочу, чтобы люди не путались, когда видят этот термин. В нейронных сетях мы обычно используем свертку с разделением по глубине.
Эта свертка будет выполнять пространственную свертку, сохраняя каналы разделенными, после чего следует свертка по глубине. Для простоты понимания рассмотрим пример.
Предположим, у нас есть сверточный слой 3x3 с 16 входными каналами и 32 выходными каналами. Через каждый входной канал проходят 32 ядра 3x3, в результате получается 512 (16x32) карт признаков. Затем мы объединяемся, чтобы сформировать карту объектов, складывая карты объектов в каждом входном канале. Так как мы сделали это 32 раза, мы получили 32 желаемых выходных канала.
Для отделимых по глубине сверток на одном и том же экземпляре мы проходим 16 каналов (каждый с ядром 3x3), в результате чего получается 16 карт признаков. Теперь, перед слиянием, мы перебираем эти 16 карт признаков (каждая с 32 свертками 1x1), а затем складываем их вместе. Это дает 656 (16x3x3 + 16x32x1x1) параметров по сравнению с 4608 (16x32x3x3) параметрами выше.
Этот экземпляр представляет собой конкретную реализацию свертки с разделением по глубине с множителем глубины, равным 1, что на сегодняшний день является наиболее распространенной настройкой для этого типа сверточного слоя.
Мы делаем это, потому что предполагается, что пространственная информация и информация о глубине могут быть разделены. Глядя на производительность модели Xception, кажется, что теория верна. Благодаря эффективному использованию параметров свертки с разделением по глубине также можно использовать на мобильных устройствах.


Оригинальный адрес:


выбран изMedium
автор:Paul-Louis Prove
Сборник "Сердце машины"
принимать участие:Лу Сюэ, Ли Ячжоу

Эта статья составлена ​​для ядра машины, пожалуйста, свяжитесь с этой общедоступной учетной записью для разрешения на перепечатку.