Владимир Ивашкин

Владимир Ивашкин

Неделя
Nov 2, 2020 → Nov 8, 2020
Темы
Академия
Стартапы
DeepFakes
GAN
Кулстори

Архив недели @vlivashkin

Понедельник


Привет! В эту смену твиттером командую я – Владимир Ивашкин. Занимался ганами в Яндексе, веду телеграм канал t.me/loss_function_…, в последние полгода поработал в двух стартапах, а теперь мечтаю вкатиться в CV рисеч 🙂

План на неделю (1/2): Как я поработал три недели в Калифорнийском стартапе Энкодер для StyleGAN2 Про Avatarify и face reenactment Наука vs индустрия, что выбрать? Зачем пейперы, и почему конференции это классно

План на неделю (2/2): Есть ли смысл в PhD? Что я делаю в русской аспе, и как люди гибнут за науку Про вэны Ещё про ганы Может быть про AI residency, но у меня больше вопросов, чем ответов!

Расскажу немного про карьеру и интересные проекты

Закончил Физтех, ШАД, поработал Java-программистом в NetCracker, поклассифицировал документы в Тинькофф банке, пришел в Яндекс.

В Яндекс Погоде мы сделали спутниковый наукаст. Наукаст (now + forecast) – это предсказание погоды на ближайшие пару часов, в продукте это карта осадков: yandex.ru/pogoda/moscow/…

Отличие наукаста от обычного прогноза в том, что для просчета в будущее не нужно применять уравнения гидродинамики. Достаточно optical flow, еще лучше – обучить сетку.

Наукаст на метеорадарах работал и до меня, мы же обучились предсказывать зоны дождя по спутниковым снимкам. Так расширили действие наукаста на всю Европу, Дальний Восток и на юг до экватора.
notion image

Тогда же я узнал, что про работу можно писать пейперы 🙂 Мы написали пейпер про спутниковый наукаст на воркшоп NIPS'18, взяли орал KDD'19, и даже подали заявку на патент! 3-минутное видео о наукасте с KDD: youtu.be/9zd3VR-prYU

Дальше я перешел в Яндекс MILAB. Первым делом научил танцевать Анну-Веронику Дорогуш с помощью vid2vid youtu.be/28R7JjUjjGY?t=…

Про статью, которую мы написали в нашем отделе arxiv.org/abs/2003.03581 Еще прошлым летом мы в Яндексе начали эксперименты с генерацией лиц, в основном с StyleGAN. В его латентном пространстве можно найти направления пола, возраста и другие
Потом написали с ребятами статью на ECCV'20 про дистилляцию стайлгана. Про нее уже рассказывал Женя @digitman_ twitter.com/dsunderhood/st…, но я позже вставлю свои пять копеек.

Последнее, что сделал в милабе – калькулятор, который не использует математику, а предсказывает картинку ответа по картинке выражения. Вот здесь можно попробовать: yandex.ru/lab/calculator
notion image

Про калькулятор рассказал на первоапрельской конференции SIGBOVIK sigbovik.org/2020/. Обычно конференции используют double blind review, В SIGBOVIK пошли дальше и сделали всю конференцию blind, т.е. без видео. Вот тут я записываю свой доклад на кухне: youtu.be/Akcz--WgaSc

Вторник


Тред про StyleGAN encoder. Можем ли мы уже наконец менять себе пол, возраст и цвет глаз feed-forward в 1024x1024?

StyleGAN – первая архитектура, которая без проблем обучается генерировать картинки 1024x1024. Проще всего генерить лица, они отличаются только в деталях. Благодаря лицевому домену все поверили в мощь ганов, хотя кошки генерируются всё еще крипово порой thesecatsdonotexist.com
notion image

На вход генератору подаётся латентный вектор. Прообученное латентное пространство довольно гладкое (особенно в v2), можно найти зоны, ответственные за пол, расу и т.д. Это дает возможности не только для бесконечной генерации разных лиц, но и для манипуляций над конкретным лицом.

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

Первые подходы предлагали находить точку в латентном пространстве бэкпропом – оптимизировать вход так, чтобы на выходе картинка совпала с искомой. Про это вышло несколько пейперов: arxiv.org/abs/1904.03189, arxiv.org/abs/1906.11880, arxiv.org/abs/1907.10786, arxiv.org/abs/1911.11544

