社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Crossin的编程教室 • 5 年前 • 573 次点击  


大家好,欢迎来到 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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/113310