蚂蚁的牙是什么颜色的? ~ 黑色的! ~蚂蚁牙黑~ 今年2月,“蚂蚁牙黑”一夜之间风靡各大社交平台,我们看到的视频都是通过手机软件Avatarify制作的,今天来聊一聊Github上Avatarify项目的落地。在动手实现这个项目之前,了解了一下项目环境配置过程,发现很多分享贴都是在Windows环境中实现,所以今天特地在Linux环境中实现。当然,作为shell命令的小白,在项目复现的过程中走了不少弯路,写下这篇博客,记录一下项目复现中的注意事项。
首先贴出项目的GitHub链接:GitHub - alievk/avatarify-python: Avatars for Zoom, Skype and other video-conferencing apps.
此项目可以在Linux, Mac和 Windows平台下运行,作者在README.md 中详细给出了配置步骤。由于在环境配置的过程中,还涉及到模型权重、虚拟摄像机、一阶运动模型等的下载,所以需要为这个项目留出3G的空间。
一、项目和相关依赖的下载:
1. 下载Minaconda(Anaconda也可以)
因为install.sh文件中要创建的Python环境是3.7版本的,所以我们选择下载Python-3.7对应的Miniconda,下载地址:Miniconda — Conda documentation
我们选择第一个下载,下载好的Miniconda是一个名为.sh的文件。接下来,我们通过bash命令来安装下载好的Miniconda。
bash Miniconda3-latest-Linux-x86_64.sh
我们下载的Miniconda文件名为 :Miniconda-py37_4.10.3-Linux-x86_64.sh,所以我们在终端中需要输入的命令是:
bash Miniconda-py37_4.10.3-Linux-x86_64.sh
Miniconda的安装过程只需要一路回车就可以,如果想要自己设置安装路径,可以自行百度。
2. 克隆avatarify-python项目并安装该项目的依赖项
项目克隆可以去GitHub网站上手动下载,亦可以通过终端命令来下载;
git clone https://github.com/alievk/avatarify-python.git
cd avatarify-python
bash scripts/install.sh
这里需要强调几点,首先我们先看一下install.sh文件里的内容:
#!/usr/bin/env bash
# check prerequisites
command -v conda >/dev/null 2>&1 || { echo >&2 "conda not found. Please refer to the README and install Miniconda."; exit 1; }
command -v git >/dev/null 2>&1 || { echo >&2 "git not found. Please refer to the README and install Git."; exit 1; }
source scripts/settings.sh
# v4l2loopback
if [[ ! $@ =~ "no-vcam" ]]; then
rm -rf v4l2loopback 2> /dev/null
git clone https://github.com/alievk/v4l2loopback.git
echo "--- Installing v4l2loopback (sudo privelege required)"
cd v4l2loopback
make && sudo make install
sudo depmod -a
cd ..
fi
source $(conda info --base)/etc/profile.d/conda.sh
conda create -y -n $CONDA_ENV_NAME python=3.7
conda activate $CONDA_ENV_NAME
conda install -y numpy==1.19.0 scikit-image python-blosc==1.7.0 -c conda-forge
conda install -y pytorch==1.7.1 torchvision cudatoolkit=11.0 -c pytorch
# fomm
rm -rf fomm 2> /dev/null
git clone https://github.com/alievk/first-order-model.git fomm
pip install -r requirements.txt
在执行install.sh过程中,我们需要下载两个文件夹:v4l2loopback和fomm。其中,v4l2loopback是虚拟摄像机,利用摄像机就可以播放摄像机本身存储的视频;fomm(first-order-model-master)是一阶运动模型。GitHub网站在国内只是间歇性有响应,如果只通过bash scripts/install.sh这一条命令就像下载好所有依赖,需要进行多次尝试,而且中间有很长的等待时间,为了使项目运行的更顺畅,我们换另外一种办法:
(1).下载 v4l2loopback-master和first-order-model-master文件夹并解压;
(2). 将v4l2loopback-master文件夹重命名为v4l2loopback;
(3). 将first-order-model-master文件夹重命名为fomm;
(4). 将v4l2loopback和fomm文件夹移动到avatarify-python文件下;
3. 下载驱动模型权重:vox-adv-cpk.pth.tar
下载好的压缩包不需要解压,同样将其移动到avatarify-python文件夹中。至此,所有的东西已经下载完毕,avatarify-python文件夹中的内容见下图:
所有的依赖下载完成后,我们只需要激活conda,创建Python环境,下载conda和Python依赖的包,我们的install.sh文件就可以修改为如下代码段展示的形式:
#!/usr/bin/env bash
# check prerequisites
command -v conda >/dev/null 2>&1 || { echo >&2 "conda not found. Please refer to the README and install Miniconda."; exit 1; }
command -v git >/dev/null 2>&1 || { echo >&2 "git not found. Please refer to the README and install Git."; exit 1; }
source scripts/settings.sh
echo "--- Installing v4l2loopback (sudo privelege required)"
cd v4l2loopback
make && sudo make install
sudo depmod -a
cd ..
source $(conda info --base)/etc/profile.d/conda.sh
conda create -y -n $CONDA_ENV_NAME python=3.7
conda activate $CONDA_ENV_NAME
conda install -y numpy==1.19.0 scikit-image python-blosc==1.7.0 -c conda-forge
conda install -y pytorch==1.7.1 torchvision cudatoolkit=11.0 -c pytorch
pip install -r requirements.txt
4. 测试环境,下载conda和Python依赖的包
我们来到avatarify-python文件夹下,打开终端,键入如下命令:
bash scripts/install.sh
等所有的包下载完毕,我们就可以运行该项目,不要关闭终端。
二、运行
1. 项目的首次运行(下载依赖的终端从未关闭过):
在下载好所有环境依赖的终端中,键入如下代码:
bash run.sh
项目开始运行后,首先会弹出cam窗口,按下键盘上的数字“0”后,弹出avatarify窗口,会发现,此时,cam和avatarify窗口中都是摄像机记录的人脸,要想驱动avatars文件夹中的人脸,我们需要按“X”,之后,数字1-9可以切换目标人脸。avatarify在avatars文件夹中已经自带了一套名人头像,有爱因斯坦、艾米纳姆、蒙娜丽莎等等。如果这些人还无法满足你的要求,就去网上再找一个名人大头照放进avatars文件夹里。
操作指令
按键 | 功能 |
1-9 | 快速切换好准备好的avatar |
Q | 打开styleGAN生成的avatar,每按下一次采样新的avatar |
0 | 开启/关闭avatar |
A/D | 切换上一个/下一个avatar |
W/S | 打开/关闭ZOOM摄像头 |
U/J/H/K | U/J-上/下,H/K-左/右(每次移动5像素,与shift一起按移动1像素) |
shift+Z | 充值摄像头位置 |
Z/C | 调整原透明度 |
X | 重置参考帧 |
F | 切换参考帧搜索模式 |
R | 镜像参考窗口 |
T | 镜像输出窗口 |
L | 重新载入avatar |
I | 显示FPS |
ESC | 退出 |
2. 再次运行avatarify项目:
在第一次运行完后,我们运行人脸驱动项目需要的所有依赖都已经安装完成,之后再运行人脸驱动项目,我们就无需按照README.md的指示操作了,所以运行指令可以精简为:
cd avatarify-python
source scripts/settings.sh
source $(conda info --base)/etc/profile.d/conda.sh
conda activate $CONDA_ENV_NAME
bash run.sh
avatarify 支持任何视频会议应用程序,只要其中的视频输入源可以更改即可(ZOOM、Skype、Hangouts、Slack…)。(当然,前提是你得有个 1080 Ti 以上的显卡)