大数跨境
0
0

8000亿字节的开源:视频秒换背景

8000亿字节的开源:视频秒换背景 GitHubTopp
2024-05-05
0
导读:人工智能已经是军备竞赛! openAI(微软)宣布7万亿美金的投入,远超美国军费!

人工智能已经是军备竞赛! openAI(微软)宣布7万亿美金的投入,远超美国军费!

8000亿营收的字节,应该是目前最有希望和微软(openAI谷歌Meta(facebook同台竞技的中国公司!

字节开源:一段视频,换掉背景

源代码

http://www.gitpp.com/bookai/videomatting

Video Matting  视频抠图

一键换掉视频的背景

基于论文《Robust High-Resolution Video Matting with Temporal Guidance

代码实现

论文标题:

Robust High-Resolution Video Matting with Temporal Guidance

论文解读:

1. 概述

该论文提出了一种稳健的高分辨率视频抠图方法,该方法利用时间引导来提高抠图的准确性和时间连贯性。论文的核心在于其创新的网络结构和训练策略,使得视频抠图在保持高分辨率的同时,也能实现更好的实时性和鲁棒性。

2. 网络结构

  • 该方法采用了一个特征提取编码器、一个递归解码器和深度引导过滤器(DGF)模块组成的网络结构。

  • 为了处理高分辨率视频,网络首先对编码器-解码器网络的输入进行降采样,然后使用DGF对结果进行升采样。

  • 深度引导过滤器(DGF)被设计为一个可学习的模块,可以与网络一起进行端到端的训练,无需手动设置超参数。

3. 训练过程

  • 训练分为四个阶段,逐步增加训练的复杂性和分辨率。

  • 第一阶段:在低分辨率下对video matting进行初步训练,设定短序列长度(如T=15帧)以加速网络更新。

  • 第二阶段:增加序列长度(如T=50帧)并降低学习率,保持其他设置不变进行训练。

  • 第三阶段:引入DGF模块,并用高分辨率样本对网络进行训练。

  • 第四阶段:在组合数据集上进行长时间的训练,以增强模型的泛化能力。

4. 实验结果与创新点

  • 该方法显著提高了视频抠图的时间连贯性和质量,特别是在处理高分辨率视频时。

  • 通过循环架构有效利用了视频帧间的时间信息,减少了抖动并提高了感知质量。

  • 提出了一种新颖的训练策略,结合匹配和语义分割目标来训练网络,显著提高了模型的鲁棒性。

  • 该方法不需要任何辅助输入,如trimap或预先捕获的背景图像,因此可以广泛应用于现有的人体抠图应用程序中。

5. 性能与效率

  • 论文中提到的方法可以在高分辨率视频上实现实时抠图,例如在Nvidia GTX 1080Ti GPU上处理4K视频可达到76 FPS,处理高清视频可达到104 FPS。

6. 应用前景

  • 该方法可广泛应用于视频会议、娱乐视频创建等领域,其中背景替换功能具有重要的实用价值。

综上所述,该论文通过创新的网络结构和训练策略,显著提高了高分辨率视频抠图的准确性和实时性,为视频抠图技术的发展提供了新的方向。


PyTorch 范例

  1. 安装 Python 库:

pip install -r requirements_inference.txt

  1. 加载模型:

import torch
from model import MattingNetwork

model = MattingNetwork('mobilenetv3').eval().cuda() # 或 "resnet50"
model.load_state_dict(torch.load('rvm_mobilenetv3.pth'))

  1. 若只需要做视频抠像处理,我们提供简单的 API:

from inference import convert_video

convert_video(
model, # 模型,可以加载到任何设备(cpu 或 cuda)
input_source='input.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=12, # 设置多帧并行计算
)

  1. 或自己写推断逻辑:

from torch.utils.data import DataLoader
from torchvision.transforms import ToTensor
from inference_utils import VideoReader, VideoWriter

reader = 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 # 初始循环记忆(Recurrent States)
downsample_ratio = 0.25 # 下采样比,根据视频调节

with torch.no_grad():
for src in DataLoader(reader): # 输入张量,RGB通道,范围为 0~1
fgr, pha, *rec = model(src.cuda(), *rec, downsample_ratio) # 将上一帧的记忆给下一帧
com = fgr * pha + bgr * (1 - pha) # 将前景合成到绿色背景
writer.write(com) # 输出帧

  1. 模型和 API 也可通过 TorchHub 快速载入。

# 加载模型
model = torch.hub.load("PeterL1n/RobustVideoMatting", "mobilenetv3") # 或 "resnet50"

# 转换 API
convert_video = torch.hub.load("PeterL1n/RobustVideoMatting", "converter")

推断文档里有对 downsample_ratio 参数,API 使用,和高阶使用的讲解。


训练和评估

请参照训练文档(英文)。



字节开源:一段视频,换掉背景

源代码

http://www.gitpp.com/bookai/videomatting


【声明】内容源于网络
0
0
GitHubTopp
top开源系统分享
内容 444
粉丝 0
GitHubTopp top开源系统分享
总阅读531
粉丝0
内容444