化身阿凡达,国外小哥开源 AI 实时变脸工具 Avatarify

疫情期间,很多人都在用 Zoom 和 Skype 等软件进行视频会议。国外一位开发小哥觉得这样开会太无聊,于是基于 first-order-model 开发了一个能够把别人的照片套在自己脸上的“变脸”软件 Avatarify,并将其开源。

看过电影阿凡达(Avatar)的朋友应该对这款软件的立意并不陌生,简单理解就是把别人的脸套在自己的表情上实时驱动。Avatarify 的作者 Ali Aliev 最初只是想逗一下在 ZOOM 上开会的同事,在视频会议期间将一些名人的脸实时叠加到自己的脸上。于是他参考了发表在 arxiv 上的一篇论文 “First Order Motion Model for Image Animation”,并基于论文中的开源项目 first-order-model 构建了 Avatarify。如图所示,作者使用 Avatarify 模仿马斯克与同事进行视频会议: 

  

与其他 AI 人脸交换技术(如 deepfakes)类似,Avatarify 的算法是在你想交换的脸上训练的,即训练材料是你想要模仿的人的脸部图像。该模型通过在目标的相似类别(比如人脸)上训练算法,实现了面部表情的实时呈现。但由于该软件对视频进行的是实时处理,即需要同时打开视频会议、Avatarify 等软件,因此对于 GPU 的要求比较高(作者用的是 1080 Ti,勉强达到 33 FPS)。

 

测试环境

  • GPU :越强越好,以下是作者使用的不同显卡的帧数参考:

GeForce GTX 1080 Ti:每秒 33 帧

GeForce GTX 1070:每秒 15 帧

GeForce GTX 950:每秒 9 帧

可以看到 1080 Ti 才能勉强不掉帧,想玩的同学量力而行......

PS:也可以在 Google 的 Colab 上进行远程测试,用谷歌的硬件来跑,在国外的朋友可以试试。

  • 摄像头一个
  • 下载训练好的神经网络权值:

 Dropbox

 Yandex.Disk

Google Drive

不同操作系统的朋友往下看: 

Linux

使用v4l2loopback创建虚拟摄像头

1.下载 Miniconda Python 3.7 ,运行安装命令:

bash Miniconda3-latest-Linux-x86_64.sh

2.克隆 avatarify 镜像仓库,并安装相关依赖项 (需要 sudo 权限):

git clone https://github.com/alievk/avatarify.git
cd avatarify
bash scripts/install.sh

3.把之前下好的网络权值文件vox-adv-cpk.pth.tar 放在 avatarify 的目录下 (注意不要解压)。

Windows 10

1. 安装 Miniconda Python 3.7 。

2. 安装 Git 。

3. 点击开始菜单,在运行中输入"miniconda". 根据提示运行 Anaconda Prompt 。

4. 输入以下指令下载并安装 Avatarify :

git clone https://github.com/alievk/avatarify.git
cd avatarify
scriptsinstall_windows.bat

5. 把之前下好的网络权值文件 vox-adv-cpk.pth.tar 放在 avatarify 的目录下 (注意不要解压)。

6. 运行 run_windows.bat 如果安装成功,桌面会打开两个摄像头界面(一个是默认摄像头,一个是 avatarify 摄像头),不要关闭它们进行下一步。

7. 安装 OBS Studio 以抓取 Avatarify 摄像头的内容(主播直播常用的后台软件)。

8. 安装 VirtualCam 插件. 选择 Install and register only 1 virtual camera.

9. 运行 OBS Studio。

10. 点击来源一栏中的“+” —— 窗口捕获 —— 选择添加现有一栏中的 "[python.exe]: avatarify" —— 编辑 —— 转换 —— 自适应屏幕。

11. 在 OBS Studio 中, 点击工具栏 —— VirtualCam,选择自动启动,缓冲帧设置为 0,开始。

现在 OBS-Camera可以在 ZOOM 或其他视频会议软件中使用了。(10-11 步只需要设置一次)

除了 Linux 和 Windows 10 以外,作者还提供了 Mac 操作系统和一种连入 Google 平台的远程测试方法,详情请点击

创建 Avatar 库 

作者在 Avatarify 项目中提供了一组名人的标准化身(爱因斯坦、蒙娜丽莎等),你也可以把其他你想变成的名人的图片素材放到 avatars 文件夹里,但注意要遵循以下规则:

1、人物图片最好为正方形。

2、参考文件夹里的默认图片,人物面部距离不宜太远或太近。

3、人物图片背景不宜太过复杂,单一色调为佳。

运行

先打开 Avatarify 再打开视频会议软件。

Linux

运行脚本指令创建虚拟摄像机 /dev/video9,可在 scripts/settings.sh修改对应配置。

可以运行指令 v4l2-ctl--list-devices 显示系统中的所有设备。

运行:

bash run.sh

弹出 cam 和 avatarify 窗口, cam 窗口用来控制面部位置, avatarify 窗口可以预览 Avatar。

Windows 10

  1. 在 Anaconda Prompt 中运行:
cd C:pathtoavatarify
run_windows.bat
  1. 打开 OBS Studio,此时OBS-Camera上将显示 Avatarify 处理后的人物面部。
  2. 弹出cam 和 avatarify 窗口, cam 窗口用来控制面部位置,avatarify 窗口可以预览 Avatar。

注意:如果视频延迟过高,可以在 OBS Studio 中右键单击“预览”窗口,然后取消选中“启用预览”。

操作指令

按键

功能

1-9

快速切换准备好的 Avatar

Q

打开 StyleGAN 生成的 Avatar,每按下一次新的 Avatar 会被采样

0

开启/关闭 Avatar

A/D

切换上一个/下一个 Avatar

W/S

打开/关闭 ZOOM 摄像头

U/H/J/K

调整摄像头位置, H - 左移, K - 右移, U - 上移, J - 下移 (每次移动 5 像素,与 Shift 键一起按移动 1 像素)。

Shift-Z

重置摄像头位置

Z/C

调整原像透明度

X

重置参考帧

F

切换参考帧搜索模式

R

Mirror reference window.

T

Mirror output window.

L

重新载入 Avatar

I

显示 FPS

ESC

退出

Avatarify 支持任何视频会议应用程序,只要其中的视频输入源可以更改即可(ZOOM、Skype、Hangouts、Slack…)。聪明的朋友已经准备好了吴彦祖的 Avatar,开始和你的朋友视频吧。(当然,前提是你得有个 1080 Ti 以上的显卡)