弱监督语义分割:用图像级标签实现像素级预测
弱监督语义分割:用图像级标签实现像素级预测
什么是弱监督语义分割
语义分割的目标是为图像中的每一个像素分配一个语义类别标签。传统全监督方法依赖大量像素级精确标注,成本高昂且难以扩展。弱监督语义分割(Weakly Supervised Semantic Segmentation, WSSS) 则试图摆脱这一限制,仅使用更容易获取的弱标注来训练分割模型,最常见的弱标注形式是图像级标签——即只告知一张图像中包含哪些类别,而不提供任何位置信息。
图像级标签本质上是一个多标签二值向量,例如 [猫, 狗, 背景] → [1,1,0] 表示图像存在猫和狗。从如此粗糙的信号中恢复精细的像素级预测,是该领域的核心挑战。
为什么需要弱监督方法
| 监督类型 | 标注成本 | 信息量 | 典型应用场景 |
|---|---|---|---|
| 像素级标注 | 极高 | 完整位置 | 医学图像、自动驾驶 |
| 边界框标注 | 高 | 物体区域 | 检测转分割、辅助标注 |
| 涂鸦标注 | 中等 | 稀疏位置 | 快速标注工具 |
| 图像级标注 | 极低 | 仅类别存在 | 互联网规模数据、众包 |
| 无监督 | 零 | 无 | 聚类、自监督预训练 |
图像级标签可以通过关键词搜索、用户标签、商品分类等方式近乎零成本获取。这使得弱监督分割可以充分利用海量网络图片,大大降低进入门槛,尤其适合类别繁多的场景。
核心思路:从分类到定位
弱监督语义分割的通用范式是两阶段训练:
- 种子定位阶段:使用分类网络(如卷积神经网络)在仅提供图像级标签的条件下,生成初始的、不完整但较可靠的物体位置线索(通常称为种子、激活图或伪标签)。
- 伪标签精炼与全监督训练:将种子作为初始伪标签,结合一些精炼策略(如条件随机场、多尺度推理、边界约束)迭代提升伪标签质量,然后像全监督一样训练分割网络。
关键技术一:类激活图
类激活图(Class Activation Map, CAM) 是弱监督定位的基石。以全局平均池化(GAP)后的分类网络为例:
- 最后一层卷积特征图每个通道经过 GAP 后得到一个值,再通过全连接层输出类别 logits。
- 类别 ( c ) 的激活图由该类别对应的全连接权重乘以特征图通道,再求和得到: [ \text{CAM}c = \sum{k} w_k^c \cdot f_k ] 其中 ( f_k ) 是第 ( k ) 个特征图,( w_k^c ) 是类别 ( c ) 对应的全连接权重。
CAM 能粗略高亮出分类网络决定类别时所关注的区域,但往往只激活物体最显著的部分(如猫的脸),难以覆盖完整物体区域。
改进 CAM 的常用手段
- 去除 GAP 结构:使用更大的池化或全局最大池化部分保留空间分辨率。
- 多尺度融合:输入图像多尺度测试,融合激活图,缓解漏检。
- 切分擦除学习:如
DropBlock或Hide-and-Seek,迫使网络学习区分相邻相似区域。 - 自注意力与 Transformer:利用 ViT 的自注意力直接生成更完整的注意力图。
关键技术二:伪标签生成与精炼
直接从 CAM 二值化得到的种子通常只覆盖物体的判别部分,遗漏大量像素。因此必须通过传播、优化或训练额外网络来补全。
常用精炼方法
-
条件随机场(CRF)迭代
将 CAM 作为一元势,结合图像颜色和位置作为二元势,通过 DenseCRF 可以使激活区域向边缘扩散,但容易受图像纹理误导,过分生长到背景。 -
PSA(Pixel-adaptive Synchronous Activation)与边界挖掘
如 PSA 模块在分类网络中引入跨类别关系,利用图像内物体的共现上下文扩展激活区域。 -
自训练与迭代训练
- 用初始伪标签训练一个全监督分割网络(如 DeepLab),然后用该网络重新预测训练集,生成更高质量的伪标签,反复迭代。
- 结合混合数据增强(如 CutMix)迫使模型从部分遮挡中学习完整物体。
-
辅助监督信号
- 显著性检测:使用预训练显著性模型提供物体边界先验。
- 类别无关边缘检测:强化物体边界一致性。
- 图文多模态:如 CLIP 的视觉-语言对齐帮助激活图扩散。
一个典型训练流程(伪代码)
# 阶段一:训练分类网络,生成种子
model_cls = ResNet50_with_GAP_CAM()
train_classification(model_cls, image_loader, multi_label=True)
for img, label in train_loader:
cam_maps = generate_cam(model_cls, img) # shape: C x H' x W'
# 多尺度融合、二值化、CRF后处理
pseudo_mask = postprocess(cam_maps, label)
save_pseudo_mask(pseudo_mask)
# 阶段二:使用伪标签训练分割网络
model_seg = DeepLabv3plus(num_classes)
train_segmentation(model_seg, train_with_pseudo_masks)
# 可选迭代优化
for _ in range(num_rounds - 1):
new_pseudo_masks = predict(model_seg, train_loader)
update_pseudo_masks(new_pseudo_masks)
fine_tune(model_seg, updated_masks)
常见评估指标与基准
在弱监督语义分割中,模型的性能通过标准语义分割指标衡量:
- mIoU(mean Intersection over Union):计算每个类别预测区域与真值区域的交并比,再对所有类取平均。这是最核心的指标。
- Pixel Accuracy(像素精度):正确分类的像素占总像素比例。
- 常用数据集:PASCAL VOC 2012(20前景类+背景)、MS COCO(80类)、ADE20K 等。
研究者通常报告在 VOC 验证集上的 mIoU,传统全监督方法可达 80% 以上,而顶尖的图像级弱监督方法已能将差距缩小到 70% 左右(不借助额外显著数据)。
挑战与进阶方向
当前主要瓶颈
- 显著区域偏差(Salient region bias):分类网络天然关注最具判别力的部位,难以激活全部物体像素,尤其是物体非特征区域(如汽车的轮胎、动物的四肢末端)。
- 类别混淆与共现:某些类别常一起出现(如餐桌与椅子),分类网络可能只激活其中一类,或将背景误认为关联类别。
- 小目标与多实例:图像级标签无法区分同一类别的多个实例,CAM 容易只响应面积最大的实例。
前沿探索
- 视觉-语言预训练模型(CLIP、Grounded DINO 等):利用文本监督生成更细粒度的注意力图,甚至直接预测伪掩码。
- 基于生成模型的方法:用 GAN 或扩散模型补全不完整种子。
- 点监督与图像级混合监督:在极少量点标注帮助下大幅提升伪标签质量,保持总标注成本仍远低于全标注。
- 域自适应与半监督结合:从源域全标注到目标域仅图像级标注,迁移知识。
- 自监督预训练 + 弱监督微调:利用 MAE、DINO 等预训练习得的良好特征表达,提升弱监督幻觉的完整性。
实践建议
- 入手可先复现经典方法 CAM + CRF 基线,理解激活图的分布特性。
- 尝试加入 多尺度测试 和 在线难例挖掘(OHEM) 抑制背景。
- 利用现成的 显著性检测模型 作为辅助可以有效提升边界质量。
- 迭代训练时注意控制伪标签噪声积累,可引入标签平滑和置信度阈值过滤。
- 监控每类别 IoU,找出弱点类别(往往是细长或小物体)做针对性数据增强。
弱监督语义分割正在逐步降低高精度分割的门槛,通过理解其原理与局限,你可以更有效地利用互联网规模的数据,构建成本可控的视觉理解系统。