点赞再看,养成习惯,微信公众号搜索【JackCui-AI】关注这个爱发技术干货的程序员。本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,有一线大厂面试完整考点、资料以及我的系列文章。
1 前言
让一张图片,动起来,应该怎么做?
DeepFake 一阶运动模型,让万物皆可动。
利用这项技术,用特朗普和蒙娜丽莎的图片,合唱一首《Unravel》,是什么效果?
今天,它来了!
https://www.bilibili.com/vide...
今天,继续手把手教学。
算法原理、环境搭建、效果实现,一条龙服务,尽在下文!
2 算法原理
First Order Motion,也就是一阶运动模型,来自 NeurIPS 2019 论文。
「First Order Motion Model for Image Animation」
论文最初的目的是让「静态图片」动起来。如下图所示:“你动,它也动”。
这个模型可以轻易地让「权利的游戏」中的人物模仿特朗普进行讲话,还可以让静态的马跑起来等。
一阶运动模型的思想是用一组自学习的关键点和局部仿射变换来建立复杂运动模型。
模型由运动估计模块和图像生成模块两个主要部分组成。
首先进行关键点检测,然后根据关键点,进行运动估计,最后使用图像生成模块,生成最终效果。
在运动估计模块中,该模型通过自监督学习将目标物体的外观和运动信息进行分离,并进行特征表示。
而在图像生成模块中,模型会对目标运动期间出现的遮挡进行建模,然后从给定的图片中提取外观信息,结合先前获得的特征表示,生成图片。
作者使用该算法在四个数据集上进行了训练和测试。
VoxCeleb 数据集、UvA-Nemo 数据集、The BAIR robot pushing dataset、作者自己收集的数据集。
其中,VoxCeleb 是一个大型人声识别数据集。
它包含来自 YouTube 视频的 1251 位名人的约 10 万段语音,同时数据基本上是性别平衡的(男性占 55%),这些名人有不同的口音、职业和年龄。
First Order Motion 利用了这个数据集的视频图像,进行了模型训练。
我们就可以利用这个训练好的,人脸的运动估计模型,完成我们今天的任务。
「特朗普和蒙娜丽莎的深情合唱」。
除了需要用到这个一阶运动模型,还需要使用 OpenCV 和 ffmpeg 做视频、音频和图像的处理。
具体的实现,在下文的「效果实现」中说明。
3 环境搭建
效果实现上,我们可以直接用已有的库去实现我们想要的功能。
「Real Time Image Animation」
项目地址:
https://github.com/anandpawar...\_Time\_Image\_Animation
Python 为什么这么受欢迎,就是因为这一点。
有很多开源项目,方便我们快速实现自己想要的功能,极大降低了开发成本。
真是,谁用谁知道啊。
环境搭建,还是建议使用 Anaconda,安装一些必要的第三方库,可以参考这篇开发环境搭建的内容:
《Pytorch深度学习实战教程(一):语义分割基础与环境搭建》
这个项目需要用到的第三方库,也都写的很全:
https://github.com/anandpawar...\_Time\_Image\_Animation/blob/master/requirements.txt
直接使用 pip 安装即可:
python -m pip install -r requirements.txt
此外,为了处理音频和视频,还需要配置 ffmpeg。
安装好 ffmpeg 并配置好环境变量即可。
ffmpeg 下载地址:
https://ffmpeg.zeranoe.com/bu...
4 效果实现
实现也非常简单。
首先,整理一下思路:
「Real Time Image Animation」使用一阶运动模型,根据已有视频,让静态图动起来。
左图为原始图片,中间为生成结果,右侧为原始视频。
但是,这个项目只能处理图像,不能保留音频。
所以,我们需要先将音频保存,再将处理好的视频和音频进行合成。
这个功能,就用我们下载好的 ffmpeg 实现。
编写如下代码:
import subprocess
搞定,视频转音频,以及音频合成都搞定了。
我们需要对「Real Time Image Animation」这个项目进行修改,修改 image\_animation.py 文件。
import imageio
然后下载算法需要的权重文件和视频图片素材。
修改好的代码、权重文件、视频图片素材,我都已经打包好了,拿来直接用也可以。
下载链接(密码:amz5):
https://pan.baidu.com/s/1TEd7...
运行命令:
python image_animation.py -i path_to_input_file -c path_to_checkpoint -v path_to_video_file
path\_to\_input\_file 是输入的模板图片。
path\_to\_checkpoint 是权重文件路径。
path\_to\_video\_file 是输入的视频文件。
如果使用我打包好的程序,可以使用如下指令直接运行,获得文章开头的视频:
python image_animation.py -i Inputs/trump2.png -c checkpoints/vox-cpk.pth.tar -v 1.mp4
最后生成的视频存放在 output 文件夹下。
大功告成!
5 最后
算法处理视频的速度很快,用 GPU 几秒钟就能搞定。
我还生成了 PDD 演唱《Unravel》版,最后再回味一下。
兄弟,我裂开了呀!
作者:Jack Cui
原文:https://mp.weixin.qq.com/s/Cy...
关注作者公众号,获取更多有趣AI应用~
系列篇
更多AIoT领域有趣的算法应用及产品请关注有趣的AIoT应用专栏。