Добавить Автора
В этой статье обобщены различные свертки, встречающиеся в глубоком обучении, с примерами, которые помогут вам глубже понять и построить сверточные нейронные сети.
В этой статье будут подробно описаны следующие концепции свертки:
- 2D свертка
- 3D свертка
- свертка (свертка)
- Деконволюция (транспонированная свертка)
- Дилатационная свертка / Атрусная свертка
- Пространственно разделимая свертка
- Разделимая по глубине свертка
- Сплющенная свертка
- Групповая свертка
- Перемешанная сгруппированная свертка
- Поточечная групповая свертка
5. Деконволюция (транспонированная свертка)
Для многих генеративных моделей (таких как генераторы в GAN, автоэнкодер, семантическая сегментация и т. д.). Обычно мы хотим сделать противоположное обычной свертке, то есть мы хотим выполнить повышающую дискретизацию, такую как автоэнкодеры или семантическая сегментация. (Для семантической сегментации каждый пиксель исходного изображения классифицируется, сначала извлекая карту признаков с помощью кодировщика, а затем восстанавливая исходный размер изображения с помощью декодера.)
Традиционный способ повысить дискретизацию — применить схему интерполяции или создать правила вручную. Современные архитектуры, такие как нейронные сети, как правило, позволяют сети обучаться соответствующим преобразованиям самостоятельно, без вмешательства человека. Для этого мы можем использовать транспонированную свертку.
Транспонированная свертка также известна в литературе какДеконволюция или свертка с дробным шагом. Однако необходимо указатьДеконволюцияНазвание не очень подходит, потому что транспонированная свертка не является истинной деконволюцией, как определено в поле обработки сигнала/изображения. Технически деконволюция при обработке сигналов является обратной операцией свертки. Но это не тот случай. Позже мы покажем, почему более естественно и уместно называть эту операцию транспонированной сверткой.
Мы можем реализовать транспонированную свёртку, используя обычную свёртку. Здесь мы используем простой пример для иллюстрации, входной слой, сначала заполните значение Padding какНулевой отступ с единичным шагом, затем используйте шаг 1Ядро свертки выполняет операцию свертки для достижения повышения дискретизации, и размер выходных данных повышения дискретизации равен.
Стоит отметить, что с различными размерами отступов и шагов мы можем комбинировать одни и те жеВходные карты для разных размеров изображения. Ниже транспонированная свертка применяется к тому же изображению.на входе (с нулем, вставленным между входами и окруженнымнулевое заполнение единичного шага) применяется кЯдро свертки , размер результата (то есть результат повышения дискретизации) равен.
Наблюдение за транспонированной сверткой в приведенном выше примере может помочь нам создать некоторое интуитивное понимание. Но для дальнейшего применения транспонированной свертки нам также потребуетсяКак реализовано умножение матриц в компьютере?. С точки зрения реализации мы можем понять, почему транспонированная свертка является наиболее подходящим названием.
В свертке мы определяем это так: withпредставляет ядро свертки,для входного изображения,для выходного изображения. После свертки (умножения матриц) получимПонижение разрешения от большого изображения к маленькому.. Эта реализация матричного умножения следует.
В следующем примере показано, как эта операция работает на компьютере. он сглаживает ввод () матрица и преобразовать ядро свертки в разреженную матрицу (). Затем используйте матричное умножение между разреженной матрицей и сглаженным входом. После этого полученная матрица () квывод.
На этом этапе, если ядро свертки используется для соответствия транспонированию разреженной матрицы(), умноженное на сглаживание выхода () приводит к () и форма ввода ()такой же.
Но стоит отметить, что две вышеуказанные операции необратимы.Для одного и того же ядра свертки (поскольку его разреженная матрица не является ортогональной матрицей) результат не может быть восстановлен до исходного значения после операции транспонирования, а только исходное значение сохраняется., поэтому название транспонированной свертки происходит от этого. И чтобы ответить на вопросы, упомянутые выше, транспонированная свертка точнее, чем «деконволюция».
Арифметическое объяснение транспонированной матрицы см.:АР Вест V.org/ABS/1603.07…
5.1 Артефакты шахматной доски
Сложное явление, наблюдаемое при использовании транспонированных сверток (особенно темных частей), - это «артефакты шахматной доски», называемые артефактами шахматной доски. Диаграмма ниже наглядно демонстрирует эффект шахматной доски (источник:distill.universal/2016/deco-женский…
Эта статья дает только краткое введение, пожалуйста, обратитесь к статье для получения подробной информации:Deconvolution and Checkerboard Artifacts
Эффект шахматной доски является результатом «неравномерного перекрытия» из-за транспонированной свертки. Делает определенные части изображения темнее других. Особенно когда размер ядра свертки (Kernel) не кратен шагу (Stride), деконволюция будет перекрываться неравномерно. Хотя в принципе сеть можно научить корректировать веса, чтобы избежать этого, на практике нейронным сетям трудно полностью избежать этого неравномерного перекрытия.
Ниже приведен подробный пример, демонстрирующий эффект шахматной доски более интуитивно. Верхняя часть рисунка ниже — это входной слой, а нижняя часть — выход транспонированной свертки. Результатом является транспонированная операция свертки, при которой входные данные небольшого размера сопоставляются с выходными данными большего размера (в размерах длины и ширины).
В (а) шаг равен 1, а ядро свертки равно. Как показано красным, первый пиксель ввода сопоставляется с первым и вторым пикселями вывода. Как и в случае с зеленой частью, второй пиксель ввода сопоставляется со вторым и третьим пикселями вывода. Затем второй пиксель на выходе получает информацию от первого и второго пикселей на входе. В целом, есть область перекрытия в информации, которую пиксели в средней части вывода получают от ввода. Когда размер ядра в примере (b) увеличивается до 3, центральная часть большей части информации, получаемой на выходе, сжимается. Но это не самая большая проблема, потому что перекрытие по-прежнему равномерное.
Если вы измените шаг на 2, в примере с размером ядра 2 все пиксели на выходе получат одинаковое количество информации на входе. Как видно из рисунка (а) ниже, в это время изображено перекрытие транспонированной свертки. Если размер ядра свертки изменить на 4 (рисунок (b) ниже), область равномерного перекрытия уменьшится, и в то же время, поскольку перекрытие является однородным, это все еще будет допустимым выходом. Но если размер ядра свертки изменить на 3, шаг равен 2 (ниже (c)), а если размер ядра свертки изменить на 5, шаг равен 2 (ниже (d)), возникает проблема. Для обоих случаев, когда каждый пиксель на выходе получает разное количество информации, чем соседние пиксели. На выходе не было обнаружено сплошных и равномерно перекрывающихся областей.
Эффект шахматной доски более серьезен в двумерном случае.На следующем рисунке наглядно показан эффект шахматной доски в двумерном пространстве.
5.1.1 Как избежать эффекта шахматной доски
-
Возьмите длину ядра свертки, которая делится на шаг
Этот метод хорошо справляется с проблемой эффекта шахматной доски, но он все еще не является удовлетворительным, потому что, как только наше ядро свертки обучается неравномерно, эффект шахматной доски все равно будет иметь место (как показано на рисунке ниже).
-
интерполяция
Операция интерполяции изменений может быть выполнена напрямую, а затем выполняется операция свертки. Этот метод относительно распространен в документах, связанных с разрешением. Например, мы можем использовать общую графику обычно используемую билинейную интерполяцию и ближайшую соседнюю интерполяцию и интерполяцию сплайнов для повышения квалификации.
5.2 Расчет транспонированной свертки
Входной слой:
Гиперпараметры:
- Количество фильтров:
- Размер ядра свертки в фильтре:
- Размер скользящего шага (Stride):
- Прокладка:
выходной слой:
(Для упрощения вычислений пусть, то помните)
Отношение параметров между выходным слоем и входным слоем делится на два случая:
Дело 1:
Второй случай:
Здесь, взяв в качестве примера классическую модель семантической сегментации изображения с полной сверточной сетью FCN-32s, вход транспонированной свертки с повышающей дискретизацией равен, мы хотим восстановить исходный размер изображения после повышения частоты дискретизации,В формулуполучить оУравнение отношений между тремя:. Наконец, путем эксперимента получается наиболее подходящий набор данных:.
6. Расширенная свертка (дырочная свертка)
Расширенная свертка представлена этими двумя статьями:
Это стандартная дискретная свертка:
Расширенная свертка выглядит следующим образом:
когдаПри расширенная свертка становится стандартной сверток.
Интуитивно расширенная свертка создает ядро свертки, вставляя пробелы между элементами ядра свертки.зыбь. новые добавленные параметрывыражатьскорость расширения, указывающий, насколько мы хотим «раздуть» ядро свертки. Конкретная реализация будет отличаться, обычно вставка между элементами ядра сверткипространства. Следующие шоу соответственноРазмер ядра свертки после расширения.на изображении,Красные точки указывают на то, что исходный размер ядра свертки.Хотя ядра всех трех расширенных извилин имеют одинаковый размер, рецептивные поля моделей сильно различаются.чувство дикости,чувство дикости.чувство дикости. Стоит отметить, что вышеописанные операциипараметры одинаковые. Расширенная свертка позволяет модели иметь большее рецептивное поле (поскольку размер ядра свертки остается неизменным) без увеличения вычислительных затрат.Это особенно эффективно, когда несколько расширенных извилин накладываются друг на друга.
Авторы статьи «Многомасштабная агрегация контекста с помощью расширенных сверток» строят сеть с несколькими расширенными сверточными слоями, где скорость расширения l увеличивается экспоненциально на каждом слое. Таким образом, размер наиболее эффективного рецептивного поля растет экспоненциально со слоями, в то время как количество параметров растет только линейно. ** Роль расширенных сверток в этой статье заключается в систематическом объединении контекстной информации в нескольких масштабах без потери разрешения. В этой статье показано, что предлагаемый модуль может повысить точность современных современных систем семантической сегментации на то время (2016 г.). См. этот документ для получения дополнительной информации.
6.1 Применение расширенных сверток
В основном обсуждают применение расширенной свертки в семантической сегментации.
одинРегуляризация сверточного слоя эквивалентна 3Суперпозиция сверточных слоев. Такой дизайн может не только значительно уменьшить количество параметров, но и ядро свертки с его регулярной природой может легче изучить пространство признаков, которое можно сгенерировать и выразить. Эти характеристики также являются причиной того, что в большинстве сетей на основе глубокой свертки используются небольшие ядра свертки.
Но глубокие сверточные нейронные сети все же имеют фатальные недостатки для некоторых задач. Наиболее заметные из них (вызванные повышающей дискретизацией и объединением слоев):
- Ядра повышающей дискретизации и слои пула необратимы.
- Внутренняя структура данных потеряна, информация о выравнивании пространства потеряна
- Потеря деталей (при условии, что имеется четыре объединяющих слоя, не болееДетали пикселей отбрасываются и не могут быть восстановлены. )
При наличии таких проблем узким местом всегда была проблема семантической сегментации, и точность не может быть значительно улучшена, а концепция расширенной свертки позволяет избежать вышеуказанных проблем.
6.3 Проблемы с расширенными извилинами
-
** Проблема 1: ** Эффекты сетки
Предположим, мы просто наложили множественную свертку расширенияЕсли используется ядро свертки, возникнет следующая проблема:
Мы обнаружили, что ядро свертки не является непрерывным, то есть не все пиксели используются для расчета.Из-за непрерывного характера информации, такой как изображения, это фатально для задачи плотного предсказания на уровне пикселей.
-
**Вопрос 2: ****Данная информация может не иметь значения.
Из предыстории дизайна расширенной свертки можно сделать вывод, что этот дизайн используется для получения информации дальнего действия. Однако информация о свете с большей скоростью расширения может быть эффективна только для некоторых крупных объектов и может оказывать негативное влияние на мелкие объекты. Как иметь дело с отношениями между объектами разных размеров одновременно (зернистость рецептивного поля) является ключом к разработке хорошей расширенной сверточной сети.
Обработка задачи расширенной свертки здесь подробно описываться не будет.
6.4 Расчет расширенной свертки
Вставка между элементами ядра сверткикосмос как пример
Входной слой:
Гиперпараметры:
- Скорость расширения:
- Количество фильтров:
- Размер ядра свертки в фильтре:
- Размер скользящего шага (Stride):
- Прокладка:
выходной слой:
Отношение параметров между выходным слоем и входным слоем:
Параметры:
использованная литература
- A Comprehensive Introduction to Different Types of Convolutions in Deep Learning | by Kunlun Bai | Towards Data Science
- Convolutional neural network - Wikipedia
- Convolution - Wikipedia
- Одна статья для понимания ядра свертки 1x1 в сверточной нейронной сети — Zhihu (zhihu.com)
- [1312.4400] Network In Network (arxiv.org)
- Начальная сетевая модель - Ah Shun - Blog Park (cnblogs.com)
- Блог ResNet Analysis_lanran2 — Блог CSDN
- Эта статья поможет вам понять различные извилины в глубоком обучении (часть 1) | Сердце машины (jiqizhixin.com)
- Эта статья поможет вам понять различные извилины в глубоком обучении (ниже).
- Компьютерное зрение | Эффект шахматной доски
- Ууху. Call.com/question/54…
- Intuitively Understanding Convolutions for Deep Learning | by Irhum Shafkat | Towards Data Science
- An Introduction to different Types of Convolutions in Deep Learning
- Обзор: DilatedNet — расширенная свертка (семантическая сегментация)
- ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
- Сепарабельные свертки «Основное введение в разделимые свертки
- Начальная сеть «Простое руководство по версиям исходной сети»
- A Tutorial on Filter Groups (Grouped Convolution)
- Convolution arithmetic animation
- Up-sampling with Transposed Convolution
- Intuitively Understanding Convolutions for Deep Learning