MIT虚拟人AI-generated Characters
- 一、项目简介
- 二、原理简介
- 三、代码实现
- 1. 数据准备
- 2. 函数定义
- 3. 人物选择/上传
- 4. 输入驱动选择/上传
- 5. 视频生成
一、项目简介
麻省理工学院媒体实验室(MIT Media Lab)的研究人员开源了一个虚拟角色生成工具。该工具结合了面部、手势、语音和动作领域的人工智能模型,可用于创建各种音频和视频输出,一举登上《Nature Machine Intelligence》。
该项目主要用于音频或视频驱动视频,暂不支持文本驱动视频。主要用于医疗视频或其他视频通话时保护个人隐私视频驱动视频,使著名的历史或现代人栩栩如生。
项目地址:https://github.com/mitmedialab/AI-generated-characters
二、原理简介
- Character :可选择给定模板人物,也可自定义上传人物照片(单张图片)。
- Inputs:可录音,上传音频,以及上传视频。
首先使用 first-order-model 生成动态视频,然后通过 Wav2Lip 生成嘴型。
- 若 Inputs 为音频,则调用案例视频驱动 Character 生成相应的动态视频,然后使用 inference.py 生成嘴型。
- 若 Inputs 为视频,则使用该视频作为驱动生成动态视频,取出视频音轨再合并音视频。
三、代码实现
1. 数据准备
下载 first-order-model & Wav2Lip 以及人物图片。
2. 函数定义
- 定义一些通用函数,比如选择/上传人物照片,记录/上传音频,上传视频,以及定义相关功能函数等。
- 函数 animate_video 定义了,从 first-order-model 项目的 demo.py 文件里导入功能
make_animation,将人物照片和驱动视频缩放至256x256,最后保存动态视频
/content/vidvid.mp4(256x256,30fps)
def animate_video(img_filename, vid_filename):
from demo import make_animation
from demo import load_checkpoints
# Resize image and video to 256x256
source_image=resize(source_image, (256, 256))[..., :3]
driving_video=[resize(frame, (256, 256))[..., :3] for frame in driving_video]
# Make Animation
predictions=make_animation(source_image, driving_video, generator, kp_detector, relative=True,adapt_movement_scale=False)
#save resulting video
imageio.mimsave('/content/vidvid.mp4', [img_as_ubyte(frame) for frame in predictions], fps=30)
3. 人物选择/上传
- 选择模板人物或者自定义上传人物照片(单张图片)。
- 模板人物:[“Van Gogh”, “Mona Lisa”, “Einstein”, “Lincoln”, “Nietzsche”, “Sokrates”]。
- 自定义上传的人物图片必须宽高相等。
4. 输入驱动选择/上传
有三种方式输入驱动,分别是录音,上传音频,和上传视频。
5. 视频生成
首先使用 animate_video 生成动态视频。
- 若前一步骤为音频输入,animate_video 所用的表情驱动为默认案例视频;
- 若前一步骤为视频输入,animate_video 所用的表情驱动则为该视频。
video_driver = "/content/driving_video.mp4"
然后通过 Wav2Lip 生成嘴型。
- 若前一步骤为音频输入,则用 inference.py 生成嘴型。
- 若前一步骤为视频输入,则先取出视频音轨再合并音视频。