Как стать автором
Обновить

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

Это очень интересный материал! Спасибо!

Статья супер, очень понравилась

Спасибо за статью - надо бы снова вкатиться и почитать последние статьи по теме, а то в последний раз игрался с ганами во времена Pix2Pix и первого StyleGAN. Кстати, слышал, что сейчас VAE снова набирает популярность - это правда? Мне показалось, что после появления ганов на VAE и иже с ним как-то забили.

Спасибо за супер статью, очень интересный обзор. Много новых для себя проектов и подходов увидел. Сам собираюсь запилить на неделе что-то типа styleclip, но с clip и cyclegan, а обучать картинку. Очень полезно было посмотреть, как сейчас совмещают текст и gan ы.

Подумаем как можно математически представить лицо. Удивительно, но лицо это достаточно простой объект. Ещё лет 20 назад начали появляться работы на тему 3DMM

Аналогия с 3DMM хорошая. Про StyleGAN2 можно думать так, что:

  • ConstantInput - это "параметрическая модель" целевого класса объектов (примерно то, что строится в процессе обучения 3DMM)

  • Modulation/Demodulation - это ручки, дергая за которые можно из модели слепить нужный нам объект

Вот если так думать про стайлган, то становятся +/- понятны его границы применимости (в частности, почему авторы даже не пытались тренировать его на ImageNet).

А вот тут мы немножко прервемся и поговорим о теории. Вы не задумывались над вопросом почему большая часть StyleGAN работ про лица? 

Ну вообще в генеративках вроде бы генерация лиц - это почти стандарт де факто, к тому же авторы стайлгана попутно с самой сеткой клэймили и создание FFHQ датасета, поэтому сами и делают упор на своем собственном датасете. В принципе в сети можно найти приличные модели и для пейзажей, абстрактного арта и тд и тп. В целом, имхо, аргументация, что кроме лиц он нигде толком не работает из-за сложности модели - довольно слабая. Вернее с одной стороны это очевидно и справедливо для вообще любых моделей. А с другой сложно сказать, сколько было приложено усилий для того, чтобы получить качественную модель для другого домена:

  • Сами NVIDIA, как уже отмечалось выше, больше любят играться со своим датасетом FFHQ, а претрены для других больше для галочки выложили (и даже на них насколько помню на момент выхода статей это был state of the art).

  • Играться с StyleGAN2 - дорого и требует ресурсов больше, чем доступно среднестатистическому indie-рисерчеру, поэтому нужна высокая мотивация для того, чтобы тратить деньги на тренировку моделек. В основном пользовательские модели тренируются на куда более скромном железе и меньше по времени, соответственно и получаются модели так-себе качества. Даже у академиков я встречал статьи, где какие-то безумные парни тренировали стайлган и свою модификацию что-то около двух месяцев (!!!) на одной RTX 2080 GPU чтобы получить результаты.

  • Сам по себе FFHQ очень качественный датасет в котором и качество фото достаточно однородное по датасету и лица все выровнены, без оклюзий, достаточно фронтальные и тд и тп. Насколько качественно подготовлены данные в других датасетах - вопрос открытый, а как известно данные решают многое.

Т.ч. я бы сказал, что в основном StyleGAN работает на лицах потому, что авторы уже выложили хороший претрен, а больше особо и некому было инвестировать достаточно усилий в тренировку для других доменов и выложить это в паблик. К тому же генерация лиц, в связке с замечательными свойствами StyleGAN по части манипуляций с латентом, дает мощный инструмент для решения достаточно понятной задачи, поэтому вокруг по сути одного снапшота выросло целое направление рисерча по поводу инверсий и манипуляций с латентом конкретно для стаайлгана. Какой-то осмысленный кейс для генератора лошадей придумать сложно...

И тут, имхо, лежит фундаментальная проблема всей области генеративных моделей:

  • Стоимость исследований тут очень высокая. Условный DALL-E смогли натренировать только OpenAI, и в мире может быть найдется еще дай бог десяток компаний, где могли бы повторить что-то такое. Или с тем-же StyleGAN для лиц - люди придумывают очень замысловатые способы инверсии, но по сути пытаются сетями решать проблему адаптации домена, когда сетка наученная на стерильном FFHQ довольно не очень реконструирует реальное фото, т.к. это тупо out of domain сэмпл (для in-domain примеров у меня получалось качественно делать инверсию тупо подфайнтюнив mobilenet на парах [картинка, ее латентный код])...и людям проще придумать новый метод, чем закидать стайлган данными и дотренировать, как бы это сделали люди их индустрии.

  • Универсальных пртренов тут до сих пор никто не придумал. Т.е. тут нет такого, чтобы условный OpenAI/NVIDIA/etc. выложил супер-сетку, которую малыми усилиями можно дофайнтюнить на свою задачу...как это происходит со всякими трансформерами типа GPT/BERT/etc.

