[Машинное обучение, Искусственный интеллект] Deepfake. Реализация технологии замены лиц в видео. Часть 1
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Всем привет! Я работаю с генеративными моделями, одним из моих проектов является разработка DeepFake. Планирую создать несколько статей про этот проект. Данная статья является первой, в ней я рассмотрю архитектуры которые можно использовать, их достоинства и недостатки. Из существующих подходов к созданию DeepFake можно выделить следующие:
- Архитектура основанная на схеме кодер-декодер
- Генеративно-состязательные сети(GAN)
Энкодер-декодер архитектураК данной подходу можно отнести методы генерации основанные на автоэнкодерах. Их объединяет использование пиксельных(изображение на входе попиксельно сравнивается с изображением на выходе, оптимизируется MSE,MAE и т.п. функции потерь) потерь, что определяет достоинства и недостатки и данной схемы. Плюс в том, что автоэнкодеры относительно просто(в сравнении с GAN) обучать. Минус - оптимизация по пиксельным метрикам не позволяет добиться фотореалистичности, сравнимой с другими методами(опять же в сравнении GAN). Первым вариантом, который я рассмотрел, была схема с двумя декодерами. Подробнее можно ознакомиться здесь .Архитектура представлена на рисунке ниже.
Идея данного подхода в следующем: используется энкодер-декодер схема, при этом энкодер один, а декодеров используется несколько, причем каждый декодер может создавать изображения только одного человека. Данный подход огранивает использование модели, требуя обучать отдельный декодер для каждого нового человека которого мы хотим сгенерировать. Для некоторых сценариев это не критично, например при производстве рекламных роликов это не будет проблемой. Но например для приложения, где пользователь хочет создать DeepFake с своим участием, такая схема не подходит, т.к. вряд ли пользователю понравится ждать несколько часов, пока под него обучается отдельный декодер. К достоинствам можно отнести относительную компактность - в отличие от других подходов, не нужно создавать и обучать(или искать готовые и адаптировать) дополнительные сетки для кодирования внешности. Но ограничение "каждому человеку - отдельный декодер" ограничивает применение данной архитектуры, поэтому рассмотрим следующую.Condtional AutoencoderСхема представлена на рисунке ниже. Больше информации можно найти здесь.
Conditional VAE architectureИдея данного подхода в следующем: на вход энкодера подается изображение и вектор атрибутов. На вход декодера поступает вектор размерности latent_dim являющейся выходом энкодера и вектор атрибутов. Атрибутом может быть любой признак характеризующий изображение, например наличие/отсутствие улыбки(и других эмоций), повернута голова вправо или влево, внешность человека и т.п. Т.к. вектор атрибутов поступает в декодер напрямую, энкодеру нет смысла извлекать из входного изображения эту информацию. Т.е. например, если в atrributes vectors задать внешность человека, то энкодер будет кодировать только свойства изображения не связанные с внешностью, такие как поворот и наклон головы, эмоции, освещение и т.п. И если к выходу энкодера добавить atrributes vectors другого человека, декодер восстановит картинку, где поворот головы и эмоции будут соответствовать исходному изображению, а внешность будет от другого человека. В данной схеме не требуется обучать отдельный декодер для каждого нового человека, которого мы хотим генерировать, т.к. замена внешности реализуется изменением atrributes vectors подаваемого в декодер. Примеры восстановленных изображений с помощью данного подхода можно увидеть на рисунке ниже.
Autoencoder reconstructionИзображения разбиты по парам, слева - восстановленные автоэнкодером, справа - оригинальные. Хорошо виден недостаток присущий автоэнкодерам - "замыленность", недостаточная резкость восстановленных изображений. Можно попробовать доработать восстановленные изображения, повысить резкость и т.п. но существует подход изначально лишенный этих недостатков.Conditional GANВ GAN генератор получает на вход случайный вектор, и возвращает сгенерированное изображение. Т.к. в DeepFake изображение должно обладать рядом заданных свойств(обычно - внешность от одного человека, поворот головы и эмоции от другого), рассмотрим Conditional GAN. Сравнение GAN и Conditional GAN архитектур представлено на рисунке ниже. Рисунок взят из этой статьи, там можно найти больше информации.
GAN vs Conditional GANВ классическом GAN, генератор получает на вход случайный вектор и генерирует изображение. При этом изображение является случайным, т.е. неизвестно сгенерируется женщина или мужчина, будет смотреть прямо или направо, будет улыбаться или грустить. В Conditional Gan на вход генератору подается два вектора - случайный вектор Z и вектор атрибутов(на приведенной схеме обозначен label). Дискриминатор получает на вход изображение и соответствующий вектор атрибутов. В процессе обучения генератор учиться создавать не только реалистичные изображения, но и соответствующие вектору атрибутов. Результаты которые я получил с использованием Conditional GAN представлены на рисунке ниже.
Conditional GANИзображения сгруппированы по парам(слева - сгенерированные, справа - оригинал). В attributes vectors задаются поворот и наклон головы, эмоции и внешность человека. Xорошо видна способность GAN генерировать фотореалистичные изображения. Если сравнить сгенерированные картинки с рассмотренными ранее результатами автоэнкодеров, создается впечатление, что GAN выигрывает в одни ворота. Но не нужно забывать, что конечная цель - DeepFake, а это генерация не одной картинки, а видео. В следующей части я расскажу как перейти от генерации отдельных изображений к созданию видео. Последняя сборка DeepFake на основе GAN выглядит следующим образом:Извините, данный ресурс не поддреживается. :( В настоящий момент продолжается развитие проекта. Планируется много доработок, в первую очередь - увеличение разрешения, отработку сцен с сложным освещением. Если будет интересно, по мере появления новых результатов будут новые публикации.
===========
Источник:
habr.com
===========
Похожие новости:
- [Алгоритмы, Обработка изображений, Искусственный интеллект] NIST признал алгоритм распознавания лиц NtechLab лучшим в мире
- [Искусственный интеллект, Здоровье] Разработка Computer Vision в онкологии: почему всегда нужно еще больше сил, времени и денег
- [Сетевые технологии, Машинное обучение, Natural Language Processing] Как новая модель глубокого обучения делает возможной сегментацию изображений на пограничных устройствах (перевод)
- [Программирование, Машинное обучение] Простой граф знаний на текстовых данных
- [Open source, Big Data, Машинное обучение, Kotlin] KotlinDL 0.2: Functional API, зоопарк моделей c ResNet и MobileNet, DSL для обработки изображений
- [Python, Программирование, Открытые данные, Машинное обучение] Датасет о мобильных приложениях
- [Читальный зал, Научно-популярное, Искусственный интеллект, Научная фантастика, Мозг] Цифровизация разума и ее возможные последствия (перевод)
- [Читальный зал, Искусственный интеллект] GPT-3 пробует себя в подкатах (перевод)
- [Машинное обучение, Исследования и прогнозы в IT, Учебный процесс в IT, IT-компании] Яндекс вручил премию им. Ильи Сегаловича молодым учёным и научным руководителям
- [Программирование, Компиляторы, Функциональное программирование, Искусственный интеллект] Тестирование синтаксиса языка программирования с необычной концепцией
Теги для поиска: #_mashinnoe_obuchenie (Машинное обучение), #_iskusstvennyj_intellekt (Искусственный интеллект), #_deepfake, #_gan, #_autoencoder, #_mashinnoe_obuchenie (
Машинное обучение
), #_iskusstvennyj_intellekt (
Искусственный интеллект
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:25
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Всем привет! Я работаю с генеративными моделями, одним из моих проектов является разработка DeepFake. Планирую создать несколько статей про этот проект. Данная статья является первой, в ней я рассмотрю архитектуры которые можно использовать, их достоинства и недостатки. Из существующих подходов к созданию DeepFake можно выделить следующие:
Идея данного подхода в следующем: используется энкодер-декодер схема, при этом энкодер один, а декодеров используется несколько, причем каждый декодер может создавать изображения только одного человека. Данный подход огранивает использование модели, требуя обучать отдельный декодер для каждого нового человека которого мы хотим сгенерировать. Для некоторых сценариев это не критично, например при производстве рекламных роликов это не будет проблемой. Но например для приложения, где пользователь хочет создать DeepFake с своим участием, такая схема не подходит, т.к. вряд ли пользователю понравится ждать несколько часов, пока под него обучается отдельный декодер. К достоинствам можно отнести относительную компактность - в отличие от других подходов, не нужно создавать и обучать(или искать готовые и адаптировать) дополнительные сетки для кодирования внешности. Но ограничение "каждому человеку - отдельный декодер" ограничивает применение данной архитектуры, поэтому рассмотрим следующую.Condtional AutoencoderСхема представлена на рисунке ниже. Больше информации можно найти здесь. Conditional VAE architectureИдея данного подхода в следующем: на вход энкодера подается изображение и вектор атрибутов. На вход декодера поступает вектор размерности latent_dim являющейся выходом энкодера и вектор атрибутов. Атрибутом может быть любой признак характеризующий изображение, например наличие/отсутствие улыбки(и других эмоций), повернута голова вправо или влево, внешность человека и т.п. Т.к. вектор атрибутов поступает в декодер напрямую, энкодеру нет смысла извлекать из входного изображения эту информацию. Т.е. например, если в atrributes vectors задать внешность человека, то энкодер будет кодировать только свойства изображения не связанные с внешностью, такие как поворот и наклон головы, эмоции, освещение и т.п. И если к выходу энкодера добавить atrributes vectors другого человека, декодер восстановит картинку, где поворот головы и эмоции будут соответствовать исходному изображению, а внешность будет от другого человека. В данной схеме не требуется обучать отдельный декодер для каждого нового человека, которого мы хотим генерировать, т.к. замена внешности реализуется изменением atrributes vectors подаваемого в декодер. Примеры восстановленных изображений с помощью данного подхода можно увидеть на рисунке ниже. Autoencoder reconstructionИзображения разбиты по парам, слева - восстановленные автоэнкодером, справа - оригинальные. Хорошо виден недостаток присущий автоэнкодерам - "замыленность", недостаточная резкость восстановленных изображений. Можно попробовать доработать восстановленные изображения, повысить резкость и т.п. но существует подход изначально лишенный этих недостатков.Conditional GANВ GAN генератор получает на вход случайный вектор, и возвращает сгенерированное изображение. Т.к. в DeepFake изображение должно обладать рядом заданных свойств(обычно - внешность от одного человека, поворот головы и эмоции от другого), рассмотрим Conditional GAN. Сравнение GAN и Conditional GAN архитектур представлено на рисунке ниже. Рисунок взят из этой статьи, там можно найти больше информации. GAN vs Conditional GANВ классическом GAN, генератор получает на вход случайный вектор и генерирует изображение. При этом изображение является случайным, т.е. неизвестно сгенерируется женщина или мужчина, будет смотреть прямо или направо, будет улыбаться или грустить. В Conditional Gan на вход генератору подается два вектора - случайный вектор Z и вектор атрибутов(на приведенной схеме обозначен label). Дискриминатор получает на вход изображение и соответствующий вектор атрибутов. В процессе обучения генератор учиться создавать не только реалистичные изображения, но и соответствующие вектору атрибутов. Результаты которые я получил с использованием Conditional GAN представлены на рисунке ниже. Conditional GANИзображения сгруппированы по парам(слева - сгенерированные, справа - оригинал). В attributes vectors задаются поворот и наклон головы, эмоции и внешность человека. Xорошо видна способность GAN генерировать фотореалистичные изображения. Если сравнить сгенерированные картинки с рассмотренными ранее результатами автоэнкодеров, создается впечатление, что GAN выигрывает в одни ворота. Но не нужно забывать, что конечная цель - DeepFake, а это генерация не одной картинки, а видео. В следующей части я расскажу как перейти от генерации отдельных изображений к созданию видео. Последняя сборка DeepFake на основе GAN выглядит следующим образом:Извините, данный ресурс не поддреживается. :( В настоящий момент продолжается развитие проекта. Планируется много доработок, в первую очередь - увеличение разрешения, отработку сцен с сложным освещением. Если будет интересно, по мере появления новых результатов будут новые публикации. =========== Источник: habr.com =========== Похожие новости:
Машинное обучение ), #_iskusstvennyj_intellekt ( Искусственный интеллект ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:25
Часовой пояс: UTC + 5