Создание портретов в стиле аниме с помощью StyleGAN

+7 926 604 54 63 address
 Нейронные сети научились создавать детализированные аниме-портреты.
Нейронные сети научились создавать детализированные аниме-портреты.

На протяжении многих лет одной из задач, не поддававшихся ИИ-исследователям, была генерация аниме-лиц достойного качества. Несмотря на успехи искусственного интеллекта в создании фотографических изображений несуществующих людей, создавать аниме-лица получалось плохо. Образцы выходили расплывчатыми и похожими друг на друга. Теперь с помощью нейронной сети StyleGAN, исходный код которой выпущен в феврале 2019 года под лицензией creative commons, возможно создавать разнообразных персонажей с детальной художественной проработкой.

Гверн Бранвен (Gwern Branwen), энтузиаст нейросетей из США, написал статью, в которой делится недавними достижениями в создании аниме-лиц — и эти рисунки действительно поражают детализацией. Для демонстрации результатов интернет-публике Гверн создал сайт с полученными им аниме-портретами («This Waifu Does Not Exist») и персонажами в полный рост («This Anime Does Not Exist»). Ниже мы приводим перевод на русский язык статьи Гверна о проделанной работе.

* * *

Когда в 2014 году Йен Гудфеллоу впервые выпустил статью по генеративно-состязательным сетям (GAN), в которой продемонстрировал расплывчатые монохромные изображения лиц размерностью 64 пикселя, я сказал себе: «Учитывая темпы развития архитектур графических процессоров (GPU) и нейросетей, возможно, через несколько лет с помощью нескольких GPU и на основе аниме-датасетов типа Danbooru мы сможем достичь обалденных результатов». Есть что-то забавное в попытках заставить компьютеры рисовать аниме, и заниматься этим куда более увлекательно, чем продолжать работать с фотографиями знаменитостей или образцами из датасета Imagenet, просто увеличивая объёмы тренировочных данных; более того, аниме, иллюстрации и рисунки настолько отличаются от исключительно фотографических датасетов, которые используются или переиспользуются в современных исследованиях в области машинного обучения, что мне стало интересно, как машинное обучение будет работать с аниме: лучше или хуже, быстрее ли, или, может быть, в разных случаях нейронные сети будут выдавать разные ошибки? Ещё более занятно: если создание случайных образов станет выполнимым, то не за горой будет и генерация картинок по текстовому описанию (недавно такая генерация стала реальностью. — Прим. «XX2 век»).

Поэтому когда где-то в 2015-м году GAN‘ы, будучи обученными на Imagenet, смогли генерировать 128-пиксельные цветные картинки и создавать неплохие изображения лиц на базе датасета CelebA, наряду с моими экспериментами над char-RNN (модели без учителя, которые учатся подражать заданным текстовым строкам), я начал экспериментировать над созданной Сумитом Чинтала (Soumith Chintala) DCGAN. Но я ограничивался лишь несколькими образцами лиц персонажей аниме, хотя и мог использовать ≈5—10 тысяч лиц. (Я использовал много изображений Аски Лэнгли Сорью из «Евангелиона», потому что она имеет цвет-ориентированный дизайн: светло-рыжие волосы, голубые глаза и рыжие украшения для волос. На таком датасете легче определить, делает ли наша сеть GAN какой-либо прогресс).

