Python+AI实现视频动态特效,编程语言之父们齐唱「蚂蚁呀嘿」

Crossin的编程教室

共 2626字,需浏览 6分钟

 ·

2021-04-29 06:10



大家好,欢迎来到 Crossin的编程教室 !


前阵子在抖音上看到很多「蚂蚁呀嘿」的魔性视频,各种角色齐齐上阵。


刚好看到百度的开源项目,基于PaddleGAN实现表情迁移,于是也来玩一把!


先来看一下最终效果,各大编程语言的创始人齐唱「蚂蚁呀嘿」!



没配音,感觉不是很精彩?别着急,后面上视频。


那么需要如何实现呢,下面就来手把手教学。


项目地址:

https://aistudio.baidu.com/aistudio/projectdetail/1586056


注意:目前该项目适合在Windows和Linux上操作,Mac在调用ffmpeg这一步会出错。


不知道是不是和mac不支持gpu安装paddlepaddle有关系。



首先将PaddleGAN的源码从gitee上下载下来。


# 从gitee上克隆PaddleGAN代码
git clone https://gitee.com/paddlepaddle/


没有安装git的小伙伴,在公众号回复「蚂蚁呀嘿」就可以获取到文件。


下载解压后,我们将PaddleGAN文件夹放置你的代码目录中。我这里用的是PyCharm,那么就是放在建好的项目文件夹里。



打开PyCharm项目的虚拟环境,进行相关库的安装操作。(注意你安装的环境和你项目使用的环境务必是要一致的)


# 终端打开文件夹
cd PaddleGAN

# 安装相关依赖
pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
pip install imageio-ffmpeg -i https://mirror.baidu.com/pypi/simple


终端打开文件夹,安装所需要的依赖。


毕竟是百度的开源项目,所以使用了百度的pip源,速度真的很快。


下面再创建一个输出文件夹,生成的视频会保存在这里。


# 打开文件夹
cd applications/

# 新建文件夹
mkdir output


最后还需要安装百度的paddlepaddle和paddlehub。


paddlepaddle是基础,而paddlehub则是用来检测人脸用的。


将「输入图片」中的所有人脸检测出来,然后使用PaddleGAN对每个人脸进行表情迁移,最后生成视频。


# 安装库
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
pip install paddlehub -i https://mirror.baidu.com/pypi/simple


下面就可在终端运行如下命令。


export PYTHONPATH=$PYTHONPATH:../PycharmProjects/mayiyahei/PaddleGAN && python -u tools/first-order-demo.py  --driving_video ../PycharmProjects/mayiyahei/MaYiYaHei.MP4  --source_image ../PycharmProjects/mayiyahei/input.jpeg --relative --adapt_scale


其中,“../”处应该修改成为你自己的路径。


命令行参数说明如下。


driving_video: 驱动视频,视频中人物的表情动作作为待迁移的对象。

source_image: 原始图片,视频中人物的表情动作将迁移到该原始图片中的人物上 。

relative: 指示程序中使用视频和图片中人物关键点的相对坐标还是绝对坐标,建议使用相对坐标,若使用绝对坐标,会导致迁移后人物扭曲变形。

adapt_scale: 根据关键点凸包自适应运动尺度。



此处,大家可以使用自己设计的图片,生成你想要的视频。


比如我的原始图片input.jpeg,就是编程创始人集合照,如下图。



对于其他的视频特效,就需要更改驱动视频,即修改driving_video。


另外生成的视频是不带声音的,所以需要使用FFmpeg将视频与音频进行合并。


频和频合并
ffmpeg -i MaYiYaHei.mp4 -i MYYH.mp3 -vcodec copy -acodec copy result.mp4


最终实现项目的视频效果如下。



如果你想生成GIF,分享给其他人,比如整蛊你的好朋友


同样可以使用FFmpeg生成GIF。


# 生成GIF
ffmpeg -ss 0 -t 8 -i result.mp4 -s 600*400 -r 15 result.gif


需要设定视频截取时间及GIF图像大小。



总结


好了,到此本期的任务就完成啦。由于使用了强大的AI库,因此没有什么需要自己写的代码,感兴趣的同学不妨自己动手试一试。


这里需要注意,在使用PaddleGAN对人脸进行动作表情迁移,这期间耗费的时间比较多,慢慢等就好了。


相关文件已上传,获取请在公众号对话内回复 蚂蚁呀嘿


如果文章对你有帮助,欢迎转发/点赞/收藏~

作者:小F
来源:法纳斯特


_往期文章推荐_

Python+OpenCV十几行代码模仿世界名画




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

浏览 62
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报