Оживление лица при помощи LivePortrait

Оживление лица при помощи LivePortrait

@theromanvision

Содержание

  1. Вступление
  2. Исходные материалы
  3. Запись референсов
  4. Преобразование лица в LivePortrait
  5. Интерполяция и Upscale
  6. Финальная сборка
  7. Заключение

Вступление

LivePortrait — инструмент на основе искусственного интеллекта для оживления статичных портретных изображений и видео. LivePortrait можно использовать отдельно или в качестве подключаемого модуля к графическому интерфейсу ComfyUI.

Что нужно от пользователя:

  • Исходное фото или видео, на котором в дальнейшем будет осуществляться анимация лица;
  • Видео, которое будет выступать в качестве референса.

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

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

Справа — результат работы инструмента LivePortrait

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

Задача №1

Идея: Герой, стоящий на игровой локации.

Описание: Оживление лица в момент начальной стойки в соответствии с озвучкой.

Задача №2

Идея: Персонаж на переднем плане, комментирующий особенности игры (референс).

Описание: Оживление лица в течение длительного периода времени на прозрачном фоне.

Задачи похожие, но разница в подходе всё-таки присутствует. Об этом далее.

Исходные материалы

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

Требования к персонажам и анимациям заключались в том, чтобы черты лица героев были хорошо различимы в объективе камеры и при этом не перекрывались движениями руки или оружия. Локацию можно было взять практически любую. Главное — обеспечить контраст между локацией и героем.

Для 1-й задачи была выбрана героиня игры Shadow Fight 4: Arena — Кейт в экипировке Валькирии на локации Bamboo.

Сцена собиралась в Unreal Engine 5. После импорта героя и персонажа были настроены материалы, выставлен свет и анимирована камера. Рендер вы можете увидеть ниже.

Рендер с Кейт из UE5

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

Сцена с Маркусом собиралась по аналогии с Кейт.

Рендер с Маркусом из UE5

Аудиофайлы

Фраза Кейт, которая была взята на вооружение, звучит коротко и однозначно:

"I will eat you alive".
Аудиофайл с фразой Кейт из игры.

С репликой Кейт всё было понятно, поскольку соответствующий аудиофайл можно найти в проекте игры.

Для 2-й задачи нужно было заставить Маркуса в стандартном скине произносить достаточно длинный текст:

"In Shadow Fight Arena, you create a dream team of 3 fighters to defeat the opponent’s team. All heroes have unique upgradeable abilities that interact with each other and can be leveled up. Choose the right fighter to counteract the enemy’s tactic and win the battle! Control your hero like in classical fighting and get a console-level battle experience on your mobile device. Discover the famous Shadow Fight series of games that have been downloaded more than 500 million times."

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

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

Сгенерированная фраза Маркуса

Запись референсов

Для записи референсов достаточно веб-камеры или телефона.

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

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

  • Камера должна быть статичной. Лучше её зафиксировать, поставив на штатив;
  • Чем меньше поворотов и наклонов головы в референсе, тем лучше произойдет замена лица на видео. Здесь важна мимика. Оказывается, вот где может пригодиться опыт выступлений в театральных кружках;
  • Лицо в начале и в конце референса должно быть нейтральным для упрощения встройки;
  • Нужно стараться проговаривать каждое слово четко. Гиперболизация приветствуется;
  • Глаза должны смотреть в объектив камеры. Иначе по глазам ваших героев будет видно, что вы читали текст. Если без чтения текста не обойтись, то посмотрите на это решение (можно после записи закрыть глаза прямоугольником);
  • Если текст слишком большой, то лучше разбить его на несколько предложений и сделать референсы для каждого из них. Так будет намного проще всё запомнить и повторить на камеру.
  • Лицо должно быть освещено равномерно, без сильных теней.

Преобразование лица в LivePortrait

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

Перенос мимики с референса на видео с Кейт

С Маркусом был ряд проблем, обусловленных тем, что персонаж в конечном итоге должен стоять на прозрачном фоне. LivePortrait не поддерживает работу с прозрачными изображениями, поэтому пришлось сначала добавлять черный фон, а после всех манипуляций удалять его при помощи инструмента Rembg Background Removal Node.

Инструмент для удаления фона работал не идеально, потому что оставлял после себя окантовку вокруг персонажа. Улучшить ситуацию удалось благодаря инструментам для кеинга в Adobe After Effects.

Перенос мимики с референса на видео с Маркусом

Стоит отметить, что в ComfyUI пользователь может указать свою веб-камеру в качестве референса для LivePortrait, что позволяет в режиме реального времени тестировать замену лица.

Интерполяция и Upscale

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

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

На видео слева заметен стык, а справа его нет.

До и после интерполяции

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

После многочисленных испытаний была отобрана модель для увеличения разрешения видео, соответствующая всем необходимым условиям — 4x_NMKD-Siax_200k. Таким образом, видео было увеличено в 4 раза. Картинка стала выглядеть детализировано.

Финальная сборка

В конечном счёте для Кейт были добавлены музыка и звуковые эффекты для создания должной атмосферы.

Финальное видео с Кейт

Для ролика с Маркусом были записаны футажи с лобби, примерочной и боем.

Финальное видео с Маркусом

Заключение

Инструмент LivePortrait выглядит весьма полезным и перспективным, особенно для быстрых тестов и прототипов. Он не заменяет полноценную лицевую анимацию, но идеально подходит для превью, референсов и концептов.

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

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

Report Page