Изменения

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

PixelRNN и PixelCNN

2000 байт добавлено, 20:41, 3 января 2021
Сравнение подходов
== Архитектура ==
В алгоритмах ''PixelRNN'' и ''PixelCNN'' используются несколько архитектурных трюков, позволяющих производить вычисления быстро и надежно.
 
[[File:0_UbiGmm8uyZ-GKhv5_.jpg|350px|thumb|Рисунок 4. MaskA и MaskB.]]
=== Маскированные сверточные слои ===
'''''MaskA''''' используется для того, чтобы учитывать контекст предыдущих каналов, но при этом не учитывать контекст от предыдущих значений текущего канала и следующих каналов.
'''''MaskB''''' выполняет ту же функцию, что и '''''MaskA''''', но при этом учитывает контекст от предыдущих значений текущего канала.
 
[[File:0_UbiGmm8uyZ-GKhv5_.jpg|350px|thumb|Рисунок 4. MaskA и MaskB.]]
=== Уменьшение размерности ===
[[File:pixel-4.png|350px320px|thumb|Рисунок 5. Блоки уменьшения размерности. Слева {{---}} блок для ''PixelCNN'', справа {{---}} ''PixelRNN''. ]]
На вход в любой их указанных выше алгоритмов (''PixelCNN'', ''RowLSTM'', ''Diagonal BiLSTM'') подается большое количество объектов, поэтому внутри каждого из них сначала происходит уменьшение их количества в два раза, а затем обратное увеличение до исходного размера. Структура алгоритма с учетом уменьшения размерности показана на рисунке 4.
 
[[File:pixel-5.png|320px|thumb|Рисунок 6. Простой LSTM-блок с тремя вентилями: входным, выходным и забывания.]]
=== Внутреннее устройство LSTM ===
<tex>o_i</tex> {{---}} вектор выходного вентиля, кандидат на выход,
 
[[File:pixel-5.png|350px|thumb|Рисунок 6. Простой LSTM-блок с тремя вентилями: входным, выходным и забывания.]]
<tex>g_i</tex> {{---}} вектор вентиля данных,
# ''Softmax'' слой.
 
[[File:exampleCNN.png|450px|thumb|Рисунок 7. Лица, сгенерированные с помощью PixelCNN сетей <ref name=NaturalModeling>[https://arxiv.org/pdf/1612.08185v4.pdf#page=8 Natural Modeling]</ref>]]
=== Архитектура PixelCNN ===
# ''MaskA'' размером <tex>7\times 7</tex>.
== Сравнение подходов ==
[[File:exampleGAN.png|450px|thumb|Рисунок 8. Лица, сгенерированные с помощью GAN <ref name=ForwardScience>[https://towardsdatascience.com/how-to-train-stylegan-to-generate-realistic-faces-d4afca48e705 Towards data science]</ref>]]
 
Если сравнивать [[Generative Adversarial Nets (GAN) | GAN]] с PixelCNN/PixelRNN, то можно отметить более хорошее качество получаемых изображений у генеративно-состязательного метода. Однако у метода GAN время обучения медленнее, чем у PixelCNN и PixelRNN. Для реализации GAN требуется найти равновесие Нэша, но в настоящее время нет алгоритма делающего это. Поэтому обучение GAN более нестабильное, если сравнивать с другими методами<ref name=Reg>[https://towardsdatascience.com/auto-regressive-generative-models-pixelrnn-pixelcnn-32d192911173 Auto-Regressive Generative Models]</ref>. В настоящее время многие мировые компании используют GAN для генерации изображений, например: [https://neurohive.io/ru/papers/pggan-progressivnaja-generativnaja-nejroset-ot-nvidia/ PGGAN] от ''Nvidia'', [https://bdol.github.io/exemplar_gans/ Exemplar GAN] от ''Facebook'' и другие.
 
{| class="wikitable"
! style="font-weight:bold;" | Критерий\название
! style="font-weight:bold;" | PixelRNN(Row LSTM)
! style="font-weight:bold;" | PixelRNN(Diagonal BiLSTM)
! style="font-weight:bold;" | GAN
|-
| Время обучения
| Быстрый
| Средний
| Медленный
| Медленный
|-
| Средне-низкое
| Средне-высокое
| Высокое
|}
* [https://github.com/tensorflow/magenta/blob/master/magenta/reviews/pixelrnn.md Pixel Recurrent Neural Networks]
* [http://bjlkeng.github.io/posts/pixelcnn/ PixelCNN]
* [https://arxiv.org/pdf/1612.08185v4.pdf#page=8 Natural Modeling]
* [https://towardsdatascience.com/how-to-train-stylegan-to-generate-realistic-faces-d4afca48e705 Towards data science]
[[Категория: Машинное обучение]]
[[Категория: Генерация объектов]]
101
правка

Навигация