RVM最新的AI人像抠图技术,代码已经开源。

RVM最新AI人像抠图技术,代码已经开源

在计算机视觉处理中,人像抠图意义重大,当然PS技术可以达到类似的效果,其实本质也是代码的实现。在前两个视频中,我们使用了RVM人像抠图技术来实现人像抠图,效果视频如下:

人工智能人像挖掘为清华虚拟AI人华挖掘。

实时视频背景抠图技术让你不用绿布就能拍绿屏电影。

RVM是一种强大的实时视频人像抠图技术,由字节跳动项目组开发。与现有的将每一帧都视为单独图片的神经网络不同,RVM使用循环神经网络,该网络在处理视频流时具有时间记忆。RVM可以对任何视频进行实时高清键控。在英伟达GTX 1080Ti上实现4K 76FPSHD 104FPS。开放源代码地址:

github.com/PeterL1n/RobustVideoMattingRVM最新AI人像抠图技术,代码已经开源

我们可以从GitHub下载它的源代码。下载完成后,我们可以在项目文件夹中创建一个test.py文件。当然,在开始这段代码之前,我们需要安装以下第三方库。

一个

av==8.0.3

2

torch==1.9.0

torchvision==0.10.0

tqdm==4.61.1

pims==0.5

安装后,您需要下载项目的预训练模型。当然,你可以在GitHub上找到共享模型地址并下载。该模型包括两个预训练模型:

rvm _ mobilenet v3 . pthrvm _ resnet 50 . pthrvm _ mobilenet v3 . PTH模型体积小,速度快,可以按照这个模型试试。当然,如果计算机配置较高,可以使用rvm _ mobilenetv3.pth模型。

RVM最新AI人像抠图技术,代码已经开源

完成前面的准备工作后,在test.py文件中输入以下代码:

导入torchfrom模型导入MattingNetworkfrom推断导入convert _ video model=matting network(' mobilenet v3 ')。eval()。cuda() #或' resnet 50 ' model . load _ state _ dict(torch . load(' rvm _ mobilenet v3 . PTH ')#或rvm _ resnet 50 . PTH convert _ video(model,# The model,可以在任何设备上(cpu或cuda)。input_source='input.mp4 ',#视频文件或图像序列目录. output_type='video ',#选择' video '或' png_sequence'ou

tput_composition='output.mp4', # File path if video; directory path if png sequence.output_video_mbps=4, # Output video mbps. Not needed for png sequence.downsample_ratio=None, # A hyperparameter to adjust or use None for auto.seq_chunk=12, # Process n frames at once for better parallelism.)

model = MattingNetwork('mobilenetv3').eval().cuda(),这里模型可以选择mobilenetv3,当然也可以选择resnet50,若电脑没有GPU,删除此行代码中的cuda()即可

torch.load('rvm_mobilenetv3.pth')加载模型文件,此模型文件需要放置在test.py文件夹的根目录中

然后使用convert_video函数便可以成功生成背景为绿色的人像抠图视频了

convert_video函数:

参数一:model为前定义的预训练模型

参数二:input_source,输入视频地址路径

参数三:output_composition,输出视频的路径地址

参数四:output_video_mbps,输出视频的mbps参数

参数五:downsample_ratio,一些超参数调整,可以配置成None,软件自动配置

参数六:seq_chunk,由于此技术具有时间记忆功能,可以同时一次处理多个视频帧来加快视频处理的速度

当然若想输出Pha通道与fgr通道

添加参数如下:

output_alpha=‘输出路径’

output_foreground=‘输出路径’

RVM最新AI人像抠图技术,代码已经开源

然后运行test.py,待代码运行完成后,便在设置的目录下,自动生成抠图后的效果视频

当然项目也可以按照如下方式进行抠图

RVM最新AI人像抠图技术,代码已经开源

from torch.utils.data import DataLoaderfrom torchvision.transforms import ToTensorfrom inference_utils import VideoReader, VideoWriterimport cv2reader = VideoReader('415809648-1-208.mp4', transform=ToTensor())writer = VideoWriter('output1234.mp4', frame_rate=30)bgr = torch.tensor([.47, 1, .6]).view(3, 1, 1)  # Green background.rec = [None] * 4                                       # Initial recurrent states.downsample_ratio = 0.25                               # Adjust based on your video.with torch.no_grad():    for src in DataLoader(reader):                     # RGB tensor normalized to 0 ~ 1.        fgr, pha, *rec = model(src, *rec, downsample_ratio)  # Cycle the recurrent states.        com = fgr * pha + bgr * (1 - pha)              # Composite to green background.         #cv2.imshow('com',com)        writer.write(com)                              # Write frame.

当然也可以直接使用API 的方式

# Load the model.model = torch.hub.load("PeterL1n/RobustVideoMatting", "mobilenetv3") # or "resnet50"# Converter API.convert_video = torch.hub.load("PeterL1n/RobustVideoMatting", "converter")

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/56714.html

(0)

相关推荐