И даже в пейпере StyleGAN2 предложили использовать бэкпроп. Это работает медленно, нужно порядка 1000 шагов бэкпропа, на одну фотку уходит минута.

Я, @digitman_ и @iviazovetskyi предложили в arxiv.org/abs/2003.03581 сгенерировать стайлганом синтетический парный датасет для конкретного преобразования (например, женщин и соответствующих им мужчин) и учить на нём обычную dense prediction сетку, например pix2pixHD
notion image

Это немного шаг в сторону, ведь мы не находим латентный вектор. Но заработало это неожиданно хорошо. Слышал, что нейромаски примерно так и оптимизируют под запуск на устройстве, просто никто не подумал, что про это можно пейпер писать.

Помимо feed-forward с качеством StyleGAN2 , архитектура позволяет использовать части исходной картинки, например оставлять надпись на бейсболке, что невозможно даже в стайлгане с бэкпропом. Это позволило нам победить на user study сам стайлган)
notion image

Недостаток – каждое преобразование нужно учить отдельно. Что там все-таки насчёт энкодера? На момент нашей публикации предсказание латентного вектора feed-forward мы нашли только у github.com/pbaylies/style…. Работало это плохо, и подходило только как initial state для бэкпропа.

И вот наконец выходит пейпер про работающий энкодер: arxiv.org/abs/2008.00951. Их модель pSp тоже ищет латентный вектор, но они не обучаются к правильному вектору. Вместо этого они генерируют картинку через замороженный стайлган и навешивают лоссы уже на неё

Работает ли это? Получается похоже, но как будто теряется ID. На знакомых лицах ощущение, что на восстановленной фотке другой человек.
notion image

Но это уже вполне можно использовать на куче развлекательных задач, особенно если потеря ID не портит пользовательский опыт:
notion image

Кажется, что все эти костыли победит архитектура, в которой энкодер будет учиться вместе с декодером. Уже сейчас есть ALAE (автоэнкодер для 1024x1024), но он проигрывает по качеству подходу выше:
notion image

Думаю, через полгода выйдет StyleGAN3, который будет учиться уже с энкодером. И уж тогда-то, надеюсь, получится вволю поугарать над фотореалистично покорежёнными фотками друзей. В 1024x1024, feed-forward и без потери ID.

Среда


Работаете сегодня?

Кулстори о том, как мы делали московскую лабу калифорнийского стартапа, поработали три недели и всё поняли. Тред будет в духе анонимных наркоманских пабликов, чтобы не ворошить названия и имена.

Выводы здесь не очень глубокие, такие же, как и у постов соответствующих пабликов. Удивительно, что такое бывает, иногда находит, что хочется тусить вот так, но это не всерьёз.

И сразу второе предупреждение: в твите будет рассказываться про личные встречи и авиаперелеты за границу. Если это для вас неприемлемо, посмотрите соседний тред про StyleGAN encoder.

Итак, в конце прошлого года мой друг xy публикует на архив пейпер с несколькими граммами SOTA. Через пару дней ему пишет калифорнийский стартап, назовем его Ss, и предлагает пойти к ним работать в Америку. xy отказывается, т.к. патриот.

Позже xy пересекается с Ss на конференции, наши американские коллеги снова зовут работать, и снова – неудача. Просто в Долине все сильные разрабы куплены большими конторами, перекупить оттуда ребят к нам – непросто...

Долго ли, коротко ли, в Россию приезжает русскоговорящий человек из борды стартапа, назовем его Иван, и предлагает xy сделать лабораторию стартапа в России. Снимем большой офис, наймем 15 человек, сделаем демо зону. Даже статьи будем писать. Звучит очень заманчиво.

xy ищет кофаундера лабы и находит меня. Мы до этого работали только на большие компании в офисе, и все эти движения, что можно СНЯТЬ ОФИС, НАНЯТЬ ЛЮДЕЙ – невероятно льстят