Но это не сработало. Я много раз запускал процедуру обучения как на моем ноутбуке, так и на арендованной машине, но DCGAN даже и близко не стоял с качеством лиц, созданных на базе CelebA. В лучшем случае я получал красноватые пятна до дивергенции, или же сразу был сбой. Думая, что проблема могла крыться в слишком малых наборах данных, и что нужно было обучить модель на всех доступных лицах, я начал создавать датасет Danbooru 2017 (впоследствии «Danbooru 2018: Крупномасштабный размеченный краудсорс-набор данных аниме-иллюстраций». Запасшись большим набором данных, я впоследствии начал работать с особенно перспективными моделями из «зоопарка» GAN’ов, отдавая предпочтение лучшему из достигнутого (state of the art) и моделям с открытым исходным кодом.

Среди прочих, я пробовал StackGAN/StackGAN++ и Pixel*NN* (не удалось запустить), WGAN-GP, Glow, GAN-QP, MSG-GAN, SAGAN, VGAN, PokeGAN, BigGAN, ProGAN и StyleGAN. Эти архитектуры сильно отличаются друг от друга дизайном, алгоритмами в своей основе, а также используемыми механизмами стабилизации (Wiatrak & Albrecht 2019). В показанных же результатах они оказались гораздо более схожи: всё было плохо.

Glow и BigGAN показывали многообещающие результаты на CelebА и Imagenet соответственно, но, к сожалению, я не cмог удовлетворить все их требования. (Как бы ни были интересны SPIRAL и CAN, их код — проприетарный, и я не смог их опробовать).

Было создано несколько интересных инструментов, например PaintsTransfer / style2paints, а также у некоторых GAN (IllustrationGAN) наблюдались хорошие, но недостаточные результаты в создании аниме-лиц. Наиболее удачной попыткой генерации аниме-лиц стал проект Make Girls.moe (MGM) (здесь игра слов: «moe» в аниме-жаргоне значит вызывать сильное эмоциональное притяжение). Что интересно, MGM с помощью крошечных GAN может сгенерировать в браузере аниме-лица размерностью 256 пикселей, но лучших результатов с помощью этого подхода не достичь. MGM добились такого качества, упростив задачу: они добавили некоторые элементы обучения с учителем — грубые тэг-эмбеддинги, упростив задачу до n = 42 000 лиц, взятых из профессиональных изображений игровых персонажей. Я считал это неприемлемым решением, так как лица были маленькими и скучными, и было неясно, можно ли будет этот подход «очистки» данных масштабировать для аниме-лиц в общем и, тем более, для аниме-изображений как таковых. Полученные изображения вполне можно распознать как аниме-лица, но их разрешение низкое, да и качество не на высоте:

Положение дел на 2017-й год: 16 случайных образцов лиц Make Girls.Moe (4×4).

Как правило, после одного или двух дней обучения в GAN либо появляется разнообразие, либо он скатывается к производству лишь ограниченного набора лиц (или даже одного лица), или, если это была стабильная сеть, на выходе просто получатся очень размытые изображения низкого качества; наиболее типичной ошибкой была гетерохромия (это встречается в аниме, но не столь часто) — то есть не совпадающие цвета глаз (каждый цвет индивидуально правдоподобный). Это происходило из-за того, что сеть-генератор, очевидно, не была в состоянии скоординировать свои действия и выбирать соответствующие друг другу цвета. На более поздних архитектурах, таких как VGAN или SAGAN, которые тщательно ослабляют сеть-дискриминатор или добавляют очень мощные компоненты, например уровни самоконтроля, у меня получались нечёткие изображения размерности 128 пикселей.

Учитывая жалкий провал всех нейросетей, которые я до этого использовал, я начал на полном серьёзе задумываться, обладают ли такие нефотографические портреты каким-то качеством, которое обуславливает невозможность их простого моделирования с помощью свёрточных нейронных сетей (общий компонент для всех них). Может быть, при свёртке невозможно создавать чёткие линии или равномерно окрашенные области? Может быть, обычные GAN’ы хорошо работали с фотографиями только потому, что те почти полностью состоят из размытых текстур?

На BigGAN’е было доказано, что при условии достаточного времени обучения даже большую, но передовую архитектуру GAN можно масштабировать для всего ImageNet в разрешении 512 пикселей. ProGAN продемонстрировал, что обычные CNN могут научиться создавать чёткие аниме-образы при условии лишь немного заоблачного объёма обучения. ProGAN (источник; видео), хотя и вычислительно дорогой и требующий более чем 6 GPU-недель для обучения, работал и даже был достаточно мощным, что смог разнообразить (оверфиттить) даже датасеты, состоящие из портретов одного героя. Но у меня не было достаточно GPU-времени, чтобы практиковаться на неограниченном наборе лиц, у меня было гораздо меньше аниме-изображений в целом, но просто зайти так далеко было захватывающе. Потому что общая последовательность в глубоком обучении, в том числе с подкреплением (в отличие от многих областей искусственного интеллекта) заключается в том, что задача кажется неразрешимой в течение длительных периодов времени, пока кто-то немного не модифицирует масштабируемую архитектуру и не получит в какой-то степени правдоподобные результаты (не обязательно даже на том уровне, как сделал бы это человек), а затем вложит в эту модель огромное количество вычислительной мощности и данных. И, поскольку архитектура масштабируемая, она быстро превзойдет лучшие на данный момент результаты и приблизится к уровню решения задачи человеком (и потенциально превзойдёт человеческий уровень). Теперь мне просто была нужна более быстрая GAN-архитектура, на которой я мог бы натренировать гораздо большую модель на гораздо большем наборе данных.

Иллюстрация истории развития аниме-лиц на основе GAN: от «хочу!» и «о, нет» до «потрясающе».

StyleGAN стал финальным прорывом, который выдавал результаты на уровне ProGAN, но быстрее: переключение на радикально отличную архитектуру минимизировало потребность в медленном прогрессивном росте (возможно, устранив её полностью), обучение эффективно проходило на разных уровнях разрешения, а также мы получили гораздо больший контроль за создаваемыми изображениями из-за метафоры «передачи стиля».

Примеры того, какие аниме-портреты можно получить с помощью StyleGAN:

Выбранное мной изображение, сгенерированное StyleGAN, обученной на портретах Аски Лэнгли Сорью.
64 лучших образца аниме-лиц из This Waifu Does Not Exist (TWNDE).
100 случайных образцов аниме-лиц из TWDNE, полученных с помощью StyleGAN.

Даже беглого взгляда на образы из Make Girls.Moe и StyleGAN достаточно, чтобы понять, что изображения, созданные StyleGAN, превосходят их по разрешению, тонкости деталей и общему внешнему виду (хотя в MGM меньше глобальных ошибок). Они также превосходят портреты, созданные мной с помощью ProGAN в 2018-м году. Возможно, самым поразительным фактом об этих лицах, который следует подчеркнуть для тех, кому повезло больше, чем мне, и кто не потратил столько времени на изучение ужасных портретов, созданных другими GAN, является не то, что отдельные изображения лиц довольно хороши, а то, что лица настолько разнообразны, особенно когда я смотрю на варианты лиц с 𝜓 ≥ 1 — отличается не только цвет волос/глаз, ориентация головы или тонкие детали, но и общий стиль: он варьирует от компьютерной графики до мультипликационного наброска, и даже использованные медиа отличаются. Готов поспорить, что на многих из изображений нейросеть пыталась сымитировать акварельную текстуру, набросок углём или масляные краски, а некоторые из изображений отрисованы в стиле аниме 90-х или 2000-х годов. (Я могу провести за просмотром этих образов весь день даже несмотря на глобальные ошибки, потому как среди портретов очень много интересных. Этого я не могу сказать о картинках из Make Girls.Moe, новизна которых быстро была исчерпана, и похоже, что пользователи моего сайта TWDNE думают так же, так как средняя продолжительность каждого посещения 1 мин 55 сек).

.
Комментарии