“从单一图像创建会说话的动画头像”演示代码
您可能希望查看同一软件功能更强的版本2:http://github.com/pkhungurn/talking-head-anime-2-demo
此仓库包含 “从单一图像创建会说话的动画头像” 项目中使用的神经网络系统的两个应用程序代码:
- 手动摆姿器允许用户通过手动操控滑块来摆动画角色的姿势。
- 木偶控制器使动画角色模仿由网络摄像头捕获的人类头部运动。
在Google Colab上试用手动摆姿器
如果您没有所需的硬件(下文讨论)或不想下载代码并设置运行环境,请点击在Google Colab上试运行手动摆姿器。
硬件要求
如同许多用PyTorch编写的现代机器学习项目,这段代码需要一台最近发布的强大Nvidia GPU才能运行。我个人在Geforce GTX 1080 Ti和Titan RTX上运行过这段代码。
另外,木偶控制器工具需要一个网络摄像头。
依赖项
- Python >= 3.6
- pytorch >= 1.4.0
- dlib >= 19.19
- opencv-python >= 4.1.0.30
- pillow >= 7.0.0
- numpy >= 1.17.l2
如果您安装了这些软件包,应该就可以运行了。
使用 Anaconda 重建 Python 环境
如果您使用Anaconda,您还可以选择重建可以运行演示的Python环境。打开一个shell并切换到项目的根目录。然后,运行以下命令:
conda env create -f environment.yml
这应该会下载并安装所有的依赖项。但请记住,这将需要几个GB的存储空间。安装完成后,您可以使用以下命令激活新环境:
conda activate talking-head-anime
完成后,您可以使用以下命令停用该环境:
conda deactivate
准备数据
将此存储库克隆到您的机器存储后,您需要下载模型:
- 从此链接下载主模型。将文件解压到项目根目录下的
data
文件夹中。模型依据知识共享署名 4.0 国际许可协议单独发布。 - 下载
shape_predictor_68_face_landmarks.dat
并将其保存到data
目录。您可以从这里下载bzip压缩包。不要忘记解压。
下载完成后,数据目录应如下所示:
+ data
+ illust
- placeholder.txt
- waifu_00_256.png
- waifu_01_256.png
- waifu_02_256.png
- waifu_03_256.png
- waifu_04_256.png
- combiner.pt
- face_morpher.pt
- placeholder.txt
- shape_predictor_68_face_landmarks.dat
- two_algo_face_rotator.pt
要体验演示,您可以使用我包含在 data/illust
中的5个图像。或者,您可以自行准备一些角色图像。可以被动画化的图像必须满足以下要求:
- 必须是PNG格式。
- 尺寸必须为256x256。
- 角色的头部必须位于中心128x128的方框内。
- 必须有4个通道(RGBA)。
- 不属于角色身体的像素必须值为(0,0,0,0)。换句话说,背景必须是透明的。
更多详情,请参考项目网站写作部分的第4章。您应将所有图像保存到 data/illust
目录。获取角色图像的一个好方法是用Waifu Labs生成图像并编辑以符合上述要求。
运行程序
切换到项目的根目录。要运行手动摆姿器,在shell中执行以下命令:
python app/manual_poser.py
要运行木偶控制器,在shell中执行以下命令:
python app/puppeteer.py
引用
如果您的学术工作受益于此存储库中的代码,请按以下方式引用项目网页:
Pramook Khungurn. 从单一图像创建会说话的动画头像. http://pkhungurn.github.io/talking-head-anime/, 2019. 访问日期:YYYY-MM-DD。
您也可以使用以下BibTex条目:
@misc{Khungurn:2019,
author = {Pramook Khungurn},
title = {从单一图像创建会说话的动画头像},
howpublished = {\url{http://pkhungurn.github.io/talking-head-anime/}},
year = 2019,
note = {访问日期:YYYY-MM-DD},
}
免责声明
虽然作者是Google日本的员工,但此软件并非Google的产品,也不受Google支持。
我已经使用IARC流程申请了此软件的版权。然而,发布此源代码的一个条件是“从单一图像创建会说话的动画头像”的公开发布须得到内部发布审批流程的批准。我于2019/11/17申请了审批。它已经由研究人员审核,但未正式获得我所在产品领域(Google Maps)经理的批准。我决定发布此代码,承担可能产生的所有风险。
我使用了KwanHua Lee 实现的脸部跟踪代码来实现木偶控制器工具。