Встречаемся с Иваном в старбаксе, обсуждаем условия, вместе мечтаем. Иван говорит, что Ss хочет делать экспансию в Европу, они думают про европейский офис. Предлагает нам переехать в Европу, но мы уже настроились, что хотим рулить тут сами.

Иван уезжает обратно, созваниваемся – говорит, что согласовал офис в России, но правление Ss хочет поговорить со мной лично. Они как раз устраивают турне по Европе, ищут офис, и будут рады видеть меня в конце недели в Варшаве.

Я беру отгул, в пятницу утром вылетаю в Варшаву, встречаемся с главой ML Ss в старбаксе у жд вокзала. Английский у меня не супер уверенный, поэтому больше задаю вопросы и с умным видом слушаю ответы. Потом приходит CEO, потом приходит VC по технологиям.

А как вы делаете вот это? А пробовали ли вы то? А, понятно. Ну, у меня есть небольшой опыт в этом. Да, в принципе понятно что можно сделать, думаю я мог бы помочь.

Мы сидим два часа, я уже вымотался, да и вопросы уже закончились. Но тут наступает время обеда. Мы выдвигаемся в ресторан, в ресторане болтаем ещё два часа.

После всего, уставший вусмерть, сажусь в убер до аэропорта и лечу домой. Это была невероятная победа, потому что ребятам я понравился =) Дальше прошли секции на алгоритмы и ML по зуму, тоже успешно.

Невероятно счастливые вместе с xy ходим по коворкингам, ищем офис, выбираем варианты, не смотрим на бюджет. Но арендовать ничего не можем, потому что денег нам еще никто не давал)

Отдельный показательный эпизод, как мы с Иваном и xy идем в Москву Сити, чтобы на первом этаже в кафешке встретиться с его знакомым подборщиком офисов. Сидели час, перебирали варианты вслух, он на любой говорит – да да, у меня есть такое, скину письмом. Ничего не скинул вообще.

Начинаем работать сразу после нового года, но Ss хочет, чтобы мы перед началом работы прилетели на экскурсию к ним в офис в СФ, познакомились с ребятами. Для этого нужна виза, туристическая сойдет. У xy она уже есть, у меня нет.

Подаюсь на визу в Австрии, на собеседовании получаю админпроверку до того, как успеваю открыть рот. Берем третьего сотрудника xy2, ему в визе вообще отказывают. xy едет в омерику один. А я увольняюсь со старой работы, ведь мы с xy2 официально устраиваемся в российский офис Ss.

Выясняется, что Иван не сделал никакое российское ООО, нас нанимает контора, которая заключает с Ss договор подряда, то есть мы как бы на субсубподряде. Денег на офис нам тоже никто не дал, снимаем отдельные места в коворкинге за свои.

Но как бы понятно, процессы еще не наладились, бывает. xy из Америки рассказывает, как со всеми встречается, разбирается в продукте. Про всё рассказываем Ивану, он обещает всё порешать. А пока созваниваемся с ML командой, рассказываем им про то, зачем нас наняли.

Постепенно крепнет ощущение, что нам не очень рады. Что проект, который мы должны делать, не ляжет на железо. Что никаких 15 сотрудников не будет, и демо стенда не будет. И офиса.

Узнаём, что Ss купил в Европе стартап, в котором делали то, что должны были делать мы. И приходит понимание, что мы во всей этой истории были разменной монетой менеджера Ивана, который пообещал Ss, что сделает европейский офис, и сделал. В Амстердаме.

На 4-часовом созвоне с xy и xy2 разбираем ситуацию и соглашаемся, что надо валить. xy забирает трофейные футболки с логотипом Ss и летит из СФ в Россию. А мы с xy2 забираем трудовые из субсубподрядной конторы.

Так мечты о собственной лабе за деньги калифорнийского стартапа столкнулись с реальностью. Казалось, что делаем невозможное, а в итоге реально не получилось.

