Самые интересные и перспективные разработки в области AI связаны с нейронными сетями. Сегодня рассмотрим Impersonator++ для накопления опыта в области Deep fake.
В настоящее время самые интересные и перспективные разработки в области AI связаны с нейронными сетями.
Больших успехов они позволяют достичь в области компьютерного зрения, преобразования видео и изображений.
Широкую известность в интернете получили видео, созданные с помощью технологий Deep fake, в которых лица людей заменяются на совершенно другие. Иногда такие работы выглядят очень правдоподобно.
Однако помимо развлекательного характера эти технологии могут быть использованы в корыстных (даже преступных) целях. Если заменить лицо преступника, попавшего под объектив камеры наблюдения на совершенно другое, то у невиновного человека, как минимум может появится много проблем.
В ноябре 2020 года технологии Deep fake получили «долгожданное» продолжение: группа разработчиков из Китая создала инструмент, с помощью которого можно наложить заданные движения на любую личность с сохранением фона.
Чтобы успешно бороться с цифровым мошенничеством следует хорошо знать своего потенциального «врага». Поэтому предлагаем ознакомиться с функционалом Impersonator++. На вход он получает фото личности, которую будут «оживлять», и референсное видео с заданным движением. А на выход подаёт итоговое видео:
На рисунке в первой строке вы видите кадры из референсного видео с заданным движением, в левой части фотографии людей, а в центре кадры из итогового видео, где они двигаются.
Для качественного выявления фальшивок следует применять системный подход и использовать не только принцип «прозрачного ящика», то есть строить анализ не только на основе знаний внутреннего устройства инструментов DeepFake и их алгоритмов, но и работать с чёрным ящиком. То есть зная, что на выходе мы получаем фальшивые видео, мы можем их сами генерировать и использовать в настройке систем опознавания.
Чтобы установить Impersonator++ на ПК необходим либо Linux либо Windows, CUDA, gcc 7.5+, ffmpeg (ffprobe). Прочие технические требования можете прочитать на ресурсе проекта: https://www.impersonator.org. Также по этой ссылке можно найти статью разработчиков, которая раскрывает технологию работы Impersonator++.
Инструмент включает несколько предобученных на примерах моделей и довольно прост в использовании.
Важным является формат и синтаксис обращения к инструменту. Для установки и настройки следует выполнить несколько команд.
!apt-get install ffmpeg # установка ffmpeg
import os
os.environ["CUDA_HOME"] = "/usr/local/cuda-10.1" # задаём CUDA_HOME
!echo $CUDA_HOME
Для установки клонируем репозиторий с github и устанавливаем:
!git clone https://github.com/iPERDance/iPERCore.git
cd /content/iPERCore/
!python setup.py develop
Чтобы скачать предобученные модели, исполняемые файлы и примеры используем следующий код:
!wget -O assets/checkpoints.zip "https://download.impersonator.org/iper_plus_plus_latest_checkpoints.zip"
!unzip -o assets/checkpoints.zip -d assets/
!rm assets/checkpoints.zip
!wget -O assets/samples.zip "https://download.impersonator.org/iper_plus_plus_latest_samples.zip"
!unzip -o assets/samples.zip -d assets
!rm assets/samples.zip
После установки, разложив в нужные директории картинки с субъектами и видео с действиями, мы можем увеличить обучающую выборку следующим кодом:
import os
import os.path as osp
import platform
import argparse
import time
import sys
import subprocess
from IPython.display import HTML
from base64 import b64encode
далее задаём директории и значения по умолчанию для параметров:
gpu_ids = "0"
# размер изображения
image_size = 512
# число картинок-источников изображения по умолчанию считается 2, но значение обновится, если фактическое окажется меньше num_source
num_source = 2
# директория с ресурсами, моделями и исполняемыми файлами, которые прежде необходимо скачать
assets_dir = "/content/iPERCore/assets"
# директория для сохранения результатов
output_dir = "./results"
# символическая ссылка с актуальной директории с ресурсами на текущую директорию
work_assets_dir = os.path.join("./assets")
if not os.path.exists(work_asserts_dir):
os.symlink(osp.abspath(assets_dir), osp.abspath(work_assets_dir),
target_is_directory=(platform.system() == "Windows"))
cfg_path = osp.join(work_assets_dir, "configs", "deploy.toml")
И, наконец, формируем имитацию движения на основе разных фото:
model_id = “ident_remove_mask_multi”
# путь к картинке, которая ляжет в основу
src_path = “\”path?=/persons/person1.png\””
# путь к видео с референсным, интересующим нас, движением
ref_path = "\"path?=/movement/remove_the_mask/act1.mp4\""
!python -m iPERCore.services.run_imitator --gpu_ids $gpu_ids --num_source $num_source --image_size $image_size --output_dir $output_dir --model_id $model_id --cfg_path $cfg_path --src_path $src_path --ref_path $ref_path
В папке, которую мы указали для сохранения результата, мы получим файл mp4 с названием модели. Проба пера получилась такой:
Слева расположена исходная фотография, посередине – кадр из референсного видео, справа – кадр из итогового видео.
Видно, что на изображении справа поза человека схожа с позой человека на центральной картинке. При этом относительно исходного варианта фигура кажется даже немного развёрнутой в другую сторону.
Конечно, чем качественнее материал подаётся на вход, тем качественнее на выходе, а так как в данном примере использовались необработанные файлы из интернета, то и результат получается немного сомнительным.
Пока что большинство полученных с помощью DeepFake материалов люди могут распознать невооружённым глазом, но прогресс не стоит на месте, и мы считаем, что уже сейчас стоит разрабатывать/готовить системы распознавания подобных имитаций. Но это уже отдельная тема. Следует также отметить, что орудие может приносить не только вред, но и пользу – всё зависит от рук, в которые оно попадает. А в руках кинематографистов, рекламных агентств, образовательных фондов данный инструмент при дальнейшем развитии может сотворить много интересных вещей.