Транспонированные свертки - это революционная концепция для таких приложений, как сегментация изображений, сверхвысокое разрешение и т. Д., Но иногда ее становится немного сложнее понять. В этом посте я попытаюсь демистифицировать концепцию и упростить ее понимание.

Вступление

Computer Vision Domain переживает переходную фазу с момента завоевания популярности сверточных нейронных сетей (CNN). Революция началась с того, что Alexnet выиграл конкурс ImageNet в 2012 году, и с тех пор CNN управляют сферой классификации изображений, обнаружения объектов, сегментации изображений и многих других задач, связанных с изображениями / видео.

Операция свертки уменьшает пространственные размеры по мере того, как мы углубляемся в сеть и создает абстрактное представление входного изображения. Эта функция CNN очень полезна для таких задач, как классификация изображений, когда вам просто нужно предсказать, присутствует ли конкретный объект во входном изображении или нет. Но эта функция может вызвать проблемы для таких задач, как локализация объекта, сегментация, где пространственные размеры объекта в исходном изображении необходимы для прогнозирования выходной ограничительной рамки или сегментации объекта.

Чтобы решить эту проблему, используются различные методы, такие как полностью сверточные нейронные сети, в которых мы сохраняем входные размеры, используя «одинаковые» отступы. Хотя этот метод в значительной степени решает проблему, он также увеличивает стоимость вычислений, поскольку теперь операция свертки должна применяться к исходным входным измерениям по всей сети.

Другой подход, используемый для сегментации изображения, - это разделение сети на две части: сеть с пониженной дискретизацией и затем сеть с повышенной дискретизацией.
В сети с пониженной дискретизацией используются простые архитектуры CNN и создаются абстрактные представления входного изображения.
В сети повышающей дискретизации представления абстрактных изображений подвергаются повышающей дискретизации с использованием различных методов, чтобы сделать их пространственные размеры равными входному изображению. Такая архитектура известна как сеть кодировщика-декодера.

Методы передискретизации

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

Наиболее широко используемые методы повышения дискретизации в сетях кодировщик-декодер: :

  1. Ближайшие соседи: в разделе «Ближайшие соседи», как следует из названия, мы берем значение входного пикселя и копируем его в K-Nearest Neighbours, где K зависит от ожидаемого результата.

2. Билинейная интерполяция: при билинейной интерполяции мы берем 4 ближайших пикселя входного пикселя и выполняем средневзвешенное значение на основе расстояния до четырех ближайших ячеек, сглаживая выходные данные.

3. Bed Of Nails: В Bed of Nails мы копируем значение входного пикселя в соответствующую позицию выходного изображения и заполняем нулями оставшиеся позиции.

4. Max-Unpooling: уровень Max-Pooling в CNN принимает максимум среди всех значений в ядре. Чтобы выполнить max-unpooling, сначала индекс максимального значения сохраняется для каждого уровня max-pooling на этапе кодирования. Сохраненный индекс затем используется на этапе декодирования, где входной пиксель сопоставляется с сохраненным индексом, заполняя нулями везде.

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

Транспонированные свертки

Транспонированные свертки используются для повышения дискретизации входной карты функций до желаемой выходной карты функций с использованием некоторых обучаемых параметров.
Основная операция, выполняемая при транспонированной свертке, объясняется ниже:
1. Рассмотрим кодированную карту признаков 2x2, которую необходимо преобразовать в карту признаков 3x3.

2. Берем ядро ​​размером 2x2 с единичным шагом и нулевым отступом.

3. Теперь мы берем верхний левый элемент входной карты признаков и умножаем его на каждый элемент ядра, как показано на рисунке 10.

4. Аналогичным образом мы делаем это для всех остальных элементов входной карты функций, как показано на рисунке 11.

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

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

Транспонированная свертка также известна как деконволюция, что не подходит, поскольку деконволюция подразумевает удаление эффекта свертки, которого мы не стремимся достичь.

Он также известен как свертка с повышенной дискретизацией, которая интуитивно понятна для задачи, которую она использует для выполнения, то есть с повышением дискретизации входной карты функций.

Это также называется сверткой с дробным шагом из-за того, что шаг по выходу эквивалентен дробному шагу по входу. Например, шаг 2 по выходу равен 1/2 шага по входу.

Наконец, это также называется сверткой с обратным шагом, потому что прямой проход в транспонированной свертке эквивалентен обратному проходу нормальной свертки.

Проблемы с транспонированными свертками:

Транспонированные свертки страдают от эффекта клетчатой ​​доски, как показано ниже.

Основная причина этого - неравномерное перекрытие некоторых частей изображения, вызывающее артефакты. Это можно исправить или уменьшить, используя размер ядра, делимый на шаг, например, принимая размер ядра 2x2 или 4x4 при шаге 2.

Применение транспонированной свертки:

  1. Супер-разрешение:

2. Семантическая сегментация:

Вывод:

Транспонированные свертки являются основой современных алгоритмов сегментации и сверхвысокого разрешения. Они обеспечивают наилучшую и наиболее обобщенную передискретизацию абстрактных представлений. В этом посте мы изучили различные используемые методы повышения дискретизации, а затем попытались глубже погрузиться в интуитивное понимание транспонированных сверток.
Надеюсь, вам понравился пост, и если у вас есть какие-либо сомнения, вопросы или комментарии, пожалуйста, свяжитесь со мной в Twitter или Linkedin.

Ссылки:

  1. CS231n: сверточные нейронные сети для визуального распознавания

2. Транспонированные свертки объяснены с помощью… MS Excel!

3. Глубокое погружение в глубокое обучение