Изменения

Перейти к: навигация, поиск

PixelRNN и PixelCNN

147 байт добавлено, 14:24, 25 марта 2020
Архитектура: - изменение начертания английских терминов
== Архитектура ==
В алгоритмах ''PixelRNN/'' и ''PixelCNN '' используются множество несколько архитектурных трюков, позволяющих сделать производить вычисления быстрыми и надежными.
=== Маскированные сверточные слои ===
В описаниях алгоритмов фигурируют два типа маскированных сверточных слоя - '''''MaskA''''', '''''MaskB'''''. Они необходимы для сокрытия от алгоритма лишней информации и учета контекста - чтобы не обрабатывать изображение после каждого подсчета, удаляя значения пикселей, можно применить маску к изображению, что является более быстрой операцией.
Для каждого пикселя в цветном изображении в порядке очереди существуют 3 контекста: красный канал, зеленый и синий. В данном алгоритме очередь важна, т.е. если сейчас обрабатывается красный канал, то контекст только от предыдущих значений красного канала, если зеленый - то от всех значений на красном канале и предыдущих значениях на зеленом и т.д.
'''''MaskA''''' используется для того, чтобы учитывать контекст предыдущих каналов, но при этом не учитывать контекст от предыдущих значений текущего канала и следующих каналов. '''''MaskB''''' выполняет ту же функцию, что и '''''MaskA''''', но при этом учитывает контекст от предыдущих значений текущего канала.
=== Уменьшение размерности ===
[[File:pixel-4.png|350px|thumb|Рисунок 4. Блоки уменьшения размерности. Слева - блок для ''PixelCNN'', справа - ''PixelRNN''. ]]На вход в любой их указанных выше алгоритмов (''PixelCNN'', Row LSTM''RowLSTM'', ''Diagonal BiLSTM'') подается большое количество объектов. Поэтому внутри каждого из них сначала происходит уменьшение их количества в 2 раза, а затем обратное увеличение в 2 раза. Структура алгоритма с учетом уменьшения размерности показана на рисунке 4.
=== Внутреннее устройства LSTM ===
Модификация Row LSTM, ''RowLSTM'' и ''Diagonal BiLSTM '' одинакова с архитектурной точки зрения. Отличия ''Diagonal BiLSTM '' только в том, что добавляется операция сдвига в начале и возврат к исходной структуре изображения в конце.
Структура ''LSTM '' блока: 1. ''MaskB '' слой ''input-to-state '' <tex>K_{is}</tex> учитывает контекст из входа. 2. Сверточный слой ''state-to-state '' <tex>K_{ss}</tex> учитывает контекст из предыдущих скрытых слоев.
Используя эти два сверточных слоя формально вычисление ''LSTM '' блока можно записать следующим образом:
<tex>
=== Архитектура PixelRNN ===
# ''MaskA '' размером <tex>7\times 7</tex> # Блоки уменьшения размеренности с Row LSTM ''RowLSTM'' блоком, в котором <tex>K_{is}</tex> имеет размер <tex>3\times 1</tex>, <tex>K_{ss}</tex> - <tex>3\times 2</tex>. Для ''Diagonal BiLSTM '' <tex>K_{is}</tex> имеет размер <tex>1\times 1</tex>, <tex>K_{ss}</tex> - <tex>1\times 2</tex>. Количество блоков варьируется. # ''ReLU '' активация
# Сверточный слой размером <tex>1\times 1</tex>
# ''Softmax '' слой
=== Архитектура PixelCNN ===
# ''MaskA '' размером <tex>7\times 7</tex> # Блоки уменьшения размеренности для ''PixelCNN''. # ''ReLU '' активация
# Сверточный слой размером <tex>1\times 1</tex>
# ''Softmax '' слой
== Сравнение подходов ==
39
правок

Навигация