Правда сейчас кажется невозможным даже на самолете в Европу полететь( Пока писал, чувствовал себя дедом, который застал время до пандемии(

Четверг


Чем ты занимаешься в датасаенсе?

Пятница


Здесь будет тред о рисёче и написании статей

В датасаенсе можно делать разное, но вершина – это делать рисёч и писать статьи. Или наоборот, статьи пишут студенты, а взрослые ребята растят качество на проде? Расскажу, что думаю. Поправляйте, если моя картина мира неверна =)

Стандартный академический путь – это делать рисёч в маге/аспе, а потом определяться: - писать статьи в академии или в коммерческой лабе - идти в индустрию починять прод

У меня так не получилось - институт ничего про рисёч не рассказал, а только привил отвращение к дедам. Ставь лайк, если у тебя было так же!

У меня вышло наоборот. Я работал в индустрии и в какой-то момент повезло написать пару статей и понять как это делать. Так у меня появился выбор – можно продолжать делать индустриальные проекты, а можно попытаться пробиться в лабу и начать публиковаться на регулярной основе.

Что же делать, если хочешь научиться писать статьи?

В некоторых науках единственная возможность заниматься нормальным делом – это уехать на PhD в хороший институт к хорошему научруку. Пойти на PhD по DS – это отличный способ ворваться в науку, да и уехать из России заодно.

Многие страны дают вид на жительство, проще найти друзей среди коллег (потому что они тоже иностранцы), проще привыкнуть и остаться.

А можно без PhD? Ну да, это мой случай. Можно найти команду, которая пишет статьи, или проект, в котором потенциально можно нарисёчить на статью. Если совсем повезёт – пройти на работу в лабу сразу.

Еще есть рисёч стажировки (обычно летние, 3-6 месяцев) и AI residency (6-12), там тоже можно писать статьи. На такие стажировки берут в основном аспирантов. В теории можно поступить в аспу института типа Синергии (у них есть аспа?) ради того, чтобы взяли на стажировку в FAIR.

Но зачем вообще писать статьи?

Написать пару статьей ради резюме, чтобы потом пойти работать в индустрию – оверкил. Проще сразу пойти в компанию и там расти, чем для этого же писать статьи, или тем более заканчивать PhD. Но, конечно, полезно попробовать писать статьи, чтобы проверить, твоё ли это.

(за этим теоретически и нужен был универ!)

Писать статьи есть смысл, если ты хочешь строить на этом карьеру – пойти работать в дипмайнд и писать статьи уже там. Ну или просто это является побочным продуктом твоей работы – твой индустрийный проект настолько инновационен, что по нему можно что-то публиковать.

Плюсы написания статей: шире выбор темы, можно проводить более смелые эксперименты. Из-за того, что изначально настроен делать новое, есть шанс реально сделать что-то новое).

Не нужно думать о применимости, не нужно писать прод. Твоё имя в заголовке статьи, твоими идеями пользуются по всему миру. Проще сделать американскую визу гения О1.

Такая работа – это игра. Публикуешься, проходишь ревью, докладываешься, твою работу читают, цитируют. Дофаминовая игла.

Минусы написания статей: проверяешь гипотезы костылями, ничего не доводишь до прода. Каждый раз надо стремиться выжимать novelty и писать так, чтобы не докопались.

Надо скрупулёзно сравниваться с другими, делать ablation study. Твой труд могут завернуть на ревью, а может его просто никто не прочитает.

Не каждый пейпер – это прямо работа на тысячу цитирований. Наверное, это создает фрустрацию?

В свою очередь, в индустрии важнее, чтобы работало, чем novelty. Проще регулярно добиваться результатов, боли не меньше, но она другая. Можно чувствовать удовлетворение от того, что реально делаешь что-то полезное. Проще вырасти в руководителя. Ну вот это вот всё.

Причем задачи в индустрии ничуть не проще. В некоторых случаях одна и та же задача решается и в индустрии и в рисёче, разница только в подходе.

Я себе за последний месяц всю голову сломал, нужно ли обязательно стремиться в этот божественный статейный рисёч. Не хочется дрочить на хирш и вообще ебал это всё. Именно поэтому я написал десять твитов о статьях и два об индустрии.

Хочется интересный проект, не важно где. Расскажите, что вы думаете по этому поводу. И конечно зовите меня в свою классную лабу =)

Внимательные читатели уже заметили, что в предыдущем треде не хватило места для рассказа о российской аспирантуре. Расскажу завтра о своем опыте и обстановке на этом фронте

