[PaperRead]Robust High-Resolution Video Matting with Temporal Guidance

811 阅读10分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

论文名称:Robust High-Resolution Video Matting with Temporal Guidance

作者:Shanchuan Lin1, Linjie Yang, Imran Saleemi, Soumyadip Sengupta

Code:github.com/PeterL1n/Ro…

摘要和介绍

  1. 提出了一种鲁棒、实时、高分辨率的视频human matting方法——RVM,实现了SOTA性能,在1080Ti上处理4K视频能到达76FPS,处理1080p图像能达到104FPS;

  2. 与大多数现存的方法不同,它们将每个输入的帧都视为独立的图像,而RVM能够更好的捕捉temporal coherence(即视频中帧与帧之间的相关性),达到:

    1. 降低“闪烁”,即前后两帧预测结果相差较大,视觉上形成闪烁效果;
    2. 提高鲁棒性,某一帧可能是模糊的,而网络可以通过之前的帧来进行“猜测”;
    3. 隐式地学习背景,摄像机或是主体对象移动时会暴露背景;
  3. 提出了一种新颖的训练策略,使得网络能够同时进行Matting和Segmentation,这也是RVM鲁棒性的主要来源之一,使用Segmentation的原因:

    1. Matting数据集多是合成的,不够真实,阻止了网络的泛化性;
    2. 之前有工作在分割数据上进行预训练,但是它们会在合成的分布上过拟合;
    3. 也有人尝试在无标签的真实图像上进行对抗性训练或半监督学习,以此来作为额外的适应步骤;
    4. 本文认为human segmentation和human matting任务十分相近,因此同时进行分割来调整网络,而不需要额外的适应步骤。
    5. 此外,有相当多的分割数据集是可用的;
  4. 不需要任何辅助性的输入,如Trimap、预先拍摄好的背景(见论文Background matting: The world is your green screen)等。

相关工作

Trimap-based matting

数学上,一张图片I可以被建模为前景F和背景B的线性组合:

Ii=αiFi+(1αi)BiI_i=\alpha_iF_i+(1-\alpha_i)B_i

然而,上式只有I是已知的,因此这是一个定义不明确的(ill-defined)问题。

为了解决这个问题,多数方法需要一个trimap来表示一张图片中已知的前景、背景和未知的部分。

image-20220109152130871

基于trimap的方法通常是 object agnostic,即不限定于人,它们适用于交互式照片编辑应用,用户可以选择目标对象并提供手动指导;这类方法往往精度更高。

为了拓展到视频应用中,DVM需要第一帧的trimap,并且会将其广播至剩下的所有帧。

Background-based matting

BGM和BGM-v2提出了一种使用预先拍摄好的背景作为额外输入的方法,该方法通过获得的背景信息可以更好的预测前景,但是这种方法不能处理动态背景或是较大的摄像机移动的情况

Segmentation

Segmentation为每一个像素都预测一个类别,并且通过不需要任何辅助性的输入,但是直接进行背景替换会造成强烈的artifacts(伪影)。

matting与segmentation的一个不同之处在于matting的预测结果是连续的,即预测结果是0-1的任意值,而segmentation的预测结果则是0-nums_classes-1的整数。

Auxiliary-free matting

全自动matting不需要任何辅助性的输入,一些针对所有前景的方法不够鲁棒,也有一些方法针对(human portrait)人像进行matting。而RVM是针对(full human body)人的全身。

Video matting

目前来说,很少有neural matting的方法为视频设计(或者说是video-native的)。

MODnet提出了一种后处理的技巧,通过比较相邻的帧来减少视频闪烁,但是它不能处主体或是主体上某部分(如手)快速移动的情况,并且模型本身还是将每帧视为一个独立的图像。

BGM使用相邻的帧作为输入,但是只能提供短期的时间关联性。

DVM是video-native的,但是它利用时间信息是为了传播trimap。

RVM不但不需要辅助性的trimap,并且利用时间信息来提升matting的质量。

Recurrent architecture

循环结构诸如RNN、LSTM、GRU等,被广泛应用于序列建模上,比如NLP中的各种任务,同时也有ConvLSTM和ConvGRU来适应video的任务。

High-resolution matting

Patch-based refinement(基于patch的优化)是一种实现高分辨的方法,比如分割任务中的PointRend以及matting中的BGMv2;

Patch-based是一种常见的方法,其将输入的图像分割为一个个不重叠的patch(多数为不重叠),对每个patch进行处理,最终再将结果拼接回去,基于trimap的matting方法中也有很多是patch-based。

另一种方法是使用Guided Filter,一种后处理的方法,其将低分辨的预测结果与高分辨率的guide map进行联合上采样,得到高分辨率的输出结果;

Deep Guided Filter (DGF)提出了一种端到端的、可学习的Guided Filter模块。

模型结构

RVM包含一个编码器来提取单个帧的特征,一个循环的解码器来聚集时间信息,一个Deep Guided Filter module(DGF)来实现高分辨率的上采样。

image-20220109155913283

Feature-Extraction Encoder

使用MobileNet-v3作为主干网络,在编码器最后跟一个LR-ASPP模块;

其中,MobileNet-v3的最后一个Block使用空洞卷积而不是带步长的下采样;

编码器分别在12\frac12,14\frac14,18\frac18,116\frac1{16}的尺度进行编码。

Recurrent Decoder

解码器使用ConvGRU组成,其实现方式只是将标准GRU的矩阵乘法变为了卷积操作

Bottleneck block

116\frac1{16}这个尺度,为了降低和参数量,仅会对一半的通道使用ConvGRU(We find applying ConvGRU on half of the channels by split and concatenation effective and efficient),这种方法

Upsampling block

12\frac12,14\frac14,18\frac18这些尺度,输入由三个部分concat而来——前一层的解码输出,对应的编码输出,以及通过2×22\times2平均池化下采样到对应的大小的输入图像,输入图像指ImageLR:

image-20220109175316745

最后使用经典的ConvBNReLU来实现特征融合和调整通道数的作用。

Output block

输出层不使用ConvGRU,因为不起作用(we find it expansive and not impactful),直接使用两层堆叠的ConvBNReLU,最后使用卷积映射到5个通道,包含1通道的alpha,3通道的foreground,1通道的segmentation

Deep Guided Filter Module

采用了DGF来实现高分辨率的matting,DGF具体看论文Fast End-to-End Trainable Guided Filter

在高分辨图像ImageHR存入网络之前,对其进行了参数为s的下采样得到ImageLR,经过主干网络提取特征、编码器和解码器之后,最终得到低分辨率的alpha,和hide feature,它们会和ImageHR共同输入DGF模块,产生高分辨的最终输出。

需要注意的是,DGF是可选的,如果仅仅需要处理低分辨率的图像,则可以不使用DGF。

Training

Matting Datasets

RVM在VideoMatte240K(VM)、Distinctions-646(D646)、Adobe Image Matting(AIM)上训练。具体细节看论文。

总之为了保证模型的鲁棒性,这些数据集的质量十分优秀。

为了提高模型对背景的理解,选取了Deep video matting via spatio-temporal alignment and aggregation提供的数据集,该数据集包含很多motion,比如快速的车辆移动、树叶摇晃和摄像机移动等等,选取了3118组不包含人的视频,取前100帧数进行训练。

同时使用了motion和temporal的数据增强来更好的提升鲁棒性。

Motion augmentations include affine translation, scale, rotation, sheer, brightness, saturation, contrast, hue, noise and blur that change continuously over time

Motion增强包含仿射变换、缩放、旋转、sheer(坐标轴倾斜)、亮度变化、饱和度变化、对比度变化、色调变化、噪声以及模糊,这些增强会随着时间变化(此处应该是指输入视频的时间,而不是训练的时间)

temporal增强包含倒放、速度变化、随机暂停和跳帧(frame skipping)。

另外一些不连续的增强有横向翻转、灰度变化和锐化,直接对所有帧进行应用。

Segmentation Datasets

使用YouTubeVIS、 COCO、 SPD进行训练,采用相同的数据增强但是不包括motion,因为YoutubeVIS已经包含了大量的镜头移动,并且分割本身并不需要motion的增强。

Procedures

训练包含四个阶段,使用Adam优化器,所有阶段都是用batch sizeB=4,在4张v100上进行训练(All stages use batch size B = 4 split across 4 Nvidia V100 32G GPUs)。

Stage 1:

  1. 不使用DGF在VM上以低分辨率训练15个epoch,设置序列长度(ConvGRU的参数)T=15,以便让网络快速更新;
  2. 主干网络使用在ImageNet上的预训练模型,使用lr=1e-4,其余部分的lr=2e-4;
  3. 网络输入大小为256-512。

Stage 2:

设置T=50,学习率降为一半,其他设置不变,再训练2个epoch,这是为了使网络适应长序列的输入,50是v100能容纳的最大数量。

Stage 3:

  1. 加上DGF,以高分辨在VM上再训练1个epoch;
  2. 由于输入图像分辨率过高,T的值必须很小,所以对高分辨的图像,设置T=6T=6h,w(1024,2048)h,w\in(1024,2048),对于地分辨率的图像,设置T=40T=40h,w(256,512)h,w\in(256,512)
  3. DGF模块lr=2e4lr=2e-4,其余部分为1e41e-4

Stage 4:

在AIM和D646数据集上训练5个epoch,增加decoder的学习率至5e-5,其他设置保持不变。

segmentation:

  1. segmentation的训练是交错式的,穿插在matting的整个训练阶段当中,在每个奇数iteration(迭代次数)后在image data上训练segmentation,偶数iteration后在video data上训练segmenttation;
  2. 对于video data,所有设置保持和matting相同;
  3. 对于image data,设置T=1T'=1B=T×BB'=T \times B

Losses

具体看论文

对[1,T]帧数使用loss,对于alpha,使用L1 loss和pyramid Laplacian loss,定义如下

Llapα=s=152s15Lpyrs(αt)Lpyrs(αtgt)1L_{lap}^{\alpha}=\sum_{s=1}^5\frac{2^{s-1}}{5}||L_{pyr}^s(\alpha_t)-L_{pyr}^s(\alpha^{gt}_t)||_1

同样使用了temporal coherence loss,定义如下:

Ltcα=dαtdtdαtgtdt2L_{tc}^{\alpha}=||\frac{d\alpha_t}{dt}-\frac{d\alpha_t^{gt}}{dt}||_2

为了学习到前景,同样使用了L1 loss和temporal coherence loss,定义如下:

LtcF=(αtgt>0)(dFtdtdFtgtdt)2L_{tc}^{F}=||(\alpha_{t}^{gt}>0)*(\frac{dF_t}{dt}-\frac{dF_t^{gt}}{dt})||_2

Ablation Studies

看论文,总之就是有用。

应用思路

经过测试,RVM的效果确实很好,速度也很快,使用i5低压u推理速度大约在每秒4、5帧左右,在CPU上其推理在主干MobilenetV3、decoder和DGF模块上耗时相当,而在GPU上耗时则主要体现在主干网络上,占用能达到总推理市场的60%。

并且RVM只有decoder能捕获到视频中的时序注意力,其设计还不够纯粹。

一些应用思路如下

  1. 主干网络:使用更轻量的主干网络,比如Shufflenetv2、RepVGG等;
  2. 时序信息:设计或寻找其他能捕获时序信息的模块或结构,比如之前提到的Skip-Conv;
  3. 注意力模块:添加相应的空间注意力模块或者时间注意力模块;
  4. 其他:使用辅助性输入来提升稳定性(非必须)。针对视频会议等进行改进,这些情况背景不会进行变化,可以仿照BGM输入背景图片,或者DVM输入三分图。

难点:

为了保证网络的鲁棒性,RVM使用了相当多的数据集和数据增强,训练周期长且麻烦,各种方案可能要等较久才有结果。