从算法角度讲,Background Matting v2(BGMv2)和Background Matting v1(BGMv1)除了输入图像都包含有空屏图之外几乎没有任何相同点。BGMv1的特点在于除了空屏外,还增加了分割图,前后帧作为先验,并使用GAN的策略对抠图效果进行对抗优化。而BGMv2只增加了空屏一个先验,它的核心在于提出了两个网络:Base网络和Refine网络,其中base网络用于快速的在降采样的图像上得到一个低分辨率的结果,Refine网络是在Base网络的基础上,在高分辨下对选定的Patch进行进一步优化,算法流程如图1所示。它并没有BGMv1中的对抗思想。
此外,BGMv2还制作了两个庞大的高清人像抠图数据集:VideoMatte240K和PhotoMatte13K/85,这两个数据集对提升模型上也取得了非常重要的作用。
给定输入图像 I 和背景图像 B ,根据抠图问题的定义: I=αF+(1−α)B,传统的算法会通过其它变量求得输入图像 I 的前景 F 和前景概率 α。而BGMv2并没有直接求前景 F,而是前景残差 F^R = F - I ,而前景 F 则可以通过 F^R 由式(1)得到。
F=max(min(FR+I,1),0) (1)
之前的方案是直接预测前景概率 α 或者再加上前景 F ,通过这种方式合成的新图片会有比较明显的颜色溢出问题。例如在绿幕抠图中在边缘或者头发处容易出现的绿色毛边现象。而使用前景残差作为预测目标,不仅可以加速收敛,还可以解决颜色溢出问题。如图2所示,是模型的输入输出以及要预测的前景概率和前景残差。
图2:从左到右依次是:(a)输入图像I;(b)输入背景B;(c)预测的前景概率α;(d)预测的前景残差F^R
抠图问题是一个难易样本不均衡的问题,其中重要且难分的像素点往往只存在于前景的边缘,因为非边缘部分的像素点往往是纯粹的前景或者背景,因此值往往非 0 即 1 。而边缘部分的像素点不仅数量少,而且往往是一个介于 0 和 1 之间的浮点值,它的准确率的高低往往才最能反映抠图算法的精细度。
为了解决这个问题,BGMv2提出了由基础网络 Gbase 和微调网络 Grefine 网络组成的结构,它的思想类似于Hard Example Mining。首先先通过 Gbase 得到一个在低分辨率上的抠图效果,然后再提取一些hard的patch使用 Grefine 进行微调。
BGMv2的网络分成两个模块: Gbase 和 Grefine 。给定一张输入图像 I 和空屏图像 B ,首先将其降采样 c 倍,得到 Ic 和 Bc 。 Gbase取 Ic 和 Bc 作为输入,输出同样是降采样尺寸的前景概率 αc ,前景残差F^R_c ,Error Map Ec 以及隐层节点特征 Hc 。然后 Grefine 根据 Ec 中值较大的像素点取 Hc, I 以及 B 中对应的patch(难样本)来优化F^R 和 α,整个过程如图3所示。
图3:BGMv2的网络结构,其中蓝色的是base网络,绿色的是refine网络
BGMv2借鉴了deeplab v3[3]的网络结构,包含骨干网络,空洞空间金字塔池化和解码器三部分组成:
骨干网络:可以采用主流的卷积网络作为,作者开源的模型包括ResNet-50,ResNet-101以及MobileNetV2,用户可以根据速度和精度的不同需求选择不同的模型;
空洞空间金字塔池化:(Atrous Spatial Pyramid Pooling,ASPP)是由DeeplabV3提出并在实例分割领域得到广泛应用的结构,人像抠图和实例分割本质上式非常接近的,因此也可以通过ASPP来提升模型准确率;
解码器:解码器是由一些列的双线性插值上采样和跳跃连接组成,每个卷几块由 3×3卷积,BN以及ReLU激活函数组成。
如前面介绍的, Gbase 的输入是 Ic 和 Bc ,输出是 αc , F^R_c , Ec 以及 Hc。其中Error Map Ec 的Ground Truth是 E^* =|α−α∗|,Error Map是一个人像轮廓的一个图,如图4所示。通过对Error Map的优化,可以使得BGMv2有更好的边缘检测效果。
图4:BGMv2的Error Map
Grefine 的输入是在根据 Ec 提取的 k 个补丁块(patches)上进行进行精校, k可以提前指定选择top- k 个或是根据阈值卡若干个。用户也可以根据速度和精度的trade-off自行设置 k 或者阈值的具体值。对于缩放到原图 1/c 的 Ec ,我们首先将其上采样到原图的 1/4 ,那么 E4 中的一个点便相当于原图上一个 4×4 的补丁块,那么相当于我们要优化的像素点的个数总共有 16k 个。
Grefine的网络分成两个阶段:在1/2的分辨率和原尺寸的分辨率上进行精校。
•Stage 1:首先将 Gbase 的输出上采样到原图的 1/2 ;然后再根据 E4选择出的补丁块,从其周围在其中提取 8×8 的补丁块;再依次经过两组$3\times3$的有效卷积,BN,ReLU将Feature Map的尺寸依次降为 6×6 和 4×4 。
•Stage2:再将Stage 1得到的 4×4 的Feature Map上采样到 8×8 ,再依次经过两组 3×3 的有效卷积,BN,ReLU将Feature Map的最终尺寸降为 4×4。而这个尺寸的Feature Map对应的ground truth就是我们上面根据 E4 得到的补丁块。
图5:Refine网络的结构细节
最后我们将降采样的 αc 和F^R_c 上采样到原图大小,再将Refine优化过后的补丁块替换到原图中便得到了最终的结果。