疫情期间,很多人都在用 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
- 在 Anaconda Prompt 中运行:
cd C:pathtoavatarify run_windows.bat
- 打开 OBS Studio,此时
OBS-Camera
上将显示 Avatarify 处理后的人物面部。 - 弹出
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 以上的显卡)