Изменения

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

Задача трансляции изображений

4897 байт добавлено, 22:52, 21 января 2021
Нет описания правки
[[File:Face_pix2pixhd.gif|600px|center|thumb|Рис. 12. Пример работы Pix2PixHD {{---}} label-to-face. <ref name="Pix2PixHD">[https://github.com/NVIDIA/pix2pixHD Pix2PixHD {{---}} GitHub]</ref>]]
 
== CycleGAN ==
Нейронная сеть, в отличии от Pix2Pix позволяет реализовать решение задачи обучения на независимых множествах. Обычно применяются для задач изменения стиля фотографий.
[[File:CycleGAN Arxitecture.jpeg|400px|right|thumb|Рис. 13. Алгоритм CycleGAN <ref name="Алгоритм CycleGAN">[https://habr.com/ru/post/479218/ Алгоритм CycleGAN]</ref>]]
=== Архитектура ===
'''CycleGAN'''<ref name=" Cycle-Consistent Adversarial Networks">[https://arxiv.org/abs/1703.10593 Cycle-Consistent Adversarial Networks]</ref> реализует архитектуру согласованных с циклом состязательных сетей (англ. ''Cycle-Consistent Adversarial Networks''), суть которой состоит в решении проблемы отсутствия парного набора данных.
 
'''В Архитектуре''' присутствуют 2 генератора и 2 дискриминатора которые выполняют различные задачи:
*Генератор <math>G_{X to Y}</math> учится преобразовывать исходное изображение <math>X</math> в выходное изображение <math>Y</math>
*Генератор <math>G_{Y to X}</math> учится преобразовывать выходное изображение <math>Y</math> в исходное изображение <math>X</math>
*Дискриминатор <math>Dx</math> учится различать изображение <math>X</math> и сгенерированное изображение <math>X ( G_{Y to X}(Y) )</math>.
*Дискриминатор <math>Dy</math> учится различать изображение <math>Y</math> и сгенерированное изображение <math>Y ( G_{X to Y}(X) )</math>.
 
'''Сеть''' предоставляет подход перевода изображение из исходного домена <math>X</math> в целевой домен <math>Y</math> при отсутствии парных примеров. Цель задачи в изучении отображения <math>G: X → Y </math>, так, чтобы распределение изображений <math>G_{X to Y}(X)</math> было неотличимо от распределения <math>G_{Y to X}(Y)</math> с учетом состязательной потери'''(aнгл. Сonsistency loss)'''.
Так же что бы избежать режима коллапса<ref name="Mode Collapse">[https://arxiv.org/abs/1705.07761 Mode Collapse]</ref>(англ. ''Mode collapse''), следует проверить отображение <math>G : Y → X </math>, который пытается сопоставить <math>Y</math> и <math>X</math>.
 
Другими словами для выполнения успешного преобразования должно выполниться следующее условие <math>G_{Y to X}(G_{X to Y}(X)) \sim x + Loss_{full}. </math>
 
Структура дискриминатора и генератора аналогичны тем, которые используются в Pix2Pix.
 
==== Функция потери ====
'''Функция потери'''<ref name="Cyclic_loss">[https://towardsdatascience.com/a-gentle-introduction-to-cycle-consistent-adversarial-networks-6731c8424a87 Cyclic_loss]</ref> должна быть выполнена таким образом что бы
все отображения должны быть противоположными друг другу и взаимно однозначными.
 
Она состоит из потери согласованности цикла (англ. ''Cycle Consistency Loss'') и состязательной потери(англ. ''adversarial loss'').
 
<tex>Loss_{adv}(G,Dy,X) = \frac{1}{m}(\sum_{i=1}^m(1 -D_{y}(G_{xi})))*2</tex>
 
<tex>Loss_{adv}(F,Dx,Y) = \frac{1}{m}(\sum_{i=1}^m(1 -D_{x}(F_{yi}))*2</tex>
 
<tex>Loss_{cyc}(G,F,X,Y) = \frac{1}{m}\sum_{i=1}^m(F(G(xi) - xi) + (G(F(yi)) - yi))</tex>
 
<tex>Loss_{full} = Loss_{adv} + \lambda * Loss_{cyc}</tex>,
 
где <tex>\lambda</tex> - гиперпараметр для уравнения потери согласованности цикла
 
 
[[File:Doge starrynight.jpg|700px|center|thumb|Рис. 14. Пример работы CycleGAN <ref name="how CycleGAN works">[https://towardsdatascience.com/cyclegan-how-machine-learning-learns-unpaired-image-to-image-translation-3fa8d9a6aa1d Пример работы CycleGAN]</ref>]]
[[File:Comics.png|700px|center|thumb|Рис. 15. Пример работы CycleGAN <ref name="Алгоритм CycleGAN"></ref>]]
== См. также ==
13
правок

Навигация