Окей, тред про русскую аспу.

Сейчас я нахожусь на 4/4 курсе аспы по Computer Science в МФТИ. Расскажу устроена аспа, как поступил, зачем, как буду защищаться.

Прежде всего, в России "закончить аспирантуру" и "защититься" – это разные вещи. Для того, чтобы закончить аспирантуру, нужно просто отсидеться: сдавать экзамены, отчеты о НИР, проходить всякие аттестации, в самом конце сдать госэкзамен и написать реферат на тему рисёча.

Окончание аспирантуры без защиты не даёт ни звание кандидата наук, ни военник. Многие мои знакомые заканчивали аспу, но не защищались, потому что статей нет, а 27 – есть.

Защищаться можно независимо от окончания аспирантуры. Можно закончить аспирантуру, получить диплом (преподавателя) и не защищаться вообще. Можно защититься в любое время позже. Или можно защититься во время аспы, и тогда аспа автоматически заканчивается.

Требования к защите зависят от того, где ты защищаешься. В моем случае это может быть МФТИ или РАН. Нужно иметь минимум три (для МФТИ) или две (для РАН) статьи в журналах из списка ВАК. Если статья проиндексирована в Scopus или Web of Science, то скорее всего она считается.

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

Также нужно сдать три экзамена: английский, философия и экзамен по специальности. Последнее – это по сути свободный доклад перед кафедрой о состоянии своей научной работы.

Защита проходит так. Вуз собирает тебе комиссию, ты выносишь доклад на предзащиту, у тебя есть два ОППОНЕНТА, ты заранее знаешь их предъявы и вы разыгрываете спектакль.

Важно, чтобы предзащита прошла хорошо, а защита – это праздник. На защиту важно собрать стол: водка, закусочки, не забудьте шпажки.

Самой защиты у меня ещё не было, это я рассказываю, что слышал.

Итак, в МФТИ аспирантура длится 4 года, на первом курсе есть пары, потом можно просто заниматься научной работой.

Могут ли отчислить? У вузов появились kpi на долю защитившихся от числа закончивших. Теперь вузу выгодно отчислить тех, кто не собирается защищаться. На моём потоке чистка произошла после третьего курса - нескольких ребят убедили написать псж.
notion image

Зачем я поступил? На момент поступления у меня не было научных амбиций. Заканчивалась мага, я почувствовал нависание угрозы армии.

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

Можно было бы получить военник на военной кафедре, но меня туда не взяли именно из-за аллергии. Так я обернул своё генетическое преимущество себе же во вред(

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

Что я делаю в аспе? Первые 2.5 года я не делал ничего. Но написав пару статей в индустрии, я понял, как писать статьи =) Понял, что аспу можно даже и закончить, может еще пригодится для того, чтобы взяли в зарубежную лабу.

За последние полгода я написал полторы из оставшихся двух статей для защиты, и наверное даже успею защититься до конца 2021.

Мог бы я всерьёз работать только в этой аспе? Да конечно нет) По статистике, 90% аспирантов работают во время аспирантуры iq.hse.ru/news/298322638…

Можно ли ездить на стажировки? Да! Правда делать это в последний год оказалось поздновато. Сейчас FAIR мне говорит, что кандидат должен после летней стажировки вернуться в академию (это условие чтобы поехать в америку по J1?). На тот момент я уже закончу аспу, так что без шансов(

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

Можно ли уехать на PhD после во время/после окончания аспы? После окончания можно, после защиты – нет.

Бывает ли так, что кто-то всерьёз работает в аспе? За пределами CS – довольно часто, в CS, пожалуй, только у сильных научруков, у которых есть команды, лабы, у которых не стыдно работать, в общем =)

Если чем-то могу помочь – спрашивайте 🙂

Какая у тебя аспа? (опрос только для аспирантов/PhD)

Собираешься в аспу? (опрос для тех, кто заканчивает бакалавриат/магу)

Суббота


Про что рассказать?

STOP THE COUNT!

Воскресенье


Тред про face reenactment и face swap.
notion image

Прежде всего – это разные задачи. Face swap aka identity swap aka deepfake – это задача о замене лица на фото на лицо другого человека. Face reenactment aka face transfer aka puppeteering – это задача об изменении выражения лица.

