参考论文:Real-Time High-Resolution Background Matting,我也已经发布过Real-Time High-Resolution Background Matting的论文翻译。
BGM2算法内容的参考博客:人像抠图之Background Matting v2
附录一:深度学习的基础内容,没用深度学习基础的可以从附录一开始看。
1、问题定义
Background Matting v2(以下简称BGM2),一种实现人像抠图的算法,首先我们来看人像抠图的核心实现思想。
抠图算法的定义: I = α F + ( 1 − α ) B I = αF+(1-α)B I=αF+(1−α)B
已知输入图像 I I I,背景图像 B B B,求图像 I I I的前景 I I I,以及前景概率 α α α。(前景与背景相对,指我们所需的人像及人所持的物体)
上一代BGM1的方案是直接预测前景概率,或者再加上前景 ,通过这种方式合成的新图片会有比较明显的颜色溢出问题。如下图的眼镜内区域留下残留颜色。而使用前景残差作为预测目标,不仅可以加速收敛,还可以解决颜色溢出问题。
BGM2为了更好地解决在BGM1中存在的颜色溢出问题,定义了前景残差 F R = F − I F^{R} = F-I FR=F−I,而前景 F F F可以通过前景残差 F R F^R FR得到 (残差:在数理统计中是指实际观察值与估计值之间的差):
F = m a x ( m i n ( F R + I , 1 ) , 0 ) ( 1 ) F = max ( min ( F^R + I , 1 ) , 0 )\quad(1) F=max(min(FR+I,1),0)(1)
抠图问题是一个难易样本不均衡的问题,其中重要且难分的像素点往往只存在于前景的边缘,因为非边缘部分的像素点往往是纯粹的前景或者背景,因此值往往非 0 即 1 。而边缘部分的像素点不仅数量少,而且往往是一个介于 0 和 1 之间的浮点值,它的准确率的高低往往才最能反映抠图算法的精细度。
BGM2模型为了处理这个问题,提出了Base网络与Refine网络组成的结构。其中基础网络Base,用于快速的在降采样的图像上得到一个低分辨率的结果,微调网络Refine,是在Base网络的基础上,在高分辨下对选定的Patch进行进一步优化。如下图:
2、网络结构
我们先讨论算法模块的实现,然后再搭建网络模型。
BGM2的网络模型如下图:
图3:BGMv2的网络结构,其中蓝色的是 G b a s e G_{base} Gbase网络,绿色的是 G r e f i n e G_{refine} Grefine网络。
给定一张输入图像 I I I和背景图像 B B B,首先将其降采样 c c c倍,得到 I c I_c Ic和 B c B_c Bc。 G b a s e G_{base} Gbase取 I c I_c Ic和 B c B_c Bc作为输入,输出是降采样后同等尺寸的前景概率 α c α_c αc、前景残差 F c R F_c^R FcR、误差预测图 E c E_c Ec和一个32通道的隐藏特征 H c H_c Hc。
然后,细化网络 G r e f i n