Avatarify-人脸驱动项目在Linux环境中的实现
蚂蚁的牙是什么颜色的? ~ 黑色的! ~蚂蚁牙黑~ 今年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" ]]; thenrm -rf v4l2loopback 2> /dev/nullgit clone https://github.com/alievk/v4l2loopback.gitecho "--- Installing v4l2loopback (sudo privelege required)"cd v4l2loopbackmake && sudo make installsudo depmod -acd ..
fisource $(conda info --base)/etc/profile.d/conda.sh
conda create -y -n $CONDA_ENV_NAME python=3.7
conda activate $CONDA_ENV_NAMEconda 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 fommpip 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.shecho "--- 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_NAMEconda 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 pytorchpip 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 以上的显卡)
Avatarify-人脸驱动项目在Linux环境中的实现相关推荐
- java项目在linux环境中赋予新建文件777权限
一.使用java file类的方法 1. setExecutable设置可执行权限 1) setExecutable(boolean executable) 查看源码: public boolean ...
- 理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术
本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...
- Linux环境中对海康威视工业相机SDK进行二次开发(QT+CMake+Opencv+海康SDK)
关于在Windows环境中对海康威视工业相机SDK进行二次开发的话,可以参考这两篇博客. 海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一) 海康威视工业相机SDK二 ...
- Java项目在Linux环境使用aspose把word转pdf乱码问题
Java项目在Linux环境使用aspose把word转pdf乱码问题 一.问题 在项目中有word转pdf并展示的功能,在本地的windows环境下没有问题.但是放在Linux中部署运行,生成的pd ...
- linux环境中QT程序连接达梦数据库DM7简介
linux环境中QT程序连接达梦数据库DM7简介 一.安装UnixODBC 1.下载UnixODBC安装包 下载地址:ftp://ftp.unixodbc.org/pub/unixODBC/unixO ...
- python27怎么安装thrift解压包_Python在Linux环境中安装Thrift
1.文件下载:thrift-0.11.0.tar.gz 个人网盘下载:链接:https://pan.baidu.com/s/1MXgx8LuN4wk7ssVUD9Wzaw 提取码:xw85 2. 将 ...
- linux qt 达梦,linux环境中QT程序连接达梦数据库DM7简介
linux环境中QT程序连接达梦数据库DM7简介 一.安装UnixODBC 1.下载UnixODBC安装包 下载地址:ftp://ftp.unixodbc.org/pub/unixODBC/unixO ...
- Linux环境中Visual Studio Code的配置使用----编译运行C/C++(良心教程)
之前的博文分享了下载安装[VS code]的详细教程, 有需要速戳–>Linux环境中Visual Studio Code 安装配置及其卸载(详细教程) 本篇博文分享本人初次使用[VS code ...
- Linux环境中Visual Studio Code 安装配置及其卸载(详细教程)
两篇相关博文: 在VMware15中创建虚拟机安装ubuntu系统(超详细教程) Linux环境编译运行C/C++语言程序----配置gcc.g++(详细教程) 此篇分享我在linux环境下安装VS ...
最新文章
- c#读取excel两列数据并绘制xy曲线_EXCEL绘制三Y轴图表
- Yahoo!网站性能最佳体验的34条黄金守则
- mysql delete删除列,在MySQL中删除我的Key列 (Delete my Key column in MySQL)
- VMware Workstation Pro 14.1.1 正式版
- Javascript 引擎工作机制(js层面梳理)
- ajax jquery php_基于Ajax jquery的使用php登录
- 在同一个类中调用另一个方法没有触发 Spring AOP 的问题
- C语言main函数的参数及其返回值详细解析
- idea 设置author 设置黑色主题
- java生成exe_java生成可执行文件的方法总结
- 使用Word制作签名电子版
- 卸载 mysql 2008_强力卸载SQL Server 2008图文详解
- java导出乱码_导出文件乱码问题处理(java)
- 耳鸣头晕是怎么回事?
- CVE-2020-5135:SonicOS缓冲区溢出漏洞通告
- [转载]别让用户发呆—设计中的防呆策略
- win10系统修改hosts文件无法保存
- 【Java 代码实例 13】Java操作pdf的工具类itext
- [Render] 适用于高级Unity创作者的通用渲染管线[4] - URP中的光照
- 存储卡、逻辑加密卡和CPU卡的相关知识
热门文章
- 盛大文学云中书城zz
- 强智教务JAVA/PHP模拟登录 密码JavaScript脚本encodeInp()加密算法破解
- 二级路由器设置,二级路由器无法上网
- 融云对接php,谈谈微信小程序中首次对接融云WebIM SDK经验
- 小程序商城制作一个需要多少钱
- hive大数据量实现分页查询,java结合mybatis及多数据源(hive、MySQL)
- Android 利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)
- Vijos1197 费解的开关 枚举+位运算
- qq2007服务器中断,自动重启pubwin2007服务器脚本
- MediaCodec之Decoder