基于 [PaddleGAN] (https://github.com/PaddlePaddle/PaddleGAN)打造动态照片工具,无论是单人照还是多人合照皆可通用!
fork from: https://aistudio.baidu.com/aistudio/projectdetail/1603391
流程
下载 PaddleGAN
In [1]
# 从 github 上克隆 PaddleGAN 代码 #!git clone https://github.com/PaddlePaddle/PaddleGAN !git clone https://gitee.com/paddlepaddle/PaddleGAN.git %cd PaddleGAN !git checkout develop
In [2]
执行命令
上传自己准备的人脸表情视频和照片(表情视频需要截取脸部区域)。将下面命令中的 source_image 参数和 driving_video 参数分别换成自己的图片和视频路径,然后运行命令,就可以完成表情动作迁移,程序运行成功后,会在
PaddleGAN/applications/output 文件夹生成名为result.mp4 的视频文件,该文件即为表情迁移后的视频。
本项目中提供了原始图片和驱动视频供展示使用。具体的各参数使用说明如下:
- driving_video: 驱动视频,视频中人物的表情动作作为待迁移的对象
- source_image: 原始图片,视频中人物的表情动作将迁移到该原始图片中的人物上
- relative: 指示程序中使用视频和图片中人物关键点的相对坐标还是绝对坐标,建议使用相对坐标,若使用绝对坐标,会导致迁移后人物扭曲变形
- adapt_scale: 根据关键点凸包自适应运动尺度
- ratio:将框出来的人脸贴回原图时的区域占宽高的比例,默认为0.4,范围为【0.4,0.5】
注意,由于人脸检测后,需要将人脸裁剪出来,如果人脸靠得太近,会见到相邻的人脸,导致效果较差。
In [3] 注意这里有个 export 的语句比较关键。
!export PYTHONPATH=$PYTHONPATH:/home/aistudio/PaddleGAN && python -u tools/first-order-demo.py --driving_video ~/work/driving_video.mp4 --source_image ~/work/油画.jpg --ratio 0.4 --relative --adapt_scale
最后一步:使用 moviepy 为生成的视频加上音乐
In [4]
from moviepy.editor import * videoclip_1 = VideoFileClip("/home/aistudio/work/driving_video.mp4") videoclip_2 = VideoFileClip("./output/result.mp4") audio_1 = videoclip_1.audio videoclip_3 = videoclip_2.set_audio(audio_1) videoclip_3.write_videofile("./output/result_with_music.mp4", audio_codec="aac")