Дипфейк. Реализация Технологии Замены Лица На Видео. Часть 1

Всем привет! Я работаю с генеративными моделями, один из моих проектов — разработка DeepFake. Планирую написать несколько статей об этом проекте.

Эта статья первая, в которой я рассмотрю архитектуры, которые можно использовать, их преимущества и недостатки.

Существующие подходы к созданию DeepFakes включают в себя следующее:

  • Архитектура на основе схемы кодер-декодер
  • Генеративно-состязательные сети (GAN)


архитектура нкодера-декодера

Этот подход включает в себя методы генерации на основе автоэнкодеров.

Их объединяет использование попиксельных (входное изображение попиксельно сравнивается с выходным изображением, оптимизируются функции потерь MSE, MAE и т.д.) потерь, что и определяет преимущества и недостатки данной схемы.

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

Минус — оптимизация по пиксельным метрикам не позволяет добиться фотореализма, сравнимого с другими методами (опять же в сравнении с GAN).

Первым вариантом, который я рассмотрел, была конструкция с двойным декодером.

Более подробную информацию можно найти Здесь .

Архитектура представлена на рисунке ниже.



Дипфейк.
</p><p>
 Реализация технологии замены лица на видео.
</p><p>
 Часть 1

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

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

Для некоторых сценариев это не критично, например при производстве рекламы это не будет проблемой.

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

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

К преимуществам можно отнести относительную компактность — в отличие от других подходов нет необходимости создавать и обучать (или искать готовые и адаптировать) дополнительные сетки для кодирования внешнего вида.

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



Условный автоэнкодер

Схема представлена на рисунке ниже.

Более подробную информацию можно найти здесь.



Дипфейк.
</p><p>
 Реализация технологии замены лица на видео.
</p><p>
 Часть 1

Условная архитектура VAE Идея этого подхода заключается в следующем: на вход энкодера подается изображение и вектор атрибутов.

На вход декодера поступает вектор измерения latent_dim, который является выходом кодера, и вектор атрибутов.

Атрибутом может быть любой признак, характеризующий изображение, например, наличие/отсутствие улыбки (и других эмоций), поворот головы вправо или влево, внешний вид человека и т.п.

Потому что вектор атрибута поступает в декодер напрямую; нет смысла кодировщику извлекать эту информацию из входного изображения.

Те.

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

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

Примеры восстановленных изображений с использованием этого подхода можно увидеть на рисунке ниже.



Дипфейк.
</p><p>
 Реализация технологии замены лица на видео.
</p><p>
 Часть 1

Реконструкция автоэнкодера Изображения разделены на пары, слева — восстановленные автоэнкодером, справа — оригинальные.

Хорошо виден недостаток, присущий автоэнкодерам – «размытие», недостаточная резкость восстанавливаемых изображений.

Можно попытаться улучшить восстановленные изображения, повысить резкость и т. д., но есть подход, изначально лишенный этих недостатков.



Условный ГАН

В GAN генератор получает на вход случайный вектор и возвращает сгенерированное изображение.

Поскольку в DeepFake изображение должно иметь ряд заданных свойств (обычно внешний вид одного человека, поворот головы и эмоции другого), рассмотрим Условный ГАН.

Сравнение архитектур GAN и Conditional GAN представлено на рисунке ниже.

Изображение взято из этой статьи, дополнительную информацию можно найти там.



Дипфейк.
</p><p>
 Реализация технологии замены лица на видео.
</p><p>
 Часть 1

GAN против условного GAN В классической GAN генератор принимает на вход случайный вектор и генерирует изображение.

В данном случае изображение случайное, т.е.

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

В Conditional Gan на вход генератора подаются два вектора — случайный вектор Z и вектор атрибутов (обозначены меткой на схеме выше).

Дискриминатор получает на вход изображение и соответствующий вектор атрибутов.

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

Результаты, которые я получил с помощью Conditional GAN, показаны на рисунке ниже.



Дипфейк.
</p><p>
 Реализация технологии замены лица на видео.
</p><p>
 Часть 1

Условный ГАН Изображения сгруппированы в пары (слева — сгенерированные, справа — исходные).

Векторы атрибутов определяют поворот и наклон головы, эмоции и внешний вид человека.

Способность GAN генерировать фотореалистичные изображения хорошо видна.

Если сравнить сгенерированные изображения с результатами автоэнкодеров, обсуждавшихся ранее, кажется, что GAN побеждает в одиночку.

Но нельзя забывать, что конечная цель — DeepFake, а это генерация не одной картинки, а видео.

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

Последняя сборка DeepFake на базе GAN выглядит так: В настоящее время разработка проекта продолжается.

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

Если вам интересно, будут новые публикации по мере появления новых результатов.

Теги: #Машинное обучение #искусственный интеллект #deepfake #GaN #автоэнкодер

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.