Что такое лицо? Для данных задач лицо удобно определять как совокупность ID, pose и expression. ID – это специфичные для человека черты лица, pose – это наклоны головы и expression – выражение лица: положение глаз, рта.

В этих терминах, в face swap наша задача – заменить ID, в face reenactment – менять pose и expression (или хотя бы expression!), оставляя ID и фон.

Допустим, у нас есть 10 минут видео с выступления обэмы, мы хотим сгенерировать видео, как он приказывает купить ему 2л пива.
notion image

Первая мысль – определить на каждом кадре кипоинты, обучить из картинки с точками-кипоинтами генерировать кадр видео, в инференсе подставить свои кипоинты. Накинуть perceptual loss и GAN loss. Будет ли это работать? Ну да:
notion image

Даже full body работает, хоть и не супер реалистично youtube.com/watch?v=PCBTZh…

Но чем сильнее вы различаетесь с политиком лицом, тем хуже будет работать и тем меньше он будет похож на себя (и больше на тебя). Почему? Потому что через кипоинты протекает ID. Кипоинты отражают не только expression, но и строение лица. А это тоже уникальная штука, тоже часть ID

Как сделать, чтобы ID не протекало? Использовать архитектуру, которая может делать disentanglement информации на ID, pose и expression.

Один из вариантов – dense alignment, например 3DDFA. Это параметрическая модель головы, в которой by design разделены текстура лица, ID, pose и expression параметры. По этим параметрам строится mesh, на который можно наложить текстуру
notion image

Меняя expression параметры, можно управлять лицом вообще без сетки: один раз считаем параметры для обэмы, берем параметры expression с нашего видео, рендерим. Без рефайна выглядеть будет не очень, будет чувствоваться uncanny valley. Это то, как работает Mug Life.

Чтобы избавиться от uncanny valley, рендерим сеткой. Генератор учится генерить лицо из меша, а в инференсе смешиваем параметры от обэмы и от нас, от нас берем только expression. Получаем результат CVPR'16: youtu.be/ohmajJTcpNk

Обучаться каждый раз заново не хочется, да еще и отдельное видео не покрывает все возможные движения и т.д. Хочется обучиться сразу для всех и делать reenactment по одной фотке. На помощь приходит пейпер от Московского SAIC youtu.be/p1b5aiTrGzY.

Здесь ID естимейтится веткой-энкодером и передаётся в генератор через AdaIN (так же как в StyleGAN), а pose и expression передается картинкой с кипоинтами на вход генератора.
notion image

Получается, здесь, в отличие от StyleGAN, удалось сделать есть энкодер для стиля? Ну, не совсем. Получается похоже, но в работе рекомендуют все-таки немного помогать бэкпропом, чтобы лицо стало хорошо узнаваемым.

А что, если не генерировать лицо заново, а преобразовывать фотку, приходящую на вход? Тогда не будет проблем с поддержанием ID. Такой подход развили в Monkey-Net, и позже отточили в First Order Motion Model (FOMM) youtu.be/u-0cQ-grXBQ

Базово, при обучении берется два кадра одного видео: source и driving. Из source берется картинка и кипоинты, из driving – только кипоинты. Из разницы положения кипоинтов строится dense motion, с помощью которого можно привести source картинку к driving.

Source картинка, dense motion и occlusion map (маска, по которой сетка понимает, каких частей нет в исходной, и придется инпеинтить) подаются в генератор.
notion image

в инференсе в качестве source выбираешь фото обэмы в качестве driving – кадр из видео со своим лицом ??? PROFIT!

Но мы выше говорили, что нужно использовать не кипоинты, а параметрическую модель? А, ну вот про это пейпер, это текущая SOTA: arxiv.org/abs/2008.07783
notion image

Вокруг FOMM мои друзья Али и Карим сделали виртуальную камеру для Zoom и получили 9к звезд на гитхабе: github.com/alievk/avatari…, youtu.be/lONuXGNqLO0

