稳定视频抠像 (Robust Video Matting,RVM)[1],专为稳定人物视频抠像设计!
图1 抠像效果
回想我第一次看见论文效果的时候,是在B站偶然浏览到效果展示视频,效果简直惊为天人,原来视频抠图还能这样玩!这不就是把《黑客帝国》开始大热的绿幕/蓝幕拍摄技术普及到人人都可以操作的地步了么!人人都可以圆大导演的梦啦!当时就暗暗定下一个小目标:一定要复现出飞桨框架的代码实现版本!秋收冬藏,尔来有二十有一周矣。
不经历风雨怎能见彩虹,作为一个视频抠像小白,从零开始复现一个CVPR最佳论文(提名)的作者的新作,即使只是用飞桨框架复现,过程也是充满曲折和坎坷。最终复现成功,看到自己的视频背景成功抠除的时候,简直激动的要跳起来。
开源模型地址
感兴趣的小伙伴可以star收藏
//点击阅读原文一键GET//
https://github.com/skywalk163/RobustVideoMatting/tree/PaddlePaddle
项目详解
如何把大象放进冰箱里?对不起,走错片场了。使用普通录像设备,视频如何像电影大片一样绿幕抠图,只需要三步。
STEP1:fork项目,然后运行
AI Studio上的项目地址:
https://aistudio.baidu.com/aistudio/projectdetail/3513358
点一下右上角的fork按钮即可一键fork并执行。运行环境建议选高级版或至尊版,有NvidiaTesla(特斯拉)V100的GPU的支持,动力强劲,让我们的视频处理速度更快!
STEP2:上传素材
点击左侧的上传按钮上传素材。建议使用室外明亮光线下拍摄的视频,抠图效果会更好。AI Studio有上传限制,较大的视频可以采用数据集挂载的方式传入。
广告时间:飞桨AI Studio数据集系统已经打通百度网盘上传通道了,可以直接从百度网盘上传。
STEP3:执行
将上传的视频文件修改名字为dance.mp4 ,然后直接执行下面两段代码。纯白新手不熟悉AI Studio CodeLab系统操作的朋友,直接在菜单选择“运行” - “运行所有单元格” 即可。
安装相关包, ipywidgets安装好之后若继续报错则要重启内核
代码语言:javascript复制!pip install av tqdm pims ipywidgets
- 下面是见证奇迹的时刻!
import paddle
from model import MattingNetwork
from inference import convert_video
model = MattingNetwork('resnet50')
model.set_state_dict(paddle.load("rvm_resnet50.pdparams"))
convert_video(model,
input_source='dance.mp4',
output_type='video',
output_composition='com.mp4',
output_alpha="pha.mp4",
output_foreground="fgr.mp4",
output_video_mbps=4,
downsample_ratio=None,
seq_chunk=1)
参数注解
-model: 模型
-input_source='dance.mp4': 视频文件,或图片序列文件夹
-output_type='video': 可选 "video"(视频)或 "png_sequence"(PNG 序列)
-output_composition='com.mp4': 若导出视频,提供文件路径。若导出 PNG 序列,提供文件夹路径
-output_alpha="pha.mp4":[可选项] 输出透明度预测
-output_foreground="fgr.mp4":[可选项] 输出前景预测
-output_video_mbps=4: 若导出视频,提供视频码率
-downsample_ratio=None: 下采样比,可根据具体视频调节,或 None 选择自动
-seq_chunk=1: 设置多帧并行计算
运行后稍微等待一下,普通清晰度的视频,转换时间跟播放时间差不多,很快视频就会转换完成,转换后的文件名为:com.mp4,直接下载到本地观看即可!
上传各种视频进行抠图处理,看看都有什么惊喜?
对于会改python代码的朋友,如果不想改上传视频文件的名字,可修改上面代码中的input_source参数,将这部分input_source='dance.mp4',里面的dance.mp4修改成自己上传的视频文件名即可。
恭喜,又一位大导演诞生了!
现在我们跟国际大导演站在同一条起跑线上,后面比的就是创意了!
大家有什么创意,可以在评论区交流~
测试中我将一个妹子的视频叠加上蓝天白云,实现了在天空中跳舞的效果(侵删),也算圆了我小时候的西游记之梦!视频在AI Studio项目里,需要进入到项目里面才能看到,抠图效果略有不足,如果能用室外光线拍摄,效果会好些。
这个抠像项目,了解下,王多鱼投不?
项目简介
RVM(Robust High-Resolution Video Matting with Temporal Guidance)
又叫稳定视频抠像,不同于现有神经网络将每一帧作为单独图片处理,RVM 使用循环神经网络,在处理视频流时有时间记忆。RVM 可在任意视频上做实时高清抠像。在 Nvidia GTX 1080Ti 上实现 4K 76FPS 和 HD 104FPS。
项目特点
- 效果非常好。就像前面视频里展示的一样,抠图效果惊人,头发丝都能抠出来,让人以为视频是绿幕前拍出来。
- 不需要任何辅助输入。也有一些非常棒的抠图论文,但是大部分包括本论文作者的前作,都需要辅助输入,比如一张背景图。那样拍片的时候,除了拍演员,还要在同一地点同一机位单独拍一遍背景,这么麻烦想想还不如上绿幕方便呢。所以不需要任何辅助输入,实在太贴心了!
- 使用简单方便。没有技术门槛,不需要任何技术背景,人人都可以过把瘾。尤其是在AI Studio项目里,只要动动手上传视频,一键转换,然后下载即可。
AI Studio里提供了Nvidia Tesla V100 顶级显卡算力支持,让视频抠图快到飞起!
抠像效果提升小技巧
- 如果想追求较好的效果,最好选用光源条件良好的片源。
- 光照良好,背景比较简单的视频,处理效果会较好。
- 根据视频内容进行下采样比设定:
针对视频清晰度大小和画面中人物是全身还是半身等,可以按照如下表格设定downsample_ratio参数,根据视频内容进行调节,以提高抠像效果。
下采样比设定参考:
- 模型在内部将高分辨率输入缩小做初步的处理,然后再放大做细分处理。
建议设置downsample_ratio使缩小后的分辨率维持在 256 到 512 像素之间. 例如,1920x1080的输入用downsample_ratio=0.25,缩小后的分辨率480x270在 256 到 512 像素之间。
- 根据视频内容调整downsample_ratio。
若视频是上身人像,低downsample_ratio足矣。若视频是全身像,建议尝试更高的downsample_ratio。但注意,过高的downsample_ratio反而会降低效果。
RVM飞桨代码版本实现
- Github地址:
https://github.com/skywalk163/RobustVideoMatting/tree/PaddlePaddle
- Gitee地址:
https://gitee.com/skywalk/paddlerobustvideomatting
感兴趣的朋友可以直接看源代码。因能力和时间有限,目前还没有复现训练代码,有兴趣的朋友可以一起来实现啊!
结束语
让我们荡起双桨,在AI的海洋乘风破浪!
- 飞桨官网: https://www.paddlepaddle.org.cn
- github官方地址: https://github.com/PeterL1n/RobustVideoMatting
- 论文效果B站展示: https://www.bilibili.com/video/BV1Z3411B7g7/
因为水平有限,难免有不足之处,还请大家多多指教。
参考文献
[1]Lin S , Yang L , Sal Ee Mi I , et al. Robust High-Resolution Video Matting withTemporal Guidance[J]. 2021.