点击上方“AI算法与图像处理”,选择加"星标"或“置顶”
重磅干货,第一时间送达
导读
Hi,大家好,今天是周末,今天给各位读者分享最近很火的视频特效。
将会依据现有的demo,一步步去分析原理,并最终实现。
思路简介
首先看一下目标效果(下面放的是 gif,我们需要的是视频,需要添加背景音乐)
明确目标之后,接下来就是进一步去分解具体的技术实现。
参考网上的实现方法:
采用APP
Avatarify
Avatarify
操作步骤:
打开这款软件Avatarify,选择一张照片即可进入选择特效页面
即:需要一张图片 +一个想要的特效视频
具体的原理:
让一张照片动起来,人脸跟着音乐一起挤眉弄眼,需要一个叫做一阶运动模型(First Order Motion Model)来搞定。
技术原理借鉴了去年意大利特伦托大学的一项研究,入选了NIPS 2019。
当时的例子是这样的。
当然上面的操作仅仅只能用于画面的特效,没有声音,因此,我们需要添加声音,同时如果想要分享到朋友圈的话,还需要一定的处理将视频的编码格式变成H264。
下面我将一步步操作
详细教程
1、克隆项目并配置环境 项目连接:
https://github.com/anandpawara/Real_Time_Image_Animation
本文所有操作均在ubuntu 20.04 下操作,如需windows或mac下操作,请自行搜索相应的解决方案
1)从 github 克隆项目
git clone git@github.com:anandpawara/Real_Time_Image_Animation.git
2)配置环境 pip install -r requirements.txt
报错:ERROR:Couldnotfindaversionthatsatisfiestherequirementpywin32==227 ERROR:Nomatchingdistributionfoundforpywin32==227
暂时不处理 !!!
从requirements.txt中删除掉之后,再次运行上面的语句或者运行代码尝试缺少哪些包
运行代码
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 是输入的视频文件(含动作的视频文件)
pythonimage_animation.py-iInputs/Monalisa.png-ccheckpoints/vox-cpk.pth.tar-v1.mp4
如果运行成功,最后生成的视频存放在 output 文件夹下。
当然由于上述环境安装问题,导致会报错 :
Nomodulenamed'tqdm'
Nomodulenamed'imageio'
Nomodulenamed'skimage'
Nomodulenamed'sklearn'
Nomodulenamed'pandas'
Nomodulenamed'yaml'
Nomodulenamed'cv2'
这是常见问题,缺失必要的包,但在国内安装的时候,如果直接 pipinstall 进行安装可能会存在网速太慢的问题,导致失败或者浪费了大量的时间,可以考虑换源或指定源的方式来快速下载
这里给出指定源的方法
参考:https://www.cnblogs.com/flintlovesam/p/12833652.html
例如想要安装imageio,在后面添加 -i +源 即可
pip install imageio -i https://mirrors.aliyun.com/pypi/simple/
同样的问题,这里用到了 pytorch,国内安装也会遇到上述的问题,这里也采用指定源的方式解决 (安装 GPU 版本 pytorch, 版本 1.5.0)
pipinstalltorch===1.5.0+cu101torchvision===0.6.0+cu101-fhttps://download.pytorch.org/whl/torch_stable.html-ihttps://pypi.douban.com/simple/some-package
注意:这里我的是cuda版本是10.1,大家根据自己的情况进行调整 如果安装速度慢,可以考虑换源或以制定源的方法安装
参考:https://blog.csdn.net/qq_36414085/article/details/106369314
上诉操作成功后,再次运行,此时 output文件夹下即有结果出来
python image_animation.py -i Inputs/Monalisa.png -c checkpoints/vox-cpk.pth.tar -v 1.mp4
上述的操作,就这个项目能实现的基本功能,实现动作迁移,下面我们将对进行一些修改来达到我们的最终目标!
大致内容:
1)画面修改
2)添加背景音乐
3)视频格式转换
优化
1)画面修改
存在的问题:
1、帧数问题:
素材帧数-15 FPS
生成的视频结果的设置帧数 为 12 FPS 会导致音画不同步
2、画面尺寸问题:
由于这个项目的作者将最终的显示结果设置为
原图--生成视频--原始视频 的结果形式,
而我们最终只想要 生成的视频,所以还需要进行一定的修改(从256*3,256)变成(256,256)
具体修改
# 文件 image_animation.py#第50行# out1 = cv2.VideoWriter('output/test.avi', fourcc, 12, (256*3 , 256), True)#修改输出视频格式帧数和视频输出的尺寸out1=cv2.VideoWriter('output/test.avi',fourcc,15,(256,256),True)
同时修改保存的结果:
# 文件 image_animation.py# 重点关注joinedFrame = np.concatenate((cv2_source,im,frame1),axis=1) cv2.imshow('Test',joinedFrame)out1.write(img_as_ubyte(joinedFrame))# 修改成out1.write(img_as_ubyte(im))
备注:
获取视频帧数的方法
import cv2cap = cv2.VideoCapture("test.avi")print(cap.get(cv2.CV_CAP_PROP_FPS )
参考https://zhuanlan.zhihu.com/p/56571623
2)添加背景音乐
这里需要安装moviepy 包
pip install moviepy
如果遇到问题可以考虑下面的处理方法
sudopipinstallez_setuppip install --user moviepy -ignore-installed -i https://mirrors.aliyun.com/pypi/simple/
参考:https://blog.csdn.net/weixin_38636815/article/details/106539049
https://blog.csdn.net/qq_43058685/article/details/104221009
添加背景音乐
from moviepy.editor import *video_path='test.avi'audio_path = 'test.wav'video = VideoFileClip(video_path)audio_clip = AudioFileClip(audio_path)video = video.set_audio(audio_clip)video.write_videofile('result-myyh.mp4')
3)视频格式转换
安装ffmpeg
微信:不能分享这种格式(MP4)的视频的问题原因以及解决方案 上传H.264编码格式的MP4视频,否则借助第三方转换软件转换成H.264编码格式的MP4视频即可。ffmpeg
https://jingyan.baidu.com/article/27fa732646092846f9271f71.html (安装教程)https://zhuanlan.zhihu.com/p/200783234
ffmpeg-iresult-myyh.mp4-vcodeclibx264-fmp4result.mp4
上述代码在终端中运行,将result-myyh.mp4 生成我们需要的编码格式视频文件result.mp4 (外放的话注意音量哦)
总结
本文详细分析,并一步步拆解现有的方案,最终实现的效果如上所示,所有相关的代码已放在公众号后台,回复“视频特效”即可获取
感谢看到这里的小伙伴,希望能给个三连支持一下,周末还在加班的打工人!下期见
参考文献:
https://github.com/anandpawara/Real_Time_Image_Animation
https://www.cnblogs.com/flintlovesam/p/12833652.html
https://blog.csdn.net/qq_36414085/article/details/10636931
https://blog.csdn.net/weixin_38636815/article/details/106539049
https://blog.csdn.net/qq_43058685/article/details/104221009
https://jingyan.baidu.com/article/27fa732646092846f9271f71.html
https://github.com/opencv/opencv-python/issues/100
http://www.blogdaren.com/post-2592.html
https://zhuanlan.zhihu.com/p/200783234
个人微信(如果没有备注不拉群!)请注明:地区+学校/企业+研究方向+昵称下载1:何恺明顶会分享在「AI算法与图像处理」公众号后台回复:何恺明,即可下载。总共有6份PDF,涉及 ResNet、Mask RCNN等经典工作的总结分析下载2:终身受益的编程指南:Google编程风格指南在「AI算法与图像处理」公众号后台回复:c++,即可下载。历经十年考验,最权威的编程规范!下载3 CVPR2020在「AI算法与图像处理」公众号后台回复:CVPR2020,即可下载1467篇CVPR2020论文觉得不错就点亮在看吧