用上 RNN,这个视频抠像工具效果绝了
内容导读
本文为字节跳动团队发布的视频抠像工具 RVM 代码解析及论文《Robust High-Resolution Video Matting with Temporal Guidance》概要。
视频抠像,把人物从动态画面中抠除,用于进一步替换背景或其他用途。看似是专业拍摄才用得上的工具,但在有些场景里的确派得上大用处。
快捷、高效的视频抠像有多重要?这一点,今年《披荆斩棘的哥哥》的后期团队一定深有体会。
近期,字节跳动的论文 《Robust High-Resolution Video Matting with Temporal Guidance 》被 WACV 2022 收录,官方 GitHub 库于近期以 GPL-3.0 许可证开源。
RVM 项目开放线上公开测试
此次开源的 RVM 项目专为稳定人物视频抠像设计,可在任意视频上做实时高清抠像。不同于现有神经网络将每一帧作为单独图片处理,RVM 使用循环神经网络,在处理视频流时有时间记忆。
经测试,RVM 支持在 Nvidia GTX 1080Ti 上实现 4K 76FPS 和 HD 104FPS。
此研究项目的团队来自字节跳动。
项目 GitHub
https://github.com/PeterL1n/RobustVideoMatting
项目论文
https://arxiv.org/abs/2108.11515
墙内 Colab
https://openbayes.com/console/open-tutorials/containers/oqv42tbd8ko
模型核心:RNN
RVM 的网络架构包括:
- 特征提取编码器:提取单帧特征;
- 循环解码器:综合时间信息;
- 深度引导滤波(DGF)模块:高分辨率采样。
值得注意的是,模型在内部将高分辨率输入缩小做初步的处理,然后再放大做细分处理。所以建议用户设置 downsample_ratio 使缩小后的分辨率维持在 256 到 512 像素之间。
另外,正因为此模型基于循环神经网络(Recurrent Neural Network),所以必须按顺序处理视频每帧,并提供网络循环记忆。
多框架支持
项目成员非常贴心,模型分别基于 MobileNetV3、ResNet50 实现,还支持了PyTorch、TorchHub、TorchScript、ONNX、TensorFlow、TensorFlow.js、CoreML 等主流框架。
PyTorch
- 载入模型
import torch
from model import MattingNetwork
model = MattingNetwork(variant='mobilenetv3').eval().cuda() # 或 variant="resnet50"
model.load_state_dict(torch.load('rvm_mobilenetv3.pth'))
- 推断循环(完整实例)
from torch.utils.data import DataLoader
from torchvision.transforms import ToTensor
from inference_utils import VideoReader, VideoWriterreader = VideoReader('input.mp4', transform=ToTensor())
writer = VideoWriter('output.mp4', frame_rate=30)bgr = torch.tensor([.47, 1, .6]).view(3, 1, 1).cuda() # 绿背景
rec = [None] * 4 # 初始记忆with torch.no_grad():for src in DataLoader(reader):fgr, pha, *rec = model(src.cuda(), *rec, downsample_ratio=0.25) # 将上一帧的记忆给下一帧writer.write(fgr * pha + bgr * (1 - pha))
- 视频转换 API
from inference import convert_videoconvert_video(model, # 模型,可以加载到任何设备(cpu 或 cuda)input_source='input.mp4', # 视频文件,或图片序列文件夹input_resize=(1920, 1080), # [可选项] 缩放视频大小downsample_ratio=0.25, # [可选项] 下采样比,若 None,自动下采样至 512pxoutput_type='video', # 可选 "video"(视频)或 "png_sequence"(PNG 序列)output_composition='com.mp4', # 若导出视频,提供文件路径。若导出 PNG 序列,提供文件夹路径output_alpha="pha.mp4", # [可选项] 输出透明度预测output_foreground="fgr.mp4", # [可选项] 输出前景预测output_video_mbps=4, # 若导出视频,提供视频码率seq_chunk=12, # 设置多帧并行计算num_workers=1, # 只适用于图片序列输入,读取线程progress=True # 显示进度条
)
TensorFlow
- 范例(Channal Last 格式)
import tensorflow as tfmodel = tf.keras.models.load_model('rvm_mobilenetv3_tf')
model = tf.function(model)rec = [ tf.constant(0.) ] * 4 # 初始记忆
downsample_ratio = tf.constant(0.25) # 下采样率,根据视频调整for src in YOUR_VIDEO: # src 张量是 [B, H, W, C] 的形状,而不是 [B, C, H, W]!out = model([src, *rec, downsample_ratio])fgr, pha, *rec = out['fgr'], out['pha'], out['r1o'], out['r2o'], out['r3o'], out['r4o']
项目 GitHub
https://github.com/PeterL1n/RobustVideoMatting
项目论文
https://arxiv.org/abs/2108.11515
墙内 Colab
https://openbayes.com/console/open-tutorials/containers/oqv42tbd8ko
用上 RNN,这个视频抠像工具效果绝了相关推荐
- 视频抠像怎么抠的干净?教你几种效果不错的抠像方法
想要将视频中的人像或者是物品抠出来,如何才能抠的干净呢?视频抠像是视频后期制作中很重要的一个环节.在视频制作过程中,有时需要把某个对象从原始视频中分离出来,或在另一个背景下重新定位它.视频抠像可以帮助 ...
- 把视频抠像放到另一个视频上怎么做?这几种方法很简单
把视频抠像放到另一个视频上应该怎么做呢?将一个视频的抠像放到另一个视频上可以创造出独特的视觉效果,增加视频的创意性和吸引力.例如,可以将一个人的抠像放到不同的背景中,创造出真实世界无法呈现的场景.我们 ...
- 如何进行视频抠像?视频抠像一键搞定
你还在使用绿幕拍摄之后再进行视频抠像吗,无需绿幕一键视频抠像教你轻松掌握! 大家通常会觉得如果能从视频里把人物抠出来就好了,比如你拍了一个自己的视频,但是对视频中的背景不满意,如果能把视频中的人物抠出 ...
- Allavsoft for Mac(专业视频下载工具)
Allavsoft for Mac是一款MacOS系统上的专业视频下载工具,支持任何视频文件格式的转换,支持在任何移动设备上脱机播放下载的视频,Allavsoft mac版可以让用户下载一些自己喜欢的 ...
- AI一键抠像工具,轻松完成视频抠像操作
影视经常用到绿幕背景拍摄视频,然后抠图合成到其他场景中,一般是拍摄人物然后扣出来合成到其他背景中,是实现了各种各样的精彩视频. 我们知道,一些影视作品尤其是古装剧,必须要对人物的背景进行后期处理.为了 ...
- 剪映专业版 for Mac(全能好用的视频编辑工具)内附体验效果
剪映专业版 for Mac是一款全能好用的视频编辑工具,使用剪映专业版能够轻松对视频进行各种编辑,包括卡点.去水印,特效制作.倒放.变速等,还有专业风格滤镜,精选贴纸给你的视频加点乐趣. 下载地址:h ...
- Downie4许可证代码 MacOS上最好的在线视频下载工具
相信大家都知道,核心主流媒体的适配网站都是没办法下载视频的,如果是国外的视频网站,可能会很卡,无法流程的观看视频,这个时候真的会让人非常急躁. 在这样的情况下,在视频媒体上进行离线下载观看就成了很多用 ...
- 如何在电脑上转换视频格式? - 10款视频转换工具分享
视频转换器是适用于不同情况的实用且有用的软件,您只需单击几下即可修改视频文件的格式,将文件转换为 AVI.MPEG.MP4.MKV.DivX 和无数其他格式,避免了常见的兼容性问题,尤其方便我们下载视 ...
- Downie 4.2.6 Mac 上视频下载工具
简单的拖放链接到Downie,它就会下载该网站上的视频. 应用介绍 Mac毒搜集到的Downie 是 macOS上的一个超级易于使用的视频下载工具,支持YouTube,Vimeo 等大部分主流视频网站 ...
最新文章
- pod install 失败 Сocoapods trunk URL couldn't be downloaded
- JS中toFixed()方法的问题及解决方案
- linux 系统监控 php,Linux系统资源监控命令简介
- OpenYurt 如何 “0 侵入” 攻破云边融合难点
- ITK:转换文件格式
- [WP7开发入门]在Windows 2003,XP上安装Windows Phone 7开发工具
- 使用HMAC(Play 2.0)保护REST服务
- HIT Software Construction Review Notes(1-1 Multi-Dimensional Views of Software Construction)
- 0基础学python要多久-零基础学习python,要多久才可以学好并且找到工作?
- DenseNet算法详解
- java中将json字符串转换成map_Java中Json转Map方法
- 前端常见的几种布局方式
- 2020中兴捧月-傅里叶-丰收祭赛题常规解法
- 华为鸿蒙系统有没有畅玩7c,华为荣耀畅玩7C有什么新功能
- SysML精粹学习笔记二
- suptitle()--matplotlib
- springboot+vue博客项目(码神之路博客项目)
- 现代社会,各行各业的竞争越来越激烈
- web开发学习过程,一个合格的初级前端工程师需要掌握的模块笔记
- 管家婆数据库823错误,并闩锁页错误数据恢复成功
热门文章
- 清北《2021年毕业生就业质量报告》出炉,毕业生都进体制内了?
- 飛飛(四十四)春哥来啦!
- 【滤镜】CVPixelBufferRef处理成黑屏+水印
- [Video Transformer] UniFormer:Unified Transformer for Efficient Spatial-Temporal Representation Lear
- CTF--[网鼎杯 2020 青龙组]AreUSerialz
- Adobe Animate的画笔工具和画笔库
- 解决GiHub下载太慢的问题
- OpenGL 画出雷达动态扫描效果(一)
- Samkoon HMI编程电缆驱动
- 又一开源神器,值得收藏学习!