5
правок
Изменения
Нет описания правки
=== Виды сверток ===
==== Расширенная свертка (Dilated convolution) ====
Похожа на пуллинг и свертку с шагом, но позволяет:
* Экспоненциально расширить рецептивное поле без потери качества изображения
* Получить большее рецептивное поле при тех же затратах на вычисления и память и сохраняя качество изображения
Формула отличается от классической только коэффициентом расширения l:
<tex>(F *_{l} k)(p) = \sum\limits_{s+lt=p}F(s)k(t)</tex>
Пример:
[[Файл:Dilated_convolution.png|border|50px|thumb|left|Расширенная свертка.]]
1-, 2- и 4-расширенные свертки с классическими ядрами 3x3, 5x5 и 9x9 соответственно. Красные точки обозначают ненулевые веса, остальные веса ядра равны нулю. Выделенные синие области обозначают рецептивные поля.
==== Частичная свертка (Partial convolution) ====
Частичная свертка позволяет решить две проблемы предыдущих подходов глубокого обучения:
# Предположение, что испорченные области имеют простую форму (прямоугольную)
# Заполнение испорченной области одним цветом и применение свертки ко всему изображению вне зависимости от того какие пиксели испорчены, а какие нет
Слой свертки состоит из:
X - значения пикселей
W - маска, указывающая на то какие пиксели испорчены
<tex>x' = \begin{cases} W^T(X\bigodot M)\frac{sum(1)}{sum(M)}+b, & \mbox{if } sum(M)>0 \\ 0, & \mbox{otherwise} \end{cases}</tex>
Поэлементное перемножение X и M позволяет получить результат, зависящий только от правильных пикселей, а sum(1)/sum(M) нормализует этот результат, так как количество правильных пикселей на каждом слое свертки различается.
Маска обновляется так:
<tex>m' = \begin{cases} 1, & \mbox{if } sum(M)>0 \\ 0, & \mbox{otherwise} \end{cases}</tex>
Если результат свертки зависел хоть от одного реального пикселя, то на следующем слое свертки результирующий пиксель не будет считаться испорченным. Таким образом с каждым слоем свертки маска заполняются пока не будет полностью заполнена единицами.
==== Стробированная свертка (Gated convolution) ====
Разделение пикселей только на правильные и испорченные не позволяет:
# контролировать восстановление изображения и вносить некоторую дополнительную информацию
# сохранить информацию об испорченной области, так как постепенно все пиксели становятся правильными
Вместо жесткой маски, которая обновляется по некоторым правилам, стробированная свертка учится автоматически извлекать маску из данных:
<tex>\begin{array}{rcl} Gating_{y,x} & = & \sum \sum W_g \cdot I \\ Feature_{y,x} & = & \sum \sum W_f \cdot I \\ O_{y,x} & = & \phi (Feature_{y,x}) \bigodot \sigma (Gating_{y,x}) \end{array}</tex>
Данная свертка учится динамическому отбору признаков для каждого слоя изображения и каждой логической области маски, значительно улучшая однородность цвета и качество исправления испорченных областей различных форм.
=== Функции потерь ===