Как итог - исследователи не имеющие доступа к очень большим ресурсам, вынуждены либо кучковаться вокруг того небольшого пула задач, что корпорации выложили в паблик, либо довольствоваться более скромными результатами, не претендующими на SOTA и в целом вся область хоть как-то двигается стараниями кучки лабов, которые по пальцам пересчитать можно. Например для задачи синтеза изображений есть довольно прикольная статья, которая хоть и не дает SOTA результатов, зато приемлемый результат позволяет получить буквально за день на одной бытовой GPU'шке.

з.ы. а что касается стайлгана, то недавно я тоже заинтересовался темой современных генеративок и в принципе могу отчасти подтвердить тезис про простоту генерации лиц, т.к. по ходу своих экспериментов удалось ужать StyleGAN2 примерно в x9.5 раз, при этом сохранив визуально приличное качество генерации. И кажется, что этот эксперимент показывает, что изначально StyleGAN2 - довольно избыточная сетка для решения этой задачи.

Какой шикарный комментарий, спасибо! Очень интересные идеи. Про то что все упирается в тонко подобранный FFHQ не подумал.

Про MobileStyleGAN забыл, каюсь. Помню видел статью ещё где-то в ODS, и хотел её добавить сюда. Но из головы вылетело.

В целом, я видел за последние пол года несколько примеров удачного внедрения StyleGAN в бизнес (про ту же одежду, например автоматическое формирование фото на моделях для сайтов). Но конечно, там очень узкое применение. Так что, как мне кажется, у StyleGAN есть потенциал за пределами лиц. Но очень дорогие эксперименты, конечно, останавливают.

В целом, я видел за последние пол года несколько примеров удачного внедрения StyleGAN в бизнес (про ту же одежду, например автоматическое формирование фото на моделях для сайтов). 

N-е время назад я выложил python библиотеку для генерации лиц и там что-то около 250 скачиваний в месяц, надеюсь что хоть кто-то из скачавших её использует в продакшене, а не только на поиграться :D Правда пока из кейсов для генерации лиц видел только всякий скам с генерацией аватар для автоматически регистрируемых аккаунтов :D

Но конечно, там очень узкое применение.

Это, по моему, вообще для всей области справедливо: идеологи рисуют славное будущее с повсеместно автоматически генерируемым контентом, а на практике всё ограничивается дай бог десятком кейсов, связанных с энтертейнментом

Автор подскажи, насколько реально stylegan научить генерить фото с заданными перспективными искажениями? Т.е. задавать не только пол,возраст, улыбку, и пр. но и чтоб искажения картинки соответствовали заданному широкоугольному/нормальному/теле обьективу?

Мне кажется, что это возможно, если собрать соответствующий датасет/убедиться что FFHQ имеет лица с разным фокальным значением.
Если же и то и то сложно — я бы пошел по какому-то другому пути:
1) Обучил бы сетку вносить такие искажения. Через Pix2Pix|GAN или какие-нибудь аналоги
2) Либо честно оценил 3D через монокулярный подход, и +- растянул лицо. Но тут сходу математику не представляю, надо думать

Почему всё ещё нельзя настроить лицо и наложить на лицо в видео? Дипфейк берёт существующее лицо, а хотелось бы несуществующее.

Это алгоритмы про разное:)
Почти все что описано в статье — можно сделать и не через StyleGAN. Просто везде будут свои плюсы и минусы.
А так, никто не отменяет комбинирования алгоритмов. Создать несуществующее лицо, наложить чего через дипфейк.

Неужели уже можно создать лицо в разных ракурсах, чтобы обучить другую сеть?

В StyleGan? В некотором ограниченном размере ракурсов - можно (см. раздел "повороты").
Но, глобально, ничего не мешает решать вопрос поворота через другие подходы. Например через такой - https://github.com/AliaksandrSiarohin/first-order-model

Зарегистрируйтесь на Хабре, чтобы оставить комментарий