А потом мы вместе сделали Avatarify – приложение-нейромаску для iOS. Учитывая всё сказанное выше, мы написали свою модель, которая даже работает реалтайм на устройстве! Прила продержалась пару недель топ1 в App Store. Ссылку не даю, ведь тут нельзя рекламировать свои продукты!
notion image

Теперь про дипфейки. Про дипфейки на самом деле мало что понятно, видимо из-за сильного общественного порицания писать пейперы тяжело, и весь рисеч проводится энтузиастами, которые уже ничего не боятся.
notion image

А может быть потому, что face swap – это скорее не про одну сетку, а про пайплайн.

Первые дипфейки появились в 2017 и учились как автоэнкодеры. Для двух лиц учим два декодера и общий энкодер. Во время обучения энкодеру нет смысла протаскивать в bottleneck информацию об ID, т.к. каждый декодер генерирует только одно лицо.
notion image

Можно сказать, что происходит disentanglement source картинки на pose+expression и ID+фон. Поза определяется латентным вектором, ID обучен в декодере. Если теперь в инференсе поменять местами декодеры, то произойдет face swap.

Если заменить MSE на preceptual loss + GAN loss и немного увеличить разрешение, то получим уже вполне рабочий вариант.

Правда, этого мало – получившееся лицо нужно ещё как-то вклеить обратно. Нужно: - в таргет картинке отсегментировать зону лица и волосы - вклеить получившееся лицо, но только там где лицо не закрывают волосы - гармонизировать (не обязательно, если цвет лица и освещение совпадают)

Есть очень популярный живой репозиторий DeepFakeLab, где развивается именно подход "автоэнкодер с ган лоссом + весь пайплайн процессинга": github.com/iperov/DeepFac…. В readme написано, что 95% дипфейк видео сделаны этим репозиторием. Надеюсь, это не фейкньюс!

Можно вместо автоэнкодера делать reenactment на лице, которое собираемся вклеивать. Это подход FSGAN: arxiv.org/abs/1908.05932.
notion image

Можно ли сделать one-shot? По сути, если reenactment мы можем делать без обучения (например, использовать FOMM), то значит и весь пайплайн мы можем делать feed-forward, не обучаясь на конкретное лицо.

One-shot face swap видео круто делают ZAO и Reface
notion image

Что у них под капотом неизвестно, но можно погадать: Когда сохраняешь своё лицо, они что-то процессят. Параметрическую модель головы? Все видео добавлены заранее, значит что-то в них заранее просчитано? Например, pose/expression параметры на каждом кадре и маски лица/волос

Получается, они могут менять pose и expression твоего лица, и вклеивать его в кадр видео Но тогда качество будет как у Mug Life? Можно полирнуть гармонизующей сеткой В пользу того, что каждый раз инферят сетку, говорит то, что без интернета прила не работает

Reface хорошо работает, когда разница между лицами большая, но при маленькой разнице лицо как будто не накладывается вообще (на гифке должен был быть тоже обама). Может быть, следствие работы гармонизации, у которой не было лосса на сохранение ID?
notion image

Впрочем, это всё уже догадки. Рассказал всё, что знал! Место для вопросов, дополнений и предположений:

В коментах опасаются, что Обама так и не получил своё пиво! Вот видеоподтверждение, что всё прошло отлично
notion image

That's all, folks! Это был Владимир Ивашкин, спасибо, что читали. Надеюсь, вам было интересно =) Давайте дружить в твиттере @vlivashkin, а еще лучше подписывайтесь на мой ламповый канал t.me/i_failed_again 🙂 Список тредов:

Кулстори о том, как мы делали московскую лабу калифорнийского стартапа, поработали три недели и всё поняли. Тред будет в духе анонимных наркоманских пабликов, чтобы не ворошить названия и имена.
• Обо мне twitter.com/dsunderhood/st… • Про StyleGAN encoder twitter.com/dsunderhood/st… • Кулстори про филиал калифорнийского стартапа twitter.com/dsunderhood/st…

Тред про face reenactment и face swap. https://t.co/mAbeADWqq3
• Метания между наукой и индустрией twitter.com/dsunderhood/st… • Про русскую аспу twitter.com/dsunderhood/st… • Про face reenactment и face swap twitter.com/dsunderhood/st…

Ссылки