《ContextNet:Context-Aware Image Matting for Simultaneous Foreground and Alpha Estimation》论文笔记

参考代码(训练部分未公开):ContextNet

1. 概述

导读:现有的一些基于CNN网络的matting网络都是使用三色图与原始图像作为输入,之后输出这张图对应的alpha图。而这篇文章则同时输出前景图和alpha图,对此文章提出了两个编码器:matting编码器(matting encoder,ME)和context编码器(context encoder,CE),分别用于获取表征范围在局部和较大范围的信息,之后将编码之后的两个特征进行concat,之后也是经过两个解码器分别得到需要的alpha图和前景图。对此文章还引入了两个损失函数:Laplacian loss和feature loss,前者用于产生更高性能的数值(MSE,SAD等),后一个用于产生更加符合视觉直观感知的结果。此外,文章还提出了一些数据增广的策略,可以借鉴使用。

这篇文章要解决的是natural图像的matting问题,也就是需要在输入三色图和原图的情况下预测出alpha图和前景图。现有的matting方法一般是通过已知与未知区域之间的inferring和sampling实现的。问了解决natural图的matting问题提出了带有2个编码器和2个解码器的网络。

2. 方法设计

2.1 网络结构

文章提出的方法其网络结构见下图所示:
在这里插入图片描述
Matting encoder(ME):
这里使用stride=4的Exception65作为其backbone,其中stride设置较小是为了使得特征图有较大的分辨率;

Context encoder(CE):
这里也是采用的Xception65作为backbone,不过这里将stride设置为16,通过双线性上采样使得特征图尺寸与ME的对应上;

Alpha和前景decoder:
这里通过2次堆叠matting encoder的特征图实现两种预测结果的输出,输出结果尺寸与原图尺寸一致;

2.2 损失函数

文章对于alpha图的监督使用的是Laplacian loss的形式,将alpha图分解到多个(5层)高斯金字塔层级上,之后再在各个层级上做L1损失,用于监督局部与全局alpha输出,还通过加权的形式进行组合,数学表达形式为:
L l a p α = ∑ i = 1 5 2 i − 1 ∣ ∣ L i α ^ − L i ( α ) ∣ ∣ 1 L_{lap}^{\alpha}=\sum_{i=1}^52^{i-1}||L^i\hat{\alpha}-L^i(\alpha)||_1 Llapα=i=152i1Liα^Li(α)1
其中, L i ( α ) L^i(\alpha) Li(α)代表的是所在金字塔层级, α ^ , α \hat{\alpha},\alpha α^,α分别代表GT与预测alpha图。

在完成对alpha的监督之后,文章还需要对视觉直观的效果进行度量,对此文章使用度量方式为:
L F α = ∑ l a y e r ∣ ∣ ϕ l a y e r ( α ^ ∗ F ^ ) − ϕ l a y e r ( α ∗ F ^ ) ∣ ∣ 2 2 L_F^{\alpha}=\sum_{layer}||\phi_{layer}(\hat{\alpha}*\hat{F})-\phi_{layer}(\alpha*\hat{F})||_2^2 LFα=layerϕlayer(α^F^)ϕlayer(αF^)22
其中, F ^ \hat{F} F^代表的是前景GT, F F F就是预测出来的了, ϕ l a y e r \phi_{layer} ϕlayer代表的是网络中的特征图。

文章对于预测前景特征图使用下面的损失进行监督:
L F c = ∑ l a y e r ∣ ∣ ϕ l a y e r ( α ^ ∗ F ^ ) − ϕ l a y e r ( α ^ ∗ F ) ∣ ∣ 2 2 L_F^c=\sum_{layer}||\phi_{layer}(\hat{\alpha}*\hat{F})-\phi_{layer}(\hat{\alpha}*F)||_2^2 LFc=layerϕlayer(α^F^)ϕlayer(α^F)22
而对于前景图使用的是L1损失函数(只在GT alpha图大于0的部分计算):
L 1 c = ∣ ∣ f ( α > 0 ^ ∗ ( F ^ − F ) ) ∣ ∣ 1 L_1^c=||f(\hat{\alpha\gt 0}*(\hat{F}-F))||_1 L1c=f(α>0^(F^F))1

2.3 数据增广

文章除了使用COCO数据集作为背景填充之外,还使用了一一些其它的策略用于有效的数据增广(文章对比实验中显示的效果并不理想,需要根据实际情况添加):

  • 1)借用NMS的思想进行patch采样,这里采样的分数使用的是不确定像素占整体的百分比,这样就可以通过NMS去掉那些价值较低的patch,见下图所示:
    在这里插入图片描述
  • 2)使用一些图像“滤波”的操作完成数据的增广,具体的文章使用JEPG下采样与高斯滤波实现,见下图所示:
    在这里插入图片描述

3. 实验结果

Composition-1K数据集:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m_buddy/article/details/109003572