Weakly- and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation

本文探讨了在仅有弱监督数据(如图像级标签、边界框标注)或少量强监督数据的情况下,如何训练深度卷积神经网络进行图像语义分割。提出了一种基于期望最大化(EM)的方法,在这种设置下训练模型,并在PASCAL VOC 2012基准测试上取得了竞争性的结果,显著减少了标注工作量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

abstract

Deep convolutional neural networks (DCNNs) trained on a large number of images with strong pixel-level annotations have recently significantly pushed the state-of-art in semantic image segmentation. We study the more challenging problem of learning DCNNs for semantic image segmentation from either

  1. weakly annotated training data such as bounding boxes or image-level labels or
  2. a combination of few strongly labeled and many weakly labeled images, sourced from one or multiple datasets.

We develop Expectation-Maximization (EM) methods for semantic image segmentation model training under these weakly supervised and semi-supervised settings. Extensive experimental evaluation shows that the proposed techniques can learn models delivering competitive results on the challenging PASCAL VOC 2012 image segmentation benchmark, while requiring significantly less annotation effort. We share source code implementing the proposed system at https://bitbucket.org/deeplab/deeplab-public.

Proposed Methods

像素级别的标注(全监督)

目标函数是:
J ( θ ) = log ⁡ P ( y ∣ x ; θ ) = ∑ m = 1 M log ⁡ P ( y m ∣ x ; θ ) J(\boldsymbol{\theta})=\log P(\boldsymbol{y} | \boldsymbol{x} ; \boldsymbol{\theta})=\sum_{m=1}^{M} \log P\left(y_{m} | \boldsymbol{x} ; \boldsymbol{\theta}\right) J(θ)=logP(yx;θ)=m=1MlogP(ymx;θ)
式中, θ \theta θ是DNN的参数,每个像素的标签分布可以按照下式计算:
P ( y m ∣ x ; θ ) ∝ exp ⁡ ( f m ( y m ∣ x ; θ ) ) P\left(y_{m} | \boldsymbol{x} ; \boldsymbol{\theta}\right) \propto \exp \left(f_{m}\left(y_{m} | \boldsymbol{x} ; \boldsymbol{\theta}\right)\right) P(ymx;θ)exp(fm(ymx;θ))
式中, f m ( y m ∣ x ; θ ) f_{m}\left(y_{m} | \boldsymbol{x} ; \boldsymbol{\theta}\right) fm(ymx;θ)是DCNN在第 m m m个像素的输出,使SGD即可优化 J ( θ ) J(\boldsymbol{\theta}) J(θ)

图象级别的标注

