社区所有版块导航
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实现火爆全网的「蚂蚁呀嘿」视频特效!

CDA数据分析师 • 4 年前 • 447 次点击  

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

最近小F在抖音上看到很多「蚂蚁呀嘿」的魔性视频,各方大佬齐齐上阵。


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


先来看一下小F的成果,各大编程创始人齐唱「蚂蚁呀嘿」文末有动态视频。



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


项目地址:

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的小伙伴先自行百度安装git。


下载解压后,小F是将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图像大小。



总结


好了,到此本期的实践就结束了。

相关代码及文件已上传,公众号回复「蚂蚁呀嘿」即可获取


感兴趣的小伙伴也可以动手试一试。


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



—  —

点这里👇关注我,记得标星哦~


 

推荐阅读


 

CDA课程咨询

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/108466
 
447 次点击