人像抠图之Background Matting v2

2023-07-12

从算法角度讲,Background Matting v2(BGMv2)和Background Matting v1(BGMv1)除了输入图像都包含有空屏图之外几乎没有任何相同点。BGMv1的特点在于除了空屏外,还增加了分割图,前后帧作为先验,并使用GAN的策略对抠图效果进行对抗优化。而BGMv2只增加了空屏一个先验,它的核心在于提出了两个网络:Base网络和Refine网络,其中base网络用于快速的在降采样的图像上得到一个低分辨率的结果,Refine网络是在Base网络的基础上,在高分辨下对选定的Patch进行进一步优化,算法流程如图1所示。它并没有BGMv1中的对抗思想。

此外,BGMv2还制作了两个庞大的高清人像抠图数据集:VideoMatte240K和PhotoMatte13K/85,这两个数据集对提升模型上也取得了非常重要的作用。


1. 问题定义

给定输入图像 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 进行微调。


2. 网络结构

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网络


2.1 base网络

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优化过后的补丁块替换到原图中便得到了最终的结果。










阅读169
分享