13
правок
Изменения
пишу про CycleGAN
В одном случае, у нас есть четкое представление результата, который должен получиться, а в другом случае, его нет, но есть множество, определяющее стиль желаемого результата (Рис. 2).
[[File:Paired_vs_unpaired_training_data.png|400px|right|thumb|Рис. 2. Виды тренировочных данных для трансляции изображений.<ref name="towardsdatascience2">[https://towardsdatascience.com/cyclegan-how-machine-learning-learns-unpaired-image-to-image-translation-3fa8d9a6aa1d CycleGAN {{---}} Towardsdatascience]</ref>]]
=== Обучение на парах изображений ===
=== Архитектура ===
[[File:Training_CGAN_pix2pix.png|400px|right|thumb|Рис. 5. Пример процесса обучения генератора и дискриминатора для Pix2Pix.<ref name="towardsdatascience">[https://towardsdatascience.com/pix2pix-869c17900998 Pix2Pix {{---}} Towardsdatascience]</ref>]]
Pix2Pix реализует архитектуру [[Generative Adversarial Nets (GAN)#CGAN_.28Conditional_Generative_Adversarial_Nets.29| условных порождающих состязательных сетей ]](англ. CGAN), где для генератора взята архитектура, основанная на U-Net<ref name="unet">[https://sci-hub.do/10.1007/978-3-319-24574-4_28 U-Net: Convolutional Networks for Biomedical Image Segmentation]</ref>, а для дискриминатора используется сверточный классификатор PatchGAN<ref name="patch">[https://sci-hub.do/10.1007/978-3-319-46487-9_43 Precomputed Real-Time Texture Synthesis with Markovian Generative Adversarial Networks]</ref>, который штрафует алгоритм на уровне участков изображения.
==== Генератор ====
[[File:UNet_generator_pix2pixU-Net-Generator-Model.png|400px|right|thumb|Рис. 6. Архитектура Pix2Pix генератора.<ref name="machinelearningmastery">[https://machinelearningmastery.com/how-to-implement-pix2pix-gan-models-from-scratch-with-keras/ Pix2Pix GAN Models {{---}} Machine Learning Mastery]</ref>]]
Для генератора Pix2Pix используется U-net-генератор.<br>
Генератор должен не только обмануть дискриминатор, но и приблизиться к истине, поэтому его '''функция ошибки''' выглядит следующим образом: <br>
<tex>L(G) = BCE\,Loss </tex><ref>[https://towardsdatascience.com/understanding-binary-cross-entropy-log-loss-a-visual-explanation-a3ac6025181a BCE Loss {{---}} towardsdatascience]</ref> <tex>+ \,\lambda*\sum_{i=1}^{n}|generated\_output - real\_output|</tex>, где <tex>|generated\_output - real\_output|</tex> {{---}} попиксельная разница.
==== Дискриминатор ====
[[File:The-PatchGAN-structure-in-the-discriminator-architecture.png|400px|right|thumb|Рис. 7. Архитектура PatchGAN дискриминатора.<ref name="researchgate">[https://www.researchgate.net/figure/The-PatchGAN-structure-in-the-discriminator-architecture_fig5_339832261 The PatchGAN structure {{---}} ResearchGate]</ref>]]
Для дискриминатора данной сети используется сверточный дискриминатор PatchGAN.
* затем для вычисления ошибки дискриминатора проводится 2 сравнения:
** сравнение матрицы классификации от {объединения сгенерированного изображения с исходным входным сегментированным изображением} с матрицей из всех 0;
** матрицы классификация от {объединения реального изображения с исходным входным сегментированным изображением } с матрицей из всех 1;
* затем для вычисления ошибки генератора проводится сравнение матрицы классификации от {объединения сгенерированного изображения с исходным входным изображением} с матрицей из всех 1, которое считается с помощью BCE Loss, которое впоследствии суммируется с попиксельным сравнением реального изображения со сгенерированным, домноженным на <tex>\lambda</tex>;
[[File:Pix2pix-UNet-128-GAN-network-architecture.png|700px|center|thumb|Рис. 8. Архитектура Pix2Pix.<ref name="researchgate2">[https://www.researchgate.net/figure/Pix2pix-UNet-128-GAN-network-architecture_fig2_324962509 Pix2pix UNet_128 GAN network architecture {{---}} ResearchGate]</ref>]]
=== Примеры ===
и так далее.
[[File:Pix2pix_examples.png|800px|center|thumb|Рис. 9. Примеры Pix2Pix.<ref>[https://sh-tsang.medium.com/review-pix2pix-image-to-image-translation-with-conditional-adversarial-networks-gan-ac85d8ecead2 Sik-Ho Tsang]</ref>]]
== Pix2PixHD ==
[[File:Generator_pix2pixhd.png|400px|right|thumb|Рис. 10. Генератор Pix2PixHD. <ref name="towardsdatascience">[https://towardsdatascience.com/pix2pix-869c17900998 Pix2Pix {{---}} towardsdatascienceTowardsdatascience]</ref>]]
Pix2PixHD<ref name="Pix2PixHD">[https://github.com/NVIDIA/pix2pixHD Pix2PixHD {{---}} GitHub]</ref>{{---}} нейронная сеть, основанная на архитектуре Pix2Pix, которая является новым удачным подходом для решения задачи получения изображений высокого разрешения из сегментированных изображений.
Основа Pix2Pix была улучшена за счет изменений в генераторе, дискриминаторе и функции ошибки.
'''Генератор''' был разбит на две подсети <tex>G_1</tex> и <tex>G_2</tex> так, что первая приняла роль глобальной сети генератора, а вторая стала локальным усилителем сети. Таким образом, генератор стал задаваться набором <tex>G = \{G1, G2\}</tex>. Глобальная сеть генератора работает с изображениями с разрешением <tex>1024 × 512</tex>, в то время как локальный усилитель сети принимает на вход изображения с разрешением <tex>в 4 × </tex>размер раза больше размера вывода предыдущей сети. Для получения изображений большего разрешения могут быть добавлены дополнительные локальные усилители сети.
'''Функция ошибки''' была улучшена за счет добавления ошибки (feature matching loss) в разных масштабах признаковизображения для каждого дискриминатора <tex>\sum_{k=1}^{3} L_{FM}(G, D_k)</tex>, для вычисления которой будем использовать выдаваемые значения дискриминатора на разных слоях изображения: <tex>L_{FM}(G, D_k) = \mathbb{E}_{(s,x)}\sum_{i=1}^{T}\frac{1}{N_i}[||D_k^{(i)}(s,x) - D_k^{(i)}(s, G(s))||]</tex>, где <tex>T</tex> {{---}} количество слоев, <tex>N_i</tex> {{---}} количество элементов в каждом слое, <tex>s</tex> {{---}} исходное сегментированное изображение, <tex>x</tex> {{---}} соответствующее реальное изображение, <tex>G(s)</tex> {{---}} сгенерированное изображение.
На рисунках 11 и 12 приведены примеры генерации изображения по входным сегментированным изображениям с применением различных стилей.
== См. также ==