参考代码:MGMatting
1. 概述
导读:在这篇文章中提出了基于引导(guidance)的matting方法,其引导主要体现为extra-guidance和self-guidance。其中extra-guidance是通过在输入端添加三色图/分割mask/低质量alpha图,从而给网络以先验知识。对于self-guidance是在decoder的不同stage上通过添加PRN(Progressive Refinement Network)实现的,其中会将上一个stage的输出作为当前stage的guidance从而去引导不透明区域的回归。对于matting中的另外一个前景问题,文章通过另外的编解码网络去预测,从而将alpha和前景预测解耦从而得到更好的效果,此外还通过Random Alpha Blending (RAB)融合操作,得到更好更丰富的合成数据,帮助前景预测性能进一步提升。在文章的git仓库中提到可能会开源所使用的额外matting数据,有兴趣的朋友可以继续留意看看。
文章的方法并没有直接在原始图像上直接做matting,而是给予了mask引导(extra-guidance)从而提供了更好的先验知识,使得最后的结果更加鲁棒。通过self-guidance似的模型可以更加关注半透明区域,从而提升细节上的表现力。下图是其效果展示:
2. 方法设计
2.1 pipline
文章的方法pipline见下图所示:
其结构是一个典型的U型网络结构,输入是原始数据加上extra-guidance,在decoder的部分使用PRN进行半透明区域进一步挖取。
2.2 Progressive Refinement Network
这部分网络在整个pipline里面作为self-guidance的存在。它是在decoder中通过前一层的输出与当前层的输出进行融合处理,得到更加半透明区域更加精细的预测结果。在decoder中的输出表示为 α l \alpha_{l} αl,其会通过下面的计算过程得到引导 g l g_l gl:
f α l − 1 → g l ( x , y ) = { 1 , i f 0 < α l − 1 ( x , y ) < 1 0 , o t h e r w i s e f_{\alpha_{l-1}\to g_l}(x,y) = \begin{cases} 1, & if\ 0\lt\alpha_{l-1}(x,y)\lt 1\\ 0, & otherwise \end{cases} fαl−1→gl(x,y)=