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

ContextNet是一种创新的图像matting方法,通过结合matting和context编码器来同时估计前景和alpha图。网络结构包括两个编码器和两个解码器,损失函数包括Laplacian loss和feature loss,以提高性能和视觉效果。此外,文章提出的数据增广策略包括NMS采样和图像滤波操作。

参考代码(训练部分未公开):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数据集:
在这里插入图片描述

### 研究背景与目标 在异常合成领域,现有的方法往往难以有效地合成面向分割的异常样本,且在合成效率和质量上存在一定局限。FAST旨在解决这些问题,通过结合前景感知机制和加速采样轨迹,为分割任务生成高质量的异常合成数据。 ### 核心方法 - **前景感知扩散**:该方法引入了前景感知机制,能够在扩散过程中更好地关注图像的前景区域。传统的扩散模型在合成过程中可能会对背景和前景一视同仁,而FAST能够根据前景信息调整扩散过程,使得合成的异常更符合前景的特征和结构,从而提高异常合成的质量和针对性,使其更适用于分割任务。 - **加速采样轨迹**:FAST设计了加速采样轨迹来提高合成效率。在扩散模型的采样过程中,通常需要进行多次迭代,这会导致合成速度较慢。通过优化采样轨迹,FAST减少了不必要的采样步骤,在保证合成质量的前提下,显著缩短了合成时间,提高了整体的合成效率。 ### 优势 - **高质量的异常合成**:由于采用了前景感知扩散,FAST能够生成与真实异常更为相似的合成样本,这些样本在前景区域的异常特征更加清晰和准确,为后续的分割任务提供了更有价值的训练数据。 - **高效的合成过程**:加速采样轨迹的使用使得FAST在合成速度上有了明显提升,能够在更短的时间内生成大量的异常样本,满足大规模数据训练的需求。 ### 应用场景 - **异常分割任务**:FAST生成的异常合成数据可以用于训练分割模型,帮助模型更好地识别和分割图像中的异常区域。在工业检测、医疗影像分析等领域,准确的异常分割对于故障诊断和疾病检测至关重要,FAST提供了一种有效的数据增强手段。 - **数据增强**:在数据有限的情况下,FAST可以通过合成异常样本扩充训练数据集,提高模型的泛化能力和鲁棒性。 ```python # 以下为示意代码,并非实际的FAST实现 # 假设存在一个FAST类 class FAST: def __init__(self, foreground_aware=True, accelerate_sampling=True): self.foreground_aware = foreground_aware self.accelerate_sampling = accelerate_sampling def synthesize_anomaly(self, image): if self.foreground_aware: # 实现前景感知扩散 pass if self.accelerate_sampling: # 实现加速采样轨迹 pass # 合成异常图像 synthesized_image = None return synthesized_image # 使用示例 fast = FAST() input_image = None # 假设为输入图像 synthesized = fast.synthesize_anomaly(input_image) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值