查看原文
其他

Image-Level 弱监督图像语义分割汇总简析

Uno Whoiam 极市平台 2021-09-20

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~


来源:知乎作者:Uno Whoiam
链接:https://zhuanlan.zhihu.com/p/80815225本文已由作者授权转载,未经允许,不得二次转载。



总结


Image-Level 的弱监督语义分割基本都是以 CAM 作为起点,然后迭代训练,过程中不断恢复出 object 的 mask,各论文唯一重要的区别就在于这个恢复策略有所不同。

Learning Pixel-level Semantic Affinity with Image-level Supervision for Weakly Supervised Semantic Segmentation


https://arxiv.org/abs/1803.10464



成绩:
VOC 2012 val:61.7%
VOC 2012 test:63.7%

本论文仅使用 Label 级的图片标注,利用CAM(class activation map)作为基础,辅助以提出的 AffinityNet 得到 mask 标签,最后以此训练分割模型。

AffinityNet 可以理解为对 CAM 进行优化的模型,它的主要作用可以理解利用 background 与foreground 在 CAM 上的区别的找出 foreground 的边界,从而形成较好的 Segmentation Mask。

参考链接:
论文笔记 Learning Pixel-level Semantic Affinity with Image-level Supervisionfor Weakly Supervised Semantic Segmentation - cv module | d
Robert Yang:弱监督语义分割psa算法笔记



Revisiting Dilated Convolution: A Simple Approach for Weakly- and Semi- Supervised Semantic Segmentation


https://arxiv.org/abs/1805.04574



成绩:VOC 2012 val:60.4VOC 2012 test:60.8

此论文也是使用 CAM 作为起点,使用辅助模型 MDC (multiple dilated convolutional)来对无标注的数据进行标注,以此来训练分割模型。

MDC 则是利用了不同 dilation rate 的 dilated conv,通过综合平均后来得到一个较为准确的 Segmentation Mask,取平均的公式:
为普通的 conv3x3,其余的为不同 dilation rate 的 dilated conv。

参考链接:《Revisiting Dilated Convolution: A Simple Approach for Weakly- and Semi- Supervised Semantic Segmentation》笔记

Multi-Evidence Filtering and Fusion for Multi-Label Classification, Object Detection and Semantic Segmentation Based on Weakly Supervised Learning


https://arxiv.org/abs/1802.09129


成绩:
VOC 2012 val:null
VOC 2012 test:55.6

Image Level weakly supervised,从 image到instance再到pixel得到Segmentation mask,这个成绩相比之下比较一般。


Weakly-Supervised Semantic Segmentation Network with Deep Seeded Region Growing


http://openaccess.thecvf.com/content_cvpr_2018/papers/Huang_Weakly-Supervised_Semantic_Segmentation_CVPR_2018_paper.pdf


成绩:
VOC 2012 val:61.4
VOC 2012 test:63.2

这篇论文的想法其实也很简单,由于 CAM 激活程度较高的是图片最 discriminative 的地方,所以,将其作为 Segmentation Mask基本上是没毛病的,而激活程度较低的就先忽略。随着模型的训练,待分割物体整体会由最 discriminative 的地方扩散开来,模型会开始能够识别物体的其它部分, CAM 渐渐变高,整个物体也就慢慢被找出来。

Benchmark:


参考链接:
MurphyAC:弱监督下的语义分割:DSRG
《Weakly-Supervised Semantic Segmentation Network with Deep Seeded Region Growing》笔记

Object Region Mining with Adversarial Erasing: A Simple Classification to Semantic Segmentation Approach


https://arxiv.org/abs/1703.08448


成绩:
VOC 2012 val:55%
VOC 2012 val:55.7%

此论文方法十分魔性: 


loop:
step 1: 训练好的分类网络,它会找出图片最 discriminative 的部分。
step 2: 擦掉分类网络所找出的图片最 discriminative 的部分,用这些图片重新训练分类网络。


循环多次后,把擦除的部分拼在一起,就可以当做 Segmentation Mask 了。

此论文方法十分魔性: 


思路有些类似 recursive training。

FickleNet: Weakly and Semi-supervised Semantic Image Segmentation using Stochastic Inference


https://arxiv.org/abs/1902.10421


成绩:
VOC 2012 val:64.9
VOC 2012 test:65.3

本论文想解决的问题是,使用 Image-Level 的标记,以 CAM 为基础的弱监督 Segmentation 存在的物体边缘难恢复的问题。解决的方法是,利用 FickleNe, 即类似 2D 的 dropout,使模型隐藏层仅通过 分类训练就可以更全面地关注物体整体的特征,而非仅关注物体最 discriminative 的部分,从而有机会通过 CAM 得到更完整的 Segmentation Mask。

FickleNet 的实现:

在展开特征图,我们在x上应用零填充,这样最终输出的大小就等于输入的大小。补零后的特征图大小为kx(h+s-1)(w+s-1),其中s为卷积核的大小(w方向或者h方向, 需要补充的部分实际上就是卷积核大小减去1的值)。
我们展开零填充的特征图,这样连续的滑动窗口位置就不会重叠,并且展开的特征图 x^expand的大小为kx(sh)x(sw)(相当于在每个wxh平面上的元素都对应着一个sxs大小的映射区域)。
然后,我们使用保留中心的dropout技术来选择x^expand上的隐藏单元。虽然扩展后的特征图需要更多的GPU内存,但是需要训练的参数数量保持不变(因为还是那些卷积权重, 只是跨步大了些),GPU的负载没有明显增加,

在展开特征图,我们在x上应用零填充,这样最终输出的大小就等于输入的大小。补零后的特征图大小为kx(h+s-1)(w+s-1),其中s为卷积核的大小(w方向或者h方向, 需要补充的部分实际上就是卷积核大小减去1的值)。

我们展开零填充的特征图,这样连续的滑动窗口位置就不会重叠,并且展开的特征图 x^expand的大小为kx(sh)x(sw)(相当于在每个wxh平面上的元素都对应着一个sxs大小的映射区域)。

然后,我们使用保留中心的dropout技术来选择x^expand上的隐藏单元。虽然扩展后的特征图需要更多的GPU内存,但是需要训练的参数数量保持不变(因为还是那些卷积权重, 只是跨步大了些),GPU的负载没有明显增加,

训练时的Classifier

为了得到分类分数:
对dropout处理过的特征图,用大小为s和步长为s的核进行卷积。
2. 然后我们得到一个大小为cxwxh的输出特征图,其中c是对象类的数量
4. 将全局平均池化(会获得一个长为c的向量)和一个sigmoid函数应用到特征图上,得到一个分类得分s(1xc).
5. 然后使用sigmoid交叉熵损失函数更新FickleNet,该函数广泛用于多标签分类。(这里使用的应该是softmax)

最后 inference 的时候,dropout 依然开启,多次推理得到 N 个 CAM, 采用了 Grad-CAM 的方式计算,即对每一类进行梯度加权叠加:

最后,CAM 某像素位置达到了阈值,就给它打上相应的标签,如果没有就 ignore,如果有多个标签,则对 N 组CAM 的 class score 求平均,把label给最高的类。

参考链接:
FickleNet: Weakly and Semi-supervised Semantic Image Segmentationusing Stochastic Inference · 语雀
凭什么相信你,我的CNN模型?(篇一:CAM和Grad-CAM)
spytensor.com/index.php

Benchmark:

Weakly Supervised Semantic Segmentation using Web-Crawled Videos 


http://zpascal.net/cvpr2017/Hong_Weakly_Supervised_Semantic_CVPR_2017_paper.pdf


成绩:
VOC 2012 val:58.1
VOC 2012 test:58.7

依旧是基于 CAM,方法大致步骤如下:
1. 使用 VOC 2012 的 Image-Level label 训练VGG。
2. 使用 VGG 来检测 video,删除无关的帧。
3. 使用筛选过的 video 通过解决图优化问题得到 Segmentation Mask,训练得到 decoder。

参考链接:
论文笔记 Weakly Supervised Semantic Segmentation using Web-Crawled Videos - cv module | d

Benchmark:

Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation


https://arxiv.org/abs/1506.04924


成绩 (0.5k mask+10k label):
VOC 2012 val:62.1
VOC 2012 test:62.5

DecoupledNet 最大的特点就是分类网络和分割网络分别训练,个人认为可以看做 coder-decoder。分类网络使用 label 级的数据训练,分割网络使用 mask 级的数据训练。
参考链接:论文阅读笔记十四:Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation(CVPR2015)

Benchmark:

Semi and Weakly Supervised Semantic Segmentation Using Generative Adversarial Network


https://arxiv.org/abs/1703.09695


成绩(1.4k mask + 10k label):
VOC 2012 on val:65.8
VOC 2012 on val:null

该论文对 GAN 在语义分割上的使用和以往有所不同,分割网络没有作为 Generator 而是 Discriminator。并且提出了 semi-supervised 训练以及 weakly-supervised 训练的框架:

semi-supervised:

在 VOC 上的实验,使用 1.4K 的强标签,其它将近 10K 张图作为未标记数据,以及 Generator 产生的假数据进行训练。Discriminator 作为分割网络则多了一类 Fake。对于未标记的数据,Discriminator 要压低 Fake 类的置信度;对于 Generator 产生的假数据,要提高 Fake 类的置信度;强标签的数据正常训练就行。

weakly-supervised :

在 VOC 上的实验,使用 1.4K 的强标签,其它将近 10K 张图作为带 Image-Level label 的数据,以及 Generator 产生的假数据进行训练,这次输入 Generator 的不止是 noise,还有 label。根据作者的意思,这样可以提高 Discriminator 发现图片与label 之间的关联。


The rationale of exploiting weak supervision in our framework lies on the assumption that when image classes are provided to the generator, it is forced to learn co- occurrences between labels and images resulting in higher quality generated images, which, in turn, help our multi- classifier to learn more meaningful features for pixel-level classification and true relationships between labels.

同样的,对于 Image-Level label 的数据,Discriminator 要提高图片中含有的相应类的的置信度;对于 Generator 产生的假数据,要提高 Fake 类的置信度;强标签的数据正常训练就行。
从结果来看,提升还是比较明显的:

Weakly-Supervised Semantic Segmentation by Iteratively Mining Common Object Features


https://arxiv.org/abs/1806.04659


成绩:
VOC 2012 val:60.3
VOC 2012 val:61.2

同样是 CAM 为起点,然后迭代优化 Segmentation Mask,算法简要流程如下:


  1. 以 CAM 为初始 Object Seeds,训练 RegionNet。

  2. RegionNet 的输出经过 Saliency-Guided Refinement (反正就是一种人为设计的先验)优化后得到 Segmentation Mask。

  3. 用得到的 Segmentation Mask 训练分割网络 PixelNet。

  4. 将 PixelNet 的输出作为 Object Seeds。


参考链接:《Weakly-Supervised Semantic Segmentation by Iteratively Mining Common Object Features》笔记

Benchmark:


Weakly Supervised Instance Segmentation using Class Peak Response


https://arxiv.org/abs/1804.00880


成绩:
VOC 2012 val:53.4
此论文的主要发现在于,在分类网络中, CAM 的 peak response 基本上可以定位被分类物体,而通过 peak 的反向传播追根溯源,可以找到被分类物体的全貌。该论文应该是第一篇用于 Instance Segmentation 的 Image-Level supervised 工作。

Adversarial Learning for Semi-Supervised Semantic Segmentation


https://arxiv.org/abs/1802.07934


成绩:
VOC 2012 val:68.4% (1.4k mask + 9k unlabeled)

训练数据上使用了两类数据进行训练:

  1. 带segmentation mask 标注的数据

  2. 没有标注的数据


模型上分为两部分:

  1. 生成网络为 FCN-style 的网络,输入图像生成 mask

  2. 判别网络输入 mask 生成 confidence map


训练生成网络的损失函数有以下三个部分:

  1. Cross Entropy Loss

  2. Adversarial Loss

  3. Semi-Supervised Loss


前两个很好理解,就训练分割常用的交叉熵损失和训练GAN时的损失函数,第三个则是对于未标注的数据,取判别网络认为置信度较高的部分对生成网络进行训练。


-End-




*延伸阅读


鼠年上极市,打卡领红包!
新参与进来的朋友快快点击
鼠年福利 | 不用集五福也能领的千元红包~ 
查看活动详情~



红包口令【4】

↓↓↓



PS:新年假期,极市将为大家分享计算机视觉顶会 ICCV 2019 大会现场报告系列视频,欢迎前往B站【极市平台】观看,春节也学习,极市不断更,快来打卡点赞吧~

https://www.bilibili.com/video/av83389980



CV细分方向交流群


添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群(已经添加小助手的好友直接私信),更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~



△长按添加极市小助手


△长按关注极市平台


觉得有用麻烦给个在看啦~  

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存