当只有图像级注释可用时,我们可以观察到图像像素值 x \boldsymbol{x} x和图像级标签 z \boldsymbol{z} z,但像素级分割结果 y \boldsymbol{y} y是潜在变量。建立如下概率图模型:
P ( x , y , z ; θ ) = P ( x ) P ( y ∣ x ; θ ) P ( z ∣ y ) = P ( x ) ( ∏ m = 1 M P ( y m ∣ x ; θ ) ) P ( z ∣ y ) P(\boldsymbol{x}, \boldsymbol{y}, \boldsymbol{z} ; \boldsymbol{\theta})=P(x)P(y|x;\theta)P(z|y)=P(\boldsymbol{x})\left(\prod_{m=1}^{M} P\left(y_{m} | \boldsymbol{x} ; \boldsymbol{\theta}\right)\right) P(\boldsymbol{z} | \boldsymbol{y}) P(x,y,z;θ)=P(x)P(

<think>好的,我现在需要帮助用户了解多类标记Transformer(MCTformer)在弱监督语义分割中的应用或实现。首先,我得先回顾一下用户提供的引用内容,看看有哪些关键点需要覆盖。 根据引用[2]和[4],MCTformer的核心是使用多个类别特定的token,替代传统ViT中的单一cls token。这样每个类别的token可以生成对应的注意力图,从而定位不同类别的对象。这点很重要,需要详细解释。 然后,用户提到实现和应用。应用方面,引用[5]指出MCTformer能生成高质量的伪标签,用于训练语义分割模型。实现的话,可能需要包括模型架构,比如多类token的设计,类感知训练策略,以及如何结合补丁到补丁的注意力来优化定位图,如引用[2]所述。 还有,引用[3]讨论的过度平滑问题,MCTformer可能通过多类token和注意力机制来缓解,这也是一个值得提到的点。此外,如何与CAM互补,如引用[2]和[5]提到的,需要说明两者结合的优势。 用户可能需要具体的实现步骤或代码结构,但根据引用中没有提供代码,可能需要从架构层面描述。例如,模型由哪些部分组成,训练时如何利用多类token,如何计算损失等。 需要确保回答结构清晰,分点说明原理、实现步骤和应用场景,并引用正确的来源。同时,要使用中文,数学公式用$...$,独立公式用$$...$$,但根据问题描述,可能不需要太多公式,但如果有的话要注意格式。 最后,生成相关问题,帮助用户进一步探索。比如优化方法、与其他技术的对比、实验效果等。这些问题应该基于引用内容,比如引用[3]提到的过度平滑解决方案,可以作为相关问题之一。 现在,整理这些思路,确保覆盖所有关键点,引用正确的文献,并保持回答的自然流畅。</think>### 多类标记Transformer(MCTformer)在弱监督语义分割中的应用与实现 #### 核心原理 1. **多类标记设计** 传统视觉Transformer(ViT)仅使用单个`[CLS]`标记生成类别无关的注意力图(class-agnostic)。而MCTformer引入与类别数量相等的多个`[CLS]`标记,每个标记对应一个特定类别(class-specific)。通过类到补丁(class-to-patch)的注意力机制,可直接定位不同类别对象的空间区域[^4]。 **数学表示**:设类别数为$C$,则注意力图矩阵为$A \in \mathbb{R}^{C \times N}$($N$为图像块数量),每个类别对应一行注意力权重。 2. **补丁间关联优化** 通过补丁到补丁(patch-to-patch)的Transformer自注意力,捕捉图像块之间的语义关联性。例如,若两个补丁的注意力权重较高,则可能属于同一物体。这有助于细化初始定位图,解决边界模糊问题[^2]。 3. **与CAM的互补性** MCTformer生成的注意力图可与传统的类激活图(CAM)结合: $$ L_{final} = \alpha L_{MCT} + (1-\alpha)L_{CAM} $$ 其中$\alpha$为权重系数,实验表明两者结合可显著提升伪标签质量[^5]。 #### 实现步骤 1. **模型架构** - **输入**:图像分割为$N$个补丁,嵌入为序列$X \in \mathbb{R}^{N \times d}$。 - **多类标记**:添加$C$个可学习的类别标记$\{t_1, t_2, ..., t_C\}$,构成输入序列$[t_1, t_2, ..., t_C; X]$。 - **Transformer编码器**:通过多层自注意力计算,输出标记与补丁的交互特征。 2. **类感知训练策略** - 仅用图像级类别标签监督,损失函数为多标签分类损失: $$ \mathcal{L}_{cls} = -\sum_{c=1}^C y_c \log(p_c) $$ 其中$y_c$为类别$c$的标签,$p_c$为预测概率。 - **注意力图生成**:从最后一层Transformer提取类标记与补丁的注意力权重,归一化后得到定位热图。 3. **定位图优化** - 利用低层Transformer的patch-to-patch注意力构建亲和矩阵$S \in \mathbb{R}^{N \times N}$,通过随机游走(Random Walk)优化初始定位图: $$ \hat{A}_c = S \cdot A_c $$ 其中$A_c$为类别$c$的初始注意力图。 #### 应用场景 1. **伪标签生成** MCTformer输出的定位图可直接作为语义分割模型的训练标签。例如,在PASCAL VOC数据集上,其生成的伪标签mIoU达到68.2%,优于CAM基线(56.3%)[^5]。 2. **与其他技术的结合** - **弱监督目标检测**:定位图可扩展用于对象边界框预测。 - **医学图像分析**:在标注稀缺的医疗影像(如肿瘤分割)中减少人工标注成本。 #### 代码框架(伪代码) ```python class MCTformer(nn.Module): def __init__(self, num_classes, embed_dim): super().__init__() self.cls_tokens = nn.Parameter(torch.randn(num_classes, embed_dim)) # 多类标记 self.transformer = TransformerEncoder() # 标准Transformer编码器 def forward(self, x): # x: [batch_size, num_patches, embed_dim] cls_tokens = self.cls_tokens.unsqueeze(0).expand(x.size(0), -1, -1) x = torch.cat([cls_tokens, x], dim=1) # 拼接多类标记 x = self.transformer(x) # 提取类标记与补丁的注意力权重 attn_weights = self.transformer.get_last_selfattention()[:, :, :num_classes, :] return attn_weights ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值