Style Generative Adversarial Network , или сокращенно StyleGAN , представляет собой расширение архитектуры GAN, представленное исследователями Nvidia в декабре 2018 года [1] и опубликованное в феврале 2019 года. [2] [3]
StyleGAN зависит от программного обеспечения CUDA от Nvidia, графических процессоров и TensorFlow от Google [4] или PyTorch от Meta AI , который заменяет TensorFlow в качестве официальной библиотеки реализации в более поздних версиях StyleGAN. [5] Вторая версия StyleGAN, названная StyleGAN2, была опубликована 5 февраля 2020 года. Она удаляет некоторые характерные артефакты и улучшает качество изображения. [6] [7] Nvidia представила StyleGAN3, описанную как версия «без псевдонимов», 23 июня 2021 года и сделала исходный код доступным 12 октября 2021 года. [8]
Прямым предшественником серии StyleGAN является Progressive GAN, опубликованный в 2017 году. [9]
В декабре 2018 года исследователи Nvidia распространили препринт с сопутствующим программным обеспечением, представляющим StyleGAN, GAN для создания неограниченного количества (часто убедительных) портретов поддельных человеческих лиц . StyleGAN мог работать на коммерческих графических процессорах Nvidia.
В феврале 2019 года инженер Uber Филипп Ванг использовал программное обеспечение для создания веб-сайта This Person Does Not Exist , который отображал новое лицо при каждой перезагрузке веб-страницы. [10] [11] Сам Ванг выразил удивление тем, что, учитывая, что люди эволюционировали, чтобы специально понимать человеческие лица, StyleGAN, тем не менее, может на конкурентной основе «отбирать все соответствующие черты (человеческих лиц) и перекомпоновывать их таким образом, чтобы это было связно». [12]
В сентябре 2019 года сайт под названием Generated Photos опубликовал 100 000 изображений в качестве коллекции стоковых фотографий . [13] Коллекция была создана с использованием частного набора данных, снятого в контролируемой среде с похожим освещением и углами. [14]
Аналогичным образом, два преподавателя в Школе информации Вашингтонского университета использовали StyleGAN для создания игры «Какое лицо настоящее?» , которая предлагала посетителям различать поддельное и настоящее лицо рядом. [11] Преподаватели заявили, что целью было «просвещать общественность» о существовании этой технологии, чтобы они могли относиться к ней с осторожностью, «точно так же, как в конечном итоге большинство людей узнали, что можно отфотошопить изображение». [15]
Вторая версия StyleGAN, названная StyleGAN2, была опубликована 5 февраля 2020 года. Она удаляет некоторые характерные артефакты и улучшает качество изображения. [6] [7]
В 2021 году была выпущена третья версия, улучшающая согласованность между мелкими и грубыми деталями в генераторе. Названная «без псевдонимов», эта версия была реализована с помощью pytorch . [16]
В декабре 2019 года Facebook заблокировал сеть аккаунтов с поддельными личностями и упомянул, что некоторые из них использовали фотографии профиля, созданные с помощью методов машинного обучения. [17]
Прогрессивный GAN [9] — это метод обучения GAN для генерации изображений большого масштаба стабильно, путем выращивания генератора GAN от малого к большому масштабу пирамидальным образом. Как и SinGAN, он разлагает генератор как , а дискриминатор как .
Во время обучения сначала используются только в игре GAN для генерации изображений 4x4. Затем добавляются для достижения второго этапа игры GAN, для генерации изображений 8x8 и так далее, пока не достигнем игры GAN для генерации изображений 1024x1024.
Чтобы избежать разрыва между этапами игры GAN, каждый новый слой «вливается» (рисунок 2 статьи [9] ). Например, вот как начинается второй этап игры GAN:
StyleGAN разработан как комбинация прогрессивной GAN с нейронной передачей стиля . [18]
Ключевым архитектурным выбором StyleGAN-1 является прогрессивный механизм роста, аналогичный Progressive GAN. Каждое сгенерированное изображение начинается как постоянный [примечание 1] массив и многократно проходит через блоки стиля. Каждый блок стиля применяет «скрытый вектор стиля» через аффинное преобразование («адаптивная нормализация экземпляра»), аналогично тому, как нейронная передача стиля использует матрицу Грама . Затем он добавляет шум и нормализует (вычитает среднее значение, затем делит на дисперсию).
Во время обучения обычно используется только один скрытый вектор стиля для каждого сгенерированного изображения, но иногда и два («смешанная регуляризация»), чтобы побудить каждый блок стиля независимо выполнять свою стилизацию, не ожидая помощи от других блоков стиля (поскольку они могут получить совершенно другой скрытый вектор стиля).
После обучения в каждый блок стилей можно подавать несколько скрытых векторов стилей. Те, которые подаются на нижние слои, управляют крупномасштабными стилями, а те, которые подаются на верхние слои, управляют стилями с мелкими деталями.
Также можно выполнить смешивание стилей между двумя изображениями . Сначала запустите градиентный спуск, чтобы найти такое, что . Это называется «проецированием изображения обратно в скрытое пространство стиля». Затем можно подать на нижние блоки стиля и на верхние блоки стиля, чтобы создать составное изображение, которое имеет крупномасштабный стиль и мелкодетализированный стиль . Несколько изображений также можно составить таким образом.
StyleGAN2 улучшает StyleGAN в двух отношениях.
Во-первых, он применяет скрытый вектор стиля для преобразования весов сверточного слоя, тем самым решая проблему «пятна». [19] Проблема «пятна», грубо говоря, заключается в том, что использование скрытого вектора стиля для нормализации сгенерированного изображения уничтожает полезную информацию. Следовательно, генератор научился создавать «отвлечение» большим пятном, которое поглощает большую часть эффекта нормализации (что-то похожее на использование вспышек для отвлечения ракеты с тепловым наведением ).
Во-вторых, он использует остаточные соединения, что помогает ему избежать явления, когда определенные черты застревают на интервалах пикселей. Например, шов между двумя зубами может застрять на пикселях, делящихся на 32, потому что генератор научился генерировать зубы на этапе N-5, и, следовательно, мог генерировать только примитивные зубы на этом этапе, прежде чем масштабироваться в 5 раз (таким образом, интервалы составляют 32).
Это было обновлено StyleGAN2-ADA («ADA» означает «адаптивный»), [20] , который использует обратимое увеличение данных . Он также настраивает объем применяемого увеличения данных, начиная с нуля и постепенно увеличивая его до тех пор, пока «эвристика переобучения» не достигнет целевого уровня, отсюда и название «адаптивный».
StyleGAN3 [21] улучшает StyleGAN2, решая проблему «прилипания текстуры», которую можно увидеть в официальных видеороликах. [22] Они проанализировали проблему с помощью теоремы Найквиста–Шеннона и пришли к выводу, что слои в генераторе научились использовать высокочастотный сигнал в пикселях, с которыми они работают.
Чтобы решить эту проблему, они предложили наложить строгие фильтры нижних частот между слоями каждого генератора, так что генератор вынужден работать с пикселями способом, верным непрерывным сигналам, которые они представляют, а не работать с ними как с просто дискретными сигналами. Они дополнительно наложили вращательную и трансляционную инвариантность, используя больше фильтров сигналов . Полученный StyleGAN-3 способен генерировать изображения, которые вращаются и транслируются плавно и без прилипания текстуры.