论文详情
论文标题:APC: Adaptive Patch Contrast for Weakly Supervised Semantic Segmentation
论文作者:Wangyu Wu,Tianhong Dai,Zhenhong Chen,Xiaowei Huang,Fei Ma,Jimin Xiao
发表时间:2024
链接:https://arxiv.org/abs/2407.10649
摘要
弱监督语义分割(Weakly Supervised Semantic Segmentation, WSSS)仅使用图像级标签,因其成本效益高而备受关注。典型框架是使用图像级标签作为训练数据生成像素级伪标签,并对其进行精炼。最近,基于视觉Transformer(Vision Transformer, ViT)的方法在生成可靠的伪标签方面展现出优越的能力,尤其是在识别完整的目标区域时,相较于卷积神经网络(CNN)方法表现更佳。然而,目前的ViT方法在使用patch embedding时存在一些局限性,容易受到某些异常patch的主导影响,此外,许多多阶段方法训练时间长且耗时,因此缺乏效率。因此,本文提出了一种名为自适应Patch对比(Adaptive Patch Contrast, APC)的新型ViT弱监督语义分割方法,该方法显著增强了patch embedding的学习能力,从而提高了分割效果。APC通过自适应-K池化(Adaptive-K Pooling, AKP)层解决了之前最大池化选择方法的局限性。此外,我们提出了Patch对比学习(Patch Contrastive Learning, PCL),以增强patch embedding,从而进一步提升最终的分割结果。我们还改进了现有的无需类激活映射(CAM)的多阶段训练框架,将其转化为端到端的单阶段训练方法,从而提高了训练效率。实验结果表明,我们的方法在较短的训练时间内,在PASCAL VOC 2012和MS COCO 2014数据集上优于其他最新的弱监督语义分割方法,表现出更高的效果和效率。
背景
目前在弱监督语义分割领域常用的方法就是利用图片和类标签通过CAM产生伪标签,但是CAMs本身具有的在准确估计对象的形状和定位方面不准确的特点具有局限性。尽管在最近的工作中人们通过对CAM产生的伪标签优化、设计各种优化策略来增加最后生成的final pseudo的准确度,但是仍然无法摆脱CAM的这种限制。在这种情况下,一些研究者转向使用基于ViT-based的架构运用到弱监督语义分割任务中,例如:ViT-PCM、AFA等等。然而,目前基于全局最大池化来预测分数最高的Patch进而预测的方法可能会由于错误的分类而影响最终的结果,缺乏鲁棒性。所以在本文作者利用了一些方法解决这些问题。
动机
1. 现存的基于ViT的没有使用CAM的架构利用最大池化层将image embedding 与 softmax连接起来,产生不同类的分数,这样的方法缺乏鲁棒性。
2. 现存的基于ViT的没有使用CAM的架构通常包含多阶段的训练,这种方法使得训练过程的效率大大降低。
3. 随着模型中网络层数的增加可能会导致。
改进
1. 通过incorporating adaptive-k pooling,解决个别被错误分类的Patct对最后结果造成影响的问题。
2. 提出了一个对比学习的方法(Patch Contrastive Learning)的方法通过增加不同类别的patch之间的距离,减少同一类patch的距离,从而提高patch embedding的类内精致性和类间差异性,进一步提高伪标签的质量。
3. 提出了一个端对端的但阶段训练框架,解决了对阶段框架效率低下的问题,并且在分割任务下准确率优于其他方法。
方法
首先输入的图片被分割成s个Patch小块,具体如下:
Input image
Input patch
其中
这里的d是预先设定的值,与选用的backbone有关,如果选用ViT-B/16那么d一般就为16。
然后这些patch会被送入ViT,输出是patch向量(patch embedding)大小为s×e。
接着被送入BiSLTM网络,被进一步优化,简要来说BiSLTM的作用是提升特征表示,使得能够捕捉水平和垂直方向的信息,输出的结果为(与大小相同)。
紧接着作为三个分支的输入:
1.
Fout被输入到seg decoder中,seg decoder 的工作原理主要是将高层特征映射转换为更细致的分割图像。这个模块通常在语义分割任务中使用,旨在对每个像素进行分类。
主要通过上采样的方式增加特征图的分辨率,然后经过全连接层,使得对每个像素点可以做分类的预测,每个像素点都包含了所有类的分数,然后通过这些分数生成掩码。
2.
Patch Contrastive Learning
这个公式表示两个patch向量之间的距离,而且结果在1到-1之间,越接近-1说明这两个向量相距远。
这个公式的作用是归一化,作用是可以使得上面计算的结果可以控制在0-1之间。
同时,正如上面所说其实就是每个patch对于每个类c的分数,所以作者设定了一个阈值来讲patch分为high confidence和low confidence,具体如下:
最后作者设置了一个loss函数实现对比学习:
是high confidence patch的个数
是low confidence patch的个数
3.
FW经过softmax函数归一化生成Z,Z表示每个patch对于所有类的预测分数,Z的大小为s×|C| 。
然后Z被分别输入到Patch To Pixel模块和Adaptive-k pooling模块中
Patch To Pixel模块的作用就是通过得到的Z细化产生分割掩码
Adaptive-k pooling的作用就是优化Patch To Pixel的过程
Patch To Pixel
已知输入Z的大小为s×e然后同样经过上采样增加特征图的分辨率
最后细化的结果就作为掩码
然后这个掩码的结果与之前seg decoder生成的掩码有一个二元交叉熵损失。
Adaptive-k pooling
Adaptive-k pooling通过选取每个类别下的k个patch的平均值,最为该图像的预测分数。
算法如下:
模型的输出Z替代了传统的 max pooling 层,将每个类别多个 patch 的预测分数映射为图像级别的类别预测。
并且这里的K是自适应变化的,具有灵活性,并且更具鲁棒性。
总结
在这项工作中,我们提出了一种APC(Adaptive Patch Contrastive)方法,用于弱监督语义分割,而不依赖于类激活图(CAM)。与之前的方法不同,APC 通过自适应 K 池化来选择 k 个 patch,将 patch 级别的分类映射到图像级别分类,从而缓解了潜在误分类的 patch 问题。此外,我们还提出了patch 对比学习(PCL),以进一步增强 patch 的特征表示。在同一类别中,PCL 的目标是减少高置信度 patch 之间的距离,并增加高置信度 patch 与低置信度 patch 之间的距离。通过将这两部分结合,我们的方法在仅使用图像级标签的弱监督语义分割任务中实现了最先进的结果。