先说结论:这篇2020年CVPR的论文是弱监督语义分割绕不开的一篇,核心贡献是把“先用图像级标签生成CAM粗定位、再单独做区域扩张”的老套路,改成了端到端的粗到细两阶段网络,并且引入特征分布约束,解决没有像素级标签时的监督问题。论文全名是 Coarse-to-fine Semantic Segmentation from Image-level Labels,网络命名为WCESN,作者后来常被引用的一句话是:与其伪造更细的标签,不如设计一个与标签粒度匹配的监督方式。
如果你正打算入门弱监督分割,或者想找一个“不太折腾、可复现、并且思路值得迁移”的baseline,这篇笔记会很有用。我会按问题设定、网络结构、损失设计、训练细节、实验结果、复现体会的顺序讲,重点讲清楚它和当时主流两段式方法有什么不同,以及那个看起来很绕的“特征分布约束”到底在干什么。
1. 这篇论文到底在解决什么问题
1.1 弱监督语义分割的问题设定
先对齐一下概念。语义分割的任务是对图像每个像素预测类别,标准做法是用像素级标注训练,一张图从物体边缘到内部空洞全部人工描出来,成本极高。VOC级别的一张图,复杂场景描半小时以上很正常,数据集一大,标注费根本压不住。弱监督方向研究的就是:用更便宜的标注,尽量逼近全监督的上限。
图像级标签是其中最便宜的一种。标注员只需要勾选“图里有哪些类别”,不用管位置,成本可以降到像素标注的十分之一。但便宜有代价:类别标签只告诉你有“猫、汽车、人”,不告诉你在哪。分类网络为了做分类,天然只依赖“最能区分类别”的图像区域——猫的耳朵和脸、汽车的轮毂和车灯。这种归纳偏置注定了单纯靠图像级标签训练出来的定位结果一定是残缺的,而不是完整物体掩码。
这个方向的标准范式是两步走:第一步用CAM类激活图生成粗种子,第二步在图像特征上把这些种子扩张成完整掩码。论文瞄准的正是这两个环节之间的裂缝:粗种子错了,后面再怎么扩张都救不回来。
1.2 只用图像级标签,难在哪
具体到图像级标签场景,有三个人尽皆知的老大难问题。
第一,判别区域局部化。CAM响应高的地方是分类器最有把握的像素,往往集中在物体最有辨识度的部位。对猫是脸和花纹,对汽车是轮毂,对人是头和手。物体的平坦躯干、大块纯色区域,因为不提供分类判据,CAM基本不给响应。
第二,多尺寸与多实例问题。图像里同类物体出现多个、或者物体尺寸差异很大的时候,CAM通常只覆盖最显著的那一个,小实例容易被整体漏掉。更麻烦的是,当两个类别外观相似,CAM可能同时激活同一堆像素,顶部结果互相重叠,谁都不完整。
第三,背景像素难以定义。没有被任何前景类别激活的像素,未必是背景,很可能只是某个类别的低判别区域。图像级标签里连“背景”这个概念都不存在,分类器没有动力去学习“哪里不是物体”。
所以早期方法的通病是:CAM生成种子,然后通过像素相似度做随机游走、区域生长或者传播扩张。这类方法代表作很多,但结构上有个共性的硬伤——粗图质量决定了整个流程的上限,扩张阶段无法反哺修正粗图的错误,误差只能单向传导。
2. WCESN的网络结构:粗模块和细模块各干了什么
2.1 粗分割模块CSM:把注意力变成完整的粗图
WCESN的骨架采用ResNet在ImageNet上的预训练权重,后面串联两个模块,第一个就是CSM(Coarse-Segmentation Module)。它的职责是产出“类别粒度的粗分割图”。
输入是骨干网络最后一层的特征图,输出两类响应图:前景响应图,每个语义类别一张;背景响应图,全局一张。内部的核心是一个注意力结构,让分类得分能够“解释”到空间位置。我理解它的本质是CAM的一种注意力化改造:传统CAM靠分类头的梯度回传生成响应图,同一套判别特征被所有类别共用;而CSM里的注意力结构对不同类别学习不同的空间权重,类别之间形成竞争关系,迫使每个类别去关注自己独有的区域。
这个设计比普通CAM多了一个显式的背景通道,正好对上弱监督分割的第三个老大难问题。背景通道的存在,让网络在训练时有明确目标去学习“哪些区域不属于任何已知前景”,而不是把所有低响应像素稀里糊涂归给某一个类别。
还有个容易忽略的细节:CSM输出的粗图并不是拿来直接当最终结果的,它的角色是“空间先验”或“软种子”,喂给下一级模块继续处理。也就是说,粗模块不只负责出图,还负责为细模块提供一张带着不确定性的初始定位。
2.2 细分割模块FSM:在特征层面做矫正
FSM(Fine-Segmentation Module)的任务一句话就能说清:给定粗图和骨干特征,输出精细的分割结果。
为什么不能直接用粗图?因为粗图边界糊、内部有洞、小目标丢失、多实例重叠。FSM要做的,是利用特征图里更细的结构信息把这些缺陷修掉。它的内部结构是两条分支:前景分支处理类别相关特征与粗图的融合,背景分支处理背景特征与背景图的融合,两条分支输出后做通道拼接,再由卷积层融合成最终的像素级预测。
这里有个理解重点:FSM并不是把粗图做插值放大,也不是拿粗图当硬标签来学。它是在特征统计分布的意义上与粗图保持一致性,同时获得比粗图精细得多的边界。这种“不求逐点一致、只求分布一致”的约束,是整篇论文最有技术含量、也最值得单独拎出来讲的地方。
另外一个值得注意的设计取向是信息流。粗模块和细模块在同一个计算图里,梯度可以回传,整个系统是一体的。对比传统“CAM生成种子→单独的传播算法扩张”两段式流程,WCESN的粗到细是在一个网络里完成的,训练时可以联合优化,误差传导链缩短了,也让端到端微调成为可能。
3. 三个损失函数:分类、组合、分布约束
3.1 分类损失与组合损失
WCESN的监督信号有三个来源,逐个看。
第一个是分类损失。骨干特征经过全局池化后接多标签分类头,用图像级标注做监督,损失函数就是常规的sigmoid交叉熵。这项任务表面上很平淡,但它是整个系统的地基。分类器学到的特征决定了CSM注意力图的质量,分类不准,后面全是空中楼阁。这也是弱监督分割里几乎所有人都会先做的一步:先把分类打准,再把分类的“注意力”迁移到空间定位上。
第二个是组合损失,约束的是CSM输出的那C+1张图在像素层面的关系。C张前景图和1张背景图是分开预测的,如果不加约束,它们可能互相打架:同一个像素同时被两个类别高响应,或者被所有类别一起忽略。组合损失拆成两项:
- 交集约束:同一像素位置,多个类别不应同时激活,惩罚前景图之间的乘积。
- 并集约束:所有前景图与背景图在同一像素上的响应和应接近1,不允许出现“谁都不认领”的空洞。
组合损失在弱监督分割里几乎是标配,大小论文都在用。它的价值在于给一组独立预测的图之间注入“互斥且完备”的先验,否则类别间没有协调,最终融合出来的预测图会乱成一锅粥。
3.2 特征分布损失:这篇论文真正的核心
第三个损失是分布损失L_dist,也是全篇最需要花时间消化的设计。
没有像素级标注时,最直觉的替代方案是生成伪标签,然后做逐像素交叉熵。但伪标签有噪声,而且一旦生成就固定了,网络会很有“热情”地去拟合错误,把小毛病学成大毛病。
论文换了一个思路:不要求预测结果在像素级别等于种子,而是要求预测结果对应的特征分布,和粗图种子对应的特征分布尽量一致。具体可以拆成三步理解。
第一步,从粗图中筛出每个类别的高置信像素。以类别c为例,取粗图上激活值排在前K%的位置。
第二步,在这些位置取出骨干网络的特征,统计类别c的特征分布参数,也就是均值和方差,得到一个高斯分布,当作目标分布。
第三步,从FSM预测的概率图里,按“预测为类别c”的像素,同样统计特征分布,再用KL散度衡量预测分布和目标分布之间的距离,作为损失反向传播。用公式表达就是:
L_dist = Σ_c KL( N(μ^fine_c, Σ^fine_c) || N(μ^coarse_c, Σ^coarse_c) )这个设计妙在两点。一是避开了逐像素匹配对伪标签精度的苛刻要求:预测结果不需要在每一个像素上都和粗图对得上,只要整体特征分布的形态接近,就被视为合格,网络因此保留了细化边界和填补空洞的自由度。二是抗噪性强:伪标签逐点监督会被单个错误点带偏,而分布统计把一整批像素的特征揉在一起,个别错误像素对均值和方差的影响非常有限。
打个不精确但好懂的比方:这就像老师不要求你每个字都写得和字帖一样,而是检查你整篇字的“风格特征”是否接近字帖风格。风格对了,个别笔画有差异也可以接受,学生反而能写出自己的细节。
4. 训练设置与工程实现细节:如何稳定复现这套结构
4.1 两阶段训练策略
论文的训练节奏是典型的粗到细渐进式,这一步复现时最容易出问题。
第一阶段,训练骨架和CSM,用分类损失加组合损失,目标是让CSM产出可信的粗注意力图。这个阶段可以理解成“在图像级标签下,训练一个带背景通道的CAM”。
第二阶段,载入第一阶段权重,把FSM接入继续训练。此时分布损失开始发挥作用,它与组合损失共同监督,让FSM在保持与粗图分布一致的前提下细化结果。
我自己的实操体会是:第二阶段千万别一上来就把所有损失权重拉满。分布损失刚起步时梯度偏大,很容易把骨架特征冲乱,造成训练不收敛或者收敛到次优。先让分布损失用一个小权重跑几个epoch,等FSM的输出趋于稳定,再把权重调到论文设置的目标值,成功率会明显提高。
回看这篇论文的训练设置,它没有用那种花哨的自训练循环、也没有迭代式的重新标注,靠的就是分阶段联合训练。这种做法工程上更稳,也更容易复现,对入门者友好得多。
4.2 优化器、数据增强与后处理
工程细节上,论文设置放在当时属于常规配置,但每一项都对最终结果有实打实的影响。
输入侧,图像统一缩放到一个固定尺寸(常见做法是448×448附近),训练时做随机水平翻转和随机裁剪。VOC这种规模的数据集,batch size在8到16之间比较常见,显存不够就减半,或者用梯度累积维持等效batch。优化器选SGD,初始学习率0.001左右,骨架层可以适当降低,学习率用poly衰减。权重衰减1e-4、动量0.9,是语义分割训练的经典组合。
后处理强烈建议保留DenseCRF。弱监督方法输出的概率图天生偏“软”,物体边缘往往肉乎乎的,CRF通过原始图像的颜色和位置势函数,把边界“掰”到真实的物体边缘上。这一步通常能带来近1个百分点的mIoU提升,实现成本极低,属于整个流程里性价比最高的操作,不建议省略。CRF的迭代次数和高斯核权重按通用分割任务默认值调一遍就够,不用过度纠结。
数据增强也值得多说一句。弱监督方法对数据增强的敏感度比全监督更高,因为本来就信息不足。随机裁剪和翻转相当于变相扩大了物体相对尺度的分布,能明显缓解小目标漏检问题。
5. 实验结果:VOC 2012上的数字与观察
5.1 VOC 2012 val上的定量表现
论文在PASCAL VOC 2012上进行实验,这是弱监督分割最常用的评测场。我把论文报告的结果和同赛道几个代表性方法放在一起看(下面数字来自各论文原表,跨论文对比存在实现差异,看量级即可):
| 方法 | 监督形式 | VOC 2012 val mIoU(%) |
|---|---|---|
| CAM种子+区域扩张 | 图像级 | 50~56 |
| AffinityNet | 图像级 | 61.7 |
| PSA | 图像级 | 61.9 |
| IRNet | 图像级 | 63.3 |
| SEAM | 图像级 | 64.5 |
| WCESN(本篇论文) | 图像级 | 61.6 |
| 全监督参考 | 像素级 | 72以上 |
单看这张表,WCESN的61.6并不是这个赛道最强的,和IRNet、SEAM有明显差距。但注意它的位置:和AffinityNet、PSA基本持平,而后两者都依赖额外的像素间相似度建模或者多阶段传播机制。也就是说,WCESN用一个更简洁的端到端单网络结构,就能打到两段式方法的同一水平线。
CRF后处理之后,论文报告的mIoU还能再往上走接近1个点。这个涨幅在弱监督方法里属于正常水平,也说明网络输出的概率图离真实边界还差临门一脚,后处理补的正是这一脚。
5.2 结果背后的两点观察
第一点,是可视化结果里边界质量的提升。论文的定性对比图里能明显看到,WCESN输出的物体轮廓比纯CAM平滑很多,尤其在树干、建筑边缘、长条状物体这类有连续结构的地方。这印证了FSM阶段分布约束的实际作用:它不像伪标签那样把网络锁死在离散的错误像素上,而是在保持类别一致性的前提下,给了网络贴合物体真实结构的空间。
第二点,是把60到65这个区间放大看,几乎所有图像级标签方法都挤在这里,竞争非常拥挤。WCESN的价值不体现在刷新纪录,而是示范了一套更干净的范式:单网络、软约束、端到端,可以替代“多阶段+伪标签硬监督”。这种范式层面的贡献,比一个孤立mIoU数字对后续工作的启发更大。
6. 读完之后的一些实际体会
6.1 这套设计最值得借鉴的两件事
第一件,是“粗到细”的抽象。把CSM理解为空间先验生成器、FSM理解为先验矫正器,这个框架可以原封不动地迁移到很多后续问题上。现在做开放词汇分割的不少工作,用CLIP的热力图当先验再微调分割头,本质就是同样的思路:粗的、不确定的定位信号,加一个细的、可学习的矫正模块。
第二件,是“特征分布约束”的方法论。给不懂监督信号怎么用的问题提供了一个比伪标签优雅得多的答案:用分布的相似性替代逐点的一致性。你哪怕不做语义分割,只做图像级标签引导的定位、弱监督目标检测、异常检测,这个“统计式弱监督”的思路都值得平移。它的关键启发是:当你手上的监督信号很弱时,不要硬把它伪装成强信号去用,而是设计一个与信号强度匹配的监督形式。
组合损失这种结构化约束虽然简单,但在我自己复现类似工作时确实是“缺了就不行”的部分,属于看起来不起眼、实际很关键。建议所有做弱监督视觉任务的读者都把这条记进自己的工具箱。
6.2 复现时需要注意的几个坑
第一,别省CRF。有同学嫌CRF是独立工具链、调参麻烦,想用网络结构里的损失代替它,实测效果差距明显。弱监督方法输出的概率图天生偏软,CRF的像素对势能补得非常扎实,属于能白捡的分数。
第二,显存取舍。两个串行模块加多张注意力图,中间变量非常多,batch size很容易被压小。如果显存卡住,优先砍batch并开梯度累积,不要砍输入分辨率。分辨率下降对弱监督的影响比对全监督更敏感,因为本身可用信息就少,再砍分辨率等于自断一臂。
第三,盯紧分布损失的前期震荡。KL散度在小样本统计上是有偏的,训练早期高置信像素少,统计不稳定,loss曲线容易抖。遇到这种情况,我的经验是先把粗模块训稳,再开细模块,或者给分布损失加一个小起始权重,等统计稳定后再加码。
6.3 后续还可以往哪个方向改
往后续想,这个方向的演进脉络其实很清楚。
粗图的源头可以换。CAM的判别区域局限属于先天缺陷,后来大量工作证明,跨图共注意力、对比学习拉近同类特征、CLIP文本-图像对齐热力图,都能提供比单图CAM更完整的空间先验。WCESN的CSM如果换成这些更强的先验生成器,FSM理论上会直接受益。
分布约束本身也可以做得更细。论文的粒度是“每类一个高斯分布”,统计层级偏粗。后续工作有在超像素内部做特征对齐、逐像素embedding一致性约束的,跟论文的思路互补性很强。把这两者结合起来,细粒度约束补局部,全局分布约束控整体,效果应该比单独用任何一个都好。
我自己从这篇论文里带走的最重要一条,是“监督信号的粒度必须和约束的粒度匹配”这个原则。手头只有图像级标签,就别硬造逐像素伪标签去逼模型;设计一个分布级的软约束,往往反而能得到更稳的结果。这个原则放到现在的大模型时代依然适用,也算我读完这篇论文收获最大的地方。