主页:background-matting-v2
参考代码:BackgroundMattingV2
1. 概述
导读:这篇文章在之前V1版本(在512*512输入的情况下只能跑到8FPS)的基础上针对高分辨率(HD,4K画质)提出了一种设计巧妙的matting方法,文章将其称之为之前方法的V2版本。该方法中将整个pipeline划分为两个部分:base和refine部分,前一个部分在缩小分辨率的输入下生成粗略的结果输出,其主要用于提供大体的区域位置定位(coarse predcition)。后一个网络在该基础上通过path selection选取固定数量的path(这些区域主要趋向于选择头发/手等难分区域)进行refine,之后将path更新之后的结果填充回原来的结果,从而得到其在高分辨率下的matting结果。整个pipeline下来文章的方法能在4K分辨率下跑到30FPS,在HD分辨率下跑到60FPS。当然文章使用的数据集(VideoMatte240K,PhotoMatte 13K/85)对最后结果的提升贡献了不少。
文章的方法设计的很巧妙,通过类似困难样本挖掘的方式排除了很大部分的简单区域,从而能够更好聚焦那些困难的区域,从而提升在高分辨率下的运算表现,文章的效果可以参考下图所示:
出了方法设计带来的运算速度提升之外,文章还提供了很多的matting数据集:
- 1)VideoMatte240K:包含了384段的4K视频数据和100段的高清数据;
- 2)PhotoMatte13K/85:其中包含了13665的高质量图片数据;
这些数据对最后网络性能的影响见下表所示:
2. 方法设计
2.1 整体pipeline与basic网络部分
假设输入的图片/背景图/alpha图/前景图分别使用 I , B , α , F I,B,\alpha,F I,B,α,F进行表示,那么将原来的背景替换之后得到的新图片描述为:
I ‘ = α F + ( 1 − α ) B ‘ I^{‘}=\alpha F+(1-\alpha)B^{‘} I‘=αF+(1−α)B‘
不同于之前直接预测前景,文章是通过预测前景的残差 F R = F − I F^R=F-I FR=F−I,这样的改动文章指出可以提升训练的效果,使得可以将前景预测放置在较低的分辨率网络下。对于最后前景图的结果通过下面的方式得到:
F = max ( min ( F R + I , 1 ) , 0 ) F=\max(\min(F^R+I,1),0) F=max(min(FR+I,1),0)
其实在matting的过程中绝大部分的像素都是在 [ 0 , 1 ] [0,1] [0,1]上取值的,这就使得可以在低分辩网络下预测这些像素,而在高分辨下预测那些之间的像素(也就是文章说到的困难部分),对此文章是通过采样的方式进行path select,之后对path进行优化,可参考下图所示:
这里将文章的pipeline划分为两个部分 G b a s e G_{base} Gbase和 G r e f i n e G_{refine} Grefine:
- 1)基础网络 G b a s e G_{base} Gbase:该网络用ResNet-50作为backbone,后面嫁接DeepLab-V3系列网络的部分结构,再通过双线性采样操作构建一个编解码结构。它的输入是下采样的原始图和背景图 I c , B c I_c,B_c Ic,Bc,其中