AI Face Swap: как работает замена лица в видео и фото — CMEX.ai
Загрузка платформы
Готовим каталог роликов и ваши данные

Что умеет AI при подмене лица

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

Что умеет AI при подмене лица

 Когда лицо можно поменять за пару минут

Сначала такое видео обычно выглядит совершенно обычно.

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

Потом внимание цепляется за глаза.

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

Для человеческого глаза этого бывает достаточно.

При этом внутри программы происходит совсем не простая операция с картинками. Замена лица начинается с поиска лица в кадре и определения его положения. В распространённых системах для этого используются отдельные модели обнаружения и выравнивания. Например, в наборе моделей InsightFace есть RetinaFace и SCRFD для обнаружения, отдельные модели для распознавания и наборы из 106 или 68 ориентиров для описания положения частей лица.

Дальше начинается собственно перенос внешности.

Здесь интересна работа SimSwap, опубликованная на ACM Multimedia в 2020 году. Авторы разделяют информацию о том, кто изображён, и информацию о том, как именно человек выглядит в конкретном кадре. Источник задаёт личность, а целевое изображение сохраняет выражение лица и положение головы. Это позволяет не просто вставлять фотографию одного человека поверх другого, а менять личность внутри уже существующей мимики.

Разница хорошо видна на простом примере.

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

Через секунду он поворачивается примерно на 45 градусов.

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

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

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

Именно на таких местах хорошие и плохие результаты начинают расходиться.

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

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

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

Для FaceShifter это было настолько существенной задачей, что авторы сделали отдельный второй этап обработки. Их система сначала создаёт заменённое лицо, а затем HEAR-Net ищет проблемные области и исправляет их. Авторы отдельно указывают на работу с перекрытиями лица и называют волосы и другие закрывающие объекты среди причин, из-за которых обычные методы дают сбои.

Есть и более банальная причина плохого результата: свет.

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

Форма может совпасть почти идеально. Цвет кожи тоже можно подобрать. Но если тень под носом осталась от дневной фотографии, лицо всё равно будет выглядеть чужим.

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

До нейросетей подобную работу тоже можно было делать, но совсем другим способом.

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

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

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

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

При этом фраза «загрузил селфи и получил видео» немного скрывает реальную сложность.

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

Поэтому хороший результат не обязательно означает, что программа «поняла» лицо так, как его понимает человек. Она решает конкретную задачу восстановления изображения по доступной информации. И когда нужной информации не хватает, начинается генерация наиболее правдоподобного варианта.

Вот тут и появляется разница между старой ручной заменой и современными нейросетевыми методами.

Раньше редактор физически переносил часть изображения из одного источника в другой.

Теперь программа может синтезировать область лица заново, опираясь на признаки внешности, положение лица и содержание целевого кадра.

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

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

Именно здесь можно получить особенно неприятный результат. На одном кадре человек узнаваем, на следующем нос немного другой формы, ещё через несколько кадров меняется линия подбородка, а потом всё возвращается обратно. Отдельные изображения могут выглядеть вполне прилично, но при просмотре подряд возникает ощущение, что лицо слегка «плывёт».

Для зрителя это часто заметнее, чем мелкие дефекты кожи.

Использование у технологии довольно будничное. Создатель ролика может проверить идею без повторной съёмки. Можно сделать персональное поздравление из одной фотографии. В рекламе несколько вариантов внешнего образа можно проверить до полноценного производства.

Но тот же набор возможностей работает и в другую сторону.

Если лицо человека можно перенести в чужую видеозапись, уже недостаточно говорить только о качестве картинки. Возникает вопрос, разрешал ли человек использовать свою внешность и понимает ли зритель, что перед ним изменённое видео.

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

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

Внутри останется довольно сложная последовательность операций.

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

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