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 Филип Ванг использовал программное обеспечение для создания «Этого человека не существует» , в котором новое лицо отображалось при каждой перезагрузке веб-страницы. [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 спроектирован как комбинация Progressive 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 способен генерировать изображения, которые плавно вращаются и перемещаются, без прилипания текстур.