内容导读

本文为字节跳动团队发布的视频抠像工具 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,这个视频抠像工具效果绝了相关推荐

  1. 视频抠像怎么抠的干净?教你几种效果不错的抠像方法

    想要将视频中的人像或者是物品抠出来,如何才能抠的干净呢?视频抠像是视频后期制作中很重要的一个环节.在视频制作过程中,有时需要把某个对象从原始视频中分离出来,或在另一个背景下重新定位它.视频抠像可以帮助 ...

  2. 把视频抠像放到另一个视频上怎么做?这几种方法很简单

    把视频抠像放到另一个视频上应该怎么做呢?将一个视频的抠像放到另一个视频上可以创造出独特的视觉效果,增加视频的创意性和吸引力.例如,可以将一个人的抠像放到不同的背景中,创造出真实世界无法呈现的场景.我们 ...

  3. 如何进行视频抠像?视频抠像一键搞定

    你还在使用绿幕拍摄之后再进行视频抠像吗,无需绿幕一键视频抠像教你轻松掌握! 大家通常会觉得如果能从视频里把人物抠出来就好了,比如你拍了一个自己的视频,但是对视频中的背景不满意,如果能把视频中的人物抠出 ...

  4. Allavsoft for Mac(专业视频下载工具)

    Allavsoft for Mac是一款MacOS系统上的专业视频下载工具,支持任何视频文件格式的转换,支持在任何移动设备上脱机播放下载的视频,Allavsoft mac版可以让用户下载一些自己喜欢的 ...

  5. AI一键抠像工具,轻松完成视频抠像操作

    影视经常用到绿幕背景拍摄视频,然后抠图合成到其他场景中,一般是拍摄人物然后扣出来合成到其他背景中,是实现了各种各样的精彩视频. 我们知道,一些影视作品尤其是古装剧,必须要对人物的背景进行后期处理.为了 ...

  6. 剪映专业版 for Mac(全能好用的视频编辑工具)内附体验效果

    剪映专业版 for Mac是一款全能好用的视频编辑工具,使用剪映专业版能够轻松对视频进行各种编辑,包括卡点.去水印,特效制作.倒放.变速等,还有专业风格滤镜,精选贴纸给你的视频加点乐趣. 下载地址:h ...

  7. Downie4许可证代码 MacOS上最好的在线视频下载工具

    相信大家都知道,核心主流媒体的适配网站都是没办法下载视频的,如果是国外的视频网站,可能会很卡,无法流程的观看视频,这个时候真的会让人非常急躁. 在这样的情况下,在视频媒体上进行离线下载观看就成了很多用 ...

  8. 如何在电脑上转换视频格式? - 10款视频转换工具分享

    视频转换器是适用于不同情况的实用且有用的软件,您只需单击几下即可修改视频文件的格式,将文件转换为 AVI.MPEG.MP4.MKV.DivX 和无数其他格式,避免了常见的兼容性问题,尤其方便我们下载视 ...

  9. Downie 4.2.6 Mac 上视频下载工具

    简单的拖放链接到Downie,它就会下载该网站上的视频. 应用介绍 Mac毒搜集到的Downie 是 macOS上的一个超级易于使用的视频下载工具,支持YouTube,Vimeo 等大部分主流视频网站 ...

最新文章

  1. pod install 失败 Сocoapods trunk URL couldn't be downloaded
  2. JS中toFixed()方法的问题及解决方案
  3. linux 系统监控 php,Linux系统资源监控命令简介
  4. OpenYurt 如何 “0 侵入” 攻破云边融合难点
  5. ITK:转换文件格式
  6. [WP7开发入门]在Windows 2003,XP上安装Windows Phone 7开发工具
  7. 使用HMAC(Play 2.0)保护REST服务
  8. HIT Software Construction Review Notes(1-1 Multi-Dimensional Views of Software Construction)
  9. 0基础学python要多久-零基础学习python,要多久才可以学好并且找到工作?
  10. DenseNet算法详解
  11. java中将json字符串转换成map_Java中Json转Map方法
  12. 前端常见的几种布局方式
  13. 2020中兴捧月-傅里叶-丰收祭赛题常规解法
  14. 华为鸿蒙系统有没有畅玩7c,华为荣耀畅玩7C有什么新功能
  15. SysML精粹学习笔记二
  16. suptitle()--matplotlib
  17. springboot+vue博客项目(码神之路博客项目)
  18. 现代社会,各行各业的竞争越来越激烈
  19. web开发学习过程,一个合格的初级前端工程师需要掌握的模块笔记
  20. 管家婆数据库823错误,并闩锁页错误数据恢复成功

热门文章

  1. 清北《2021年毕业生就业质量报告》出炉,毕业生都进体制内了?
  2. 飛飛(四十四)春哥来啦!
  3. 【滤镜】CVPixelBufferRef处理成黑屏+水印
  4. [Video Transformer] UniFormer:Unified Transformer for Efficient Spatial-Temporal Representation Lear
  5. CTF--[网鼎杯 2020 青龙组]AreUSerialz
  6. Adobe Animate的画笔工具和画笔库
  7. 解决GiHub下载太慢的问题
  8. OpenGL 画出雷达动态扫描效果(一)
  9. Samkoon HMI编程电缆驱动
  10. 又一开源神器,值得收藏学习!