Детализация различных сверток в глубоком обучении (2)

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

Добавить Автора

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

В этой статье будут подробно описаны следующие концепции свертки:

  • 2D свертка
  • 3D свертка
  • 1*11*1свертка (1*11*1свертка)
  • Деконволюция (транспонированная свертка)
  • Дилатационная свертка / Атрусная свертка
  • Пространственно разделимая свертка
  • Разделимая по глубине свертка
  • Сплющенная свертка
  • Групповая свертка
  • Перемешанная сгруппированная свертка
  • Поточечная групповая свертка

5. Деконволюция (транспонированная свертка)

Для многих генеративных моделей (таких как генераторы в GAN, автоэнкодер, семантическая сегментация и т. д.). Обычно мы хотим сделать противоположное обычной свертке, то есть мы хотим выполнить повышающую дискретизацию, такую ​​как автоэнкодеры или семантическая сегментация. (Для семантической сегментации каждый пиксель исходного изображения классифицируется, сначала извлекая карту признаков с помощью кодировщика, а затем восстанавливая исходный размер изображения с помощью декодера.)

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

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

Мы можем реализовать транспонированную свёртку, используя обычную свёртку. Здесь мы используем простой пример для иллюстрации, входной слой2*22*2, сначала заполните значение Padding как2*22*2Нулевой отступ с единичным шагом, затем используйте шаг 13*33*3Ядро свертки выполняет операцию свертки для достижения повышения дискретизации, и размер выходных данных повышения дискретизации равен4*44*4.

Стоит отметить, что с различными размерами отступов и шагов мы можем комбинировать одни и те же2*22*2Входные карты для разных размеров изображения. Ниже транспонированная свертка применяется к тому же изображению.2*22*2на входе (с нулем, вставленным между входами и окруженным2*22*2нулевое заполнение единичного шага) применяется к3*33*3Ядро свертки , размер результата (то есть результат повышения дискретизации) равен5*55*5.

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

В свертке мы определяем это так: withCCпредставляет ядро ​​свертки,inputinputдля входного изображения,outputoutputдля выходного изображения. После свертки (умножения матриц) получимinputinputПонижение разрешения от большого изображения к маленькому.outputoutput. Эта реализация матричного умножения следуетC*input=outputC*input=output.

В следующем примере показано, как эта операция работает на компьютере. он сглаживает ввод (16*116*1) матрица и преобразовать ядро ​​свертки в разреженную матрицу (4*164*16). Затем используйте матричное умножение между разреженной матрицей и сглаженным входом. После этого полученная матрица (4*14*1) к2*22*2вывод.

​ На этом этапе, если ядро ​​свертки используется для соответствия транспонированию разреженной матрицыCTC^T(16*416*4), умноженное на сглаживание выхода (4*14*1) приводит к (16*116*1) и форма ввода (16*116*1)такой же.

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

Арифметическое объяснение транспонированной матрицы см.:АР Вест V.org/ABS/1603.07…

5.1 Артефакты шахматной доски

Сложное явление, наблюдаемое при использовании транспонированных сверток (особенно темных частей), - это «артефакты шахматной доски», называемые артефактами шахматной доски. Диаграмма ниже наглядно демонстрирует эффект шахматной доски (источник:distill.universal/2016/deco-женский…

Эта статья дает только краткое введение, пожалуйста, обратитесь к статье для получения подробной информации:Deconvolution and Checkerboard Artifacts

Эффект шахматной доски является результатом «неравномерного перекрытия» из-за транспонированной свертки. Делает определенные части изображения темнее других. Особенно когда размер ядра свертки (Kernel) не кратен шагу (Stride), деконволюция будет перекрываться неравномерно. Хотя в принципе сеть можно научить корректировать веса, чтобы избежать этого, на практике нейронным сетям трудно полностью избежать этого неравномерного перекрытия.

Ниже приведен подробный пример, демонстрирующий эффект шахматной доски более интуитивно. Верхняя часть рисунка ниже — это входной слой, а нижняя часть — выход транспонированной свертки. Результатом является транспонированная операция свертки, при которой входные данные небольшого размера сопоставляются с выходными данными большего размера (в размерах длины и ширины).

В (а) шаг равен 1, а ядро ​​свертки равно2*22*2. Как показано красным, первый пиксель ввода сопоставляется с первым и вторым пикселями вывода. Как и в случае с зеленой частью, второй пиксель ввода сопоставляется со вторым и третьим пикселями вывода. Затем второй пиксель на выходе получает информацию от первого и второго пикселей на входе. В целом, есть область перекрытия в информации, которую пиксели в средней части вывода получают от ввода. Когда размер ядра в примере (b) увеличивается до 3, центральная часть большей части информации, получаемой на выходе, сжимается. Но это не самая большая проблема, потому что перекрытие по-прежнему равномерное.

Если вы измените шаг на 2, в примере с размером ядра 2 все пиксели на выходе получат одинаковое количество информации на входе. Как видно из рисунка (а) ниже, в это время изображено перекрытие транспонированной свертки. Если размер ядра свертки изменить на 4 (рисунок (b) ниже), область равномерного перекрытия уменьшится, и в то же время, поскольку перекрытие является однородным, это все еще будет допустимым выходом. Но если размер ядра свертки изменить на 3, шаг равен 2 (ниже (c)), а если размер ядра свертки изменить на 5, шаг равен 2 (ниже (d)), возникает проблема. Для обоих случаев, когда каждый пиксель на выходе получает разное количество информации, чем соседние пиксели. На выходе не было обнаружено сплошных и равномерно перекрывающихся областей.

Эффект шахматной доски более серьезен в двумерном случае.На следующем рисунке наглядно показан эффект шахматной доски в двумерном пространстве.

5.1.1 Как избежать эффекта шахматной доски

  • Возьмите длину ядра свертки, которая делится на шаг

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

  • интерполяция

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

5.2 Расчет транспонированной свертки

Входной слой:Win*Hin*DinW_{in}*H_{in}*D_{in}

Гиперпараметры:

  • Количество фильтров:kk
  • Размер ядра свертки в фильтре:w*hw*h
  • Размер скользящего шага (Stride):ss
  • Прокладка:pp

выходной слой:Wout*Hout*DoutW_{out}*H_{out}*D_{out}

(Для упрощения вычислений пустьWin=Hin=inW_{in}=H_{in}=in, то помнитеWout=Hout=outW_{out}=H_{out}=out)

Отношение параметров между выходным слоем и входным слоем делится на два случая:

Дело 1:(in1)*s2p+k=out(in-1)*s-2p+k=out

{out=s*(in1)2p+k,Dout=k\begin{cases} out=s*(in-1)-2p+k, \\ D_{out} = k \end{cases}

Второй случай:(in1)*s2p+kout(in-1)*s-2p+k\not=out

{out=s(in1)2p+k+(out+2pk)%s,Dout=k\begin{cases} out=s(in-1)-2p+k+(out+2p-k)\%s, \\ D_{out} = k \end{cases}

Здесь, взяв в качестве примера классическую модель семантической сегментации изображения с полной сверточной сетью FCN-32s, вход транспонированной свертки с повышающей дискретизацией равен7*77*7, мы хотим восстановить исходный размер изображения после повышения частоты дискретизации224*224224*224,В формулу{out=s*(in1)2p+k,out=224,in=7\begin{cases} out=s*(in-1)-2p+k, \\ out=224,in=7\end{cases}получить оs,k,ps,k,pУравнение отношений между тремя:6s+k2p=2246s+k-2p=224. Наконец, путем эксперимента получается наиболее подходящий набор данных:s=16,k=64,p=32s=16,k=64,p=32.

6. Расширенная свертка (дырочная свертка)

Расширенная свертка представлена ​​​​этими двумя статьями:

Это стандартная дискретная свертка:

(F*k)(p)=s+t=pF(s)k(t)(F*k)(p)=\sum_{s+t=p}F(s)k(t)

Расширенная свертка выглядит следующим образом:

(F*lk)(p)=s+lt=pF(s)k(t)(F*_{l}k)(p) = \sum_{s+lt=p}F(s)k(t)

когдаl=1l=1При расширенная свертка становится стандартной сверток.

Интуитивно расширенная свертка создает ядро ​​свертки, вставляя пробелы между элементами ядра свертки.зыбь. новые добавленные параметрыllвыражатьскорость расширения, указывающий, насколько мы хотим «раздуть» ядро ​​свертки. Конкретная реализация будет отличаться, обычно вставка между элементами ядра сверткиl1l-1пространства. Следующие шоу соответственноl=1,2,4l=1,2,4Размер ядра свертки после расширения.на изображении,3*33*3Красные точки указывают на то, что исходный размер ядра свертки3*33*3.Хотя ядра всех трех расширенных извилин имеют одинаковый размер, рецептивные поля моделей сильно различаются.l=1l=1чувство дикости3*33*3,l=2l=2чувство дикости7*77*7.l=3l=3чувство дикости15*1515*15. Стоит отметить, что вышеописанные операциипараметры одинаковые. Расширенная свертка позволяет модели иметь большее рецептивное поле (поскольку размер ядра свертки остается неизменным) без увеличения вычислительных затрат.Это особенно эффективно, когда несколько расширенных извилин накладываются друг на друга.

Авторы статьи «Многомасштабная агрегация контекста с помощью расширенных сверток» строят сеть с несколькими расширенными сверточными слоями, где скорость расширения l увеличивается экспоненциально на каждом слое. Таким образом, размер наиболее эффективного рецептивного поля растет экспоненциально со слоями, в то время как количество параметров растет только линейно. ** Роль расширенных сверток в этой статье заключается в систематическом объединении контекстной информации в нескольких масштабах без потери разрешения. В этой статье показано, что предлагаемый модуль может повысить точность современных современных систем семантической сегментации на то время (2016 г.). См. этот документ для получения дополнительной информации.

6.1 Применение расширенных сверток

В основном обсуждают применение расширенной свертки в семантической сегментации.

один7*77*7Регуляризация сверточного слоя эквивалентна 33*33*3Суперпозиция сверточных слоев. Такой дизайн может не только значительно уменьшить количество параметров, но и ядро ​​свертки с его регулярной природой может легче изучить пространство признаков, которое можно сгенерировать и выразить. Эти характеристики также являются причиной того, что в большинстве сетей на основе глубокой свертки используются небольшие ядра свертки.

Но глубокие сверточные нейронные сети все же имеют фатальные недостатки для некоторых задач. Наиболее заметные из них (вызванные повышающей дискретизацией и объединением слоев):

  • Ядра повышающей дискретизации и слои пула необратимы.
  • Внутренняя структура данных потеряна, информация о выравнивании пространства потеряна
  • Потеря деталей (при условии, что имеется четыре объединяющих слоя, не более24=162^4=16Детали пикселей отбрасываются и не могут быть восстановлены. )

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

6.3 Проблемы с расширенными извилинами

  • ** Проблема 1: ** Эффекты сетки

    Предположим, мы просто наложили множественную свертку расширения3*33*3Если используется ядро ​​свертки, возникнет следующая проблема:

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

  • **Вопрос 2: ****Данная информация может не иметь значения.

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

Обработка задачи расширенной свертки здесь подробно описываться не будет.

6.4 Расчет расширенной свертки

Вставка между элементами ядра сверткиl1l-1космос как пример

Входной слой:Win*Hin*DinW_{in}*H_{in}*D_{in}

Гиперпараметры:

  • Скорость расширения:ll
  • Количество фильтров:kk
  • Размер ядра свертки в фильтре:w*hw*h
  • Размер скользящего шага (Stride):ss
  • Прокладка:pp

выходной слой:Wout*Hout*DoutW_{out}*H_{out}*D_{out}

Отношение параметров между выходным слоем и входным слоем:

{w0=(w1)*(l1)+w,h0=(h1)*(l1)+h,Wout=(Win+2pw0)/s+1,Hout=(Hin+2ph0)/s+1,Dout=k\begin{cases} w_0 = (w-1)*(l-1) + w,\\h_0 = (h-1)*(l-1) + h,\\W_{out} = (W_{in} +2p - w_0)/s + 1 ,\\ H_{out} = (H_{in} +2p - h_0)/s + 1, \\ D_{out} = k \end{cases}

Параметры:(w*h*Din+1)*k(w*h*D_{in} + 1)*k

использованная литература