【综述笔记】一些弱监督语义分割论文

2020-04-28 10:18:00 浏览数 (1)

这里的弱监督信息为image-level的类别信息,即没有像素级的语义分割标签,而仅有图像级的类别标签,即知道每张图里有哪些类别。

[1] 2016_ECCV_网络提取信息生成mask前后景_设计损失函数_增强弱监督语义分割_CRF_LSE

[2] 2016_ECCV 语义分割和目标定位_协同学习的弱监督方法

[3] 2016_ECCV_SEC_种子定位信息_边界约束的CRF指导_池化聚合法_设计损失函数_提高弱监督

[4] 2017_CVPR_种子定位信息_显著性区域信息_对mask进行标注的几种方法_提高弱监督

[5] 2017_CVPR_用CAM提取网络视频有效帧及关注区_图形学再细化得mask_提高数据进行训练_编码器解码器结构_弱监督

[6] 2018_ECCV_图聚类考虑实体间关系_预提取mask和边界框_CAM和实体特征向量_图割聚类_弱监督

[7] 2019_CVPR_FickleNet_随机选取像素卷积_获得集成CAM定位图_作为伪标签训练DSRG弱监督网络

[8] 2018_CVPR_DSRG_基于CAM种子进行局域生长SRG_分割网络做SRG的指导_弱监督语义分割

[9] 2019_IJCV_协同课程修正伪标签C-SPCL_设计正则项改变图像和实体权重_SVM优化_弱监督目标检测

[10] 2015_ICLR_DeepLabV1_用全连接CRF_空洞卷积_多尺度特征融合提高语义分割

[11] 2017_TPAMI_DeepLabV2_并行空洞空间卷积池化金字塔ASPP_全连接CRF_空洞卷积_提高语义分割

[12] 2017_DeepLabV3_并行ASPP的改进_增加GAP分支及BN_后续卷积融合_无需CRF


1. 2016_ECCV_网络提取信息生成mask前后景_设计损失函数_增强弱监督语义分割_CRF_LSE

代码语言:javascript复制
2016_ECCV, Fatemehsadat Saleh.
首次从网络层中提取信息制作前后景Mask,监督语义分割学习
针对Mask的损失函数的设计及思考.
  • Built-in Foreground/Background Prior for Weakly-Supervised Semantic Segmentation(https://arxiv.org/abs/1609.00446)
  • 首次直接从网络的隐藏层提取信息,得到mask作为弱监督语义分割的定位线索. 可以被认为是内置前景/背景 先验的弱监督分割网络.
  • 直接从预训练的网络中提取卷积层, 采用CRF来获得网络前后景mask
  • 利用mask设计损失函数, 提高弱监督能力.
  • 构建前后景方法:
    • 采用VGG16的第四和第五卷积层(能提供更高级别信息,突出显示完整的对象或对象部分
    • 证明了外部对象模块仅产生粗热图并且不能准确地确定对象的位置和形状(在补充材料中的结果已证明)
    • 随着我们在网络中的深入,卷积层提取更高级别的功能。特别是,第三个卷积层激发原型对象形状。第四层表示完整对象的位置,第五层表示最具辨别力的对象部分
    • 分别提取VGG的第四和第五卷积层的feature maps , 对channel维度进行 avg-pooling 压缩得.
    • 融合这两张来自不同层的压缩图. 采用elementwise-sum 融合它俩信息, 再归一化到之间.
    • 所得的前后景 map 上每个点的值表示为该点为前景的概率.
    • 对最后的前后景map 进行 CRF 调整(给定CRF中生成若干预测的问题被称为M-best problem).
  • 弱监督方法:
    • 上面的损失函数未加入前后景(foreground and background), 会导致目标定位不准确.
    • 表示像素点属于前景或背景(非概率值,应该是CRF调整后成为0/1值)
    • 改写损失函数为:
    • ,
    • 表示mask中属于背景的像素点个数.表示mask中属于前景的像素点个数.
    • 表示类别k 在所有像素点上概率近似最大的值(Log-Sum-Exp是倾向较大值的群体). 同理,表示所有像素点上属于背景的概率值们的LSE值.
    • 表示该图片中出现的类别, 表示图片中未出现的类别.
    • Log-Sum-Exp(LSE)是起avg-max函数之间的作用,但偏向于体现较大值的重要性.
    • 是第k类出现在图像中的候选概率值, 是用Log-Sum-Exp(LSE)方法得到(介于max和avg但倾向max) :
    • VGG最后加上反卷积, 让VGG输出为 , 其中 为类别的个数.
    • 希望像素被标记为 图像中包括的类别之一, 防止被标记为 不属于图像中包括的类别.
    • 让为改后VGG的输出,让为位置属于第k类的概率值(针对位置进行softmax操作): .
    • 初步损失函数为:
    • 考虑前后景mask后的损失函数:
    • 这样整个流程就完成了.
  • 另一种替换上述损失的形式:
    • 先得到每个像素点属于前景的概率(采用LSE遍历所有类,以那些具有较高概率值的类表示该点)
    • 然后将每个像素其属于前景的概率带入公式减少熵.
    • 先得到每个类在图片中的概率 (采用LSE遍历全部像素点,以那些高概率值的像素代表该类出现在图像上的概率)
    • 再将每个类出现的预测概率值带入公式减少熵.
    • 前面的损失函数是:
    • 而也可以设计另一种损失函数:
    • 直接上公式仔细看其中差别:
    • 依旧采用LSE方法:
    • 实验结果表示,前一种损失函数优于此方法. slightly less effective.
  • 值得思考提到的两种损失函数的设计:
    • 两种函数的设计差别只在于次序.
    • 前一种是先得到每个类别出现在图像中的概率值,再将每个类传入熵模式. 后一种是先得到每个像素值属于前景的概率值, 再将每个像素点传入熵模式.
    • 前一种的类别出现在图像中的概率值, 是对所有像素执行LSE所得
    • 后一中的像素值属于前景的概率值, 是对所有类别(该位置)执行LSE所得.
    • 可能是因为后者方法会因噪音较大,所以稍逊前者? 感觉后者会更精细化语义分割,但也会较难优化.

2. 2016_ECCV 语义分割和目标定位_协同学习的弱监督方法

代码语言:javascript复制
2016_ECCV, Xiaojuan Qi. The Chinese University of Hong Kong
语义分割网络 和 目标检测网络 协同学习
将目标检测网络提供proposals,分别制作语义分割和目标检测的标签, 依次合作学习.
  • Augmented Feedback in Semantic Segmentation Under Image Level Supervision(https://link.springer.com/chapter/10.1007/978-3-319-46484-8_6)
  • 背景:
    • 当前采用image-level方法的结果太粗糙; 有些方法没有进行较为严格的(direct)pixel-wise 监督学习,这容易受到对象位置变化的影响.
    • 当前方法来自low-level clues的pixel-wise 直接监督训练, 而容易受到对象位置变化的影响.
    • multiple instance learning (MIL)直接去预测pixel标签, 但它严重依赖于好的参数初始化.
    • 另外基于EM算法的方法(https://arxiv.org/abs/1502.02734) 在生成segmentation masks和监督学习间进行迭代, 受益于pixel-level supervision, 但随着迭代,错误容易积累.
  • 本文提出:
    • 基于临时的pixel-level监督, 且能抑制迭代中的错误积累.
    • 以往的是从前一轮的segmentation模型中提取像素标签, 此处引入了object localization 分支来协助生成像素的标签. (而物体定位模块的标签是由segmentation模块生成的, 这种相互作用能促进他们相互补充提高)
  • 方法
  1. 训练a(sematic segmentation)网络: 利用c(Proposal Aggregation)生成的标签, 来训练a网络.
  2. 训练b(Object Localization)网络: 利用d(Proposal Selection)生成的标签, 来训练b网络

获取图片的proposals:

  • 训练一开始: 文中采用: SS,MCG 两种方法(以及加上CRF). (实验结果是MCG CRF效果较好.)
  • 后来的训练: 将上一轮的 网络a(sematic segmentation)生成的segmentation mask, 用于d和c网络中生成对应的标签.

网络c(Proposal Aggregation):

通过已获得的proposals, 聚合方法得到像素点属于每类的标签:

现已获得proposal 以及对应得分, 只取大于0.5的proposal.

每个像素点属于前景的概率, 其中第个proposal覆盖了该像素. (如果没有proposal覆盖了该像素点, 那么)

通过k-mean 方式将像素按前景概率分为三种类型(high-confidence object, ambiguous, and high-confidence background).

利用GrabCut方法将ambiguous的像素点变为另外的两种之一.

会因迭代改进的定位和分段以及增强的反馈而变得更加合理.

网络d(Proposal Selection)

为了能训练localization网络(b网络), d网络需要能生成正负样本.

需要提供: segmentation score maps(由a提供), Proposal scores, IoU的一些判定正负样本的thresholds, 以及判定proposal为正负样本的thresholds.

根据传来的proposal其IoU的数值, 以及proposal的score, 来判定是否为:positive, negative 和 hard negative(IoU低但proposal-score高的难样本).


训练过程:

    1. 先训练网络a(sematic segmentation): 标签来自: 网络c(Proposal Aggregation)利用MCG生成proposals得到标签
    1. 在训练网络b(Object Localization): 标签来自网络c(Proposal Aggregation)利用MCG生成proposals得到标签
    1. 将刚训练后的网络b来提供object proposals(即不再用MCG方法生成proposals,而是用训练好的网络b来生成).
    1. 重复1-3操作.

  • 看法:
    • 一般提取自身特征图来做标签的方法, 可能会导致错误累积, 而此方法额外加入了目标检测的网络, 让目标检测的网络来提供proposals从而获得较好的标签.
    • 相互协作共进步的网络的初始化很重要, 否则难以收敛. 此处是先采用MCG提取proposals来制作标签, 把语义分割和目标检测的网络学好, 之后再让目标检测网络来执行提取proposals的操作. 论文中也提到SS方法不如MCG方法.
    • 从proposals制作成Mask标签是由网络c(Proposal Aggregation)完成. 它的一系列操作或是能让Mask更加准确, 这种制作标签的方法值得思考.
    • 从proposals制作成目标检测的标签则是由网络d(Proposal Selection)实现, 这制作标签的公式(对IoU和proposal框概率的划分)值得看看(估计是比较常用的方案).

3. 2016_ECCV_SEC_种子定位信息_边界约束的CRF指导_池化聚合法_设计损失函数_提高弱监督

代码语言:javascript复制
2016_ECCV, Alexander Kolesnikov and Christoph H. Lampert; IST Austria
定位线索(种子)指导信息, 边界约束(CRF指导信息), 设计池化聚合方法.
通过两种指导信息设计loss, 设计池化聚合方法SEC解决GAP和GMP缺点
  • Seed, Expand and Constrain: Three Principles for Weakly-Supervised Image Segmentation(https://arxiv.org/abs/1603.06098)
  • code(https://github.com/kolesman/SEC)
  • 背景:
    • 标注昂贵. 人工标注一个图片mask需要几分钟.
    • 目前弱监督方法(只靠image-label)不能完全分割出mask(存在性能差距)
  • 本文提出:
    • 通过弱定位,池化方法,CRF边界约束提供的指导信息,设计复合损失函数来提高弱监督
    • 采用DCNN生成对象定位线索(种子)作为标签, 设计种子损失让网络匹配定位, 但它无法预测对象的空间范围
    • 提出扩展损失: 全局加权等级池化(GWRP)方法(是Global-Max-Pooling和GAP的扩展), 惩罚网络以预测具有太小或错误对象的分割mask.
    • 提出约束到边界损失的损失, 鼓励尊重图像的空间和颜色结构的分割(CRF制作标签).
  • 总的loss为:
    • DCNN是, 是包括背景的所有类集合, 是i图片中存在的类的集合.
  • 带定位线索的种子损失(Seeding loss with localization cues).
    • 通过弱定位提供标签. 目前有方法通过图像级标签训练得到对象的定位(弱定位),它虽然不准确, 不能完整或准确分割出mask, 但它可以作为指导信息.
    • 采用 gradient-based saliency detection 方法提供定位信息(标签).
    • 是类别中的定位位置(弱定位标签), 是位置. 意味着每个类的标签定位位置,其像素值(即概率值)约接近1越好. 非定位位置则不理会先.
    • 鼓励弱定位标签给出的位置获得好的输出(概率值), 而忽略图像的其他位置.
  • 全局加权排序池化的扩展损失(Expansion loss with global weighted rank pooling,GWRP).
    • 为了测定segmentation mask是否和image-level标签对应一致, 需要将segmentation 分数转化为分类的得分,从而能进行标准的loss比较.
    • 常用的聚合方法(转化)是:global max-pooling(GMP)和global average-pooling(GAP). 虽然两者均获得一定成功, 但GMP仅仅鼓励单个位置响应,导致低估对象的大小; 而GAP会鼓励所有响应偏高, 从而高估对象的大小.
    • GWRP克服了GAP和GMP缺点. 它让更有希望的位置的权重更大, 鼓励对象占据一定的大小,但不像GAP过于高估对象大小.
    • where
    • 下标集合 代表按预测分数排序的下标, $0
    • 如果, 就表示GMP, 如果就表示GAP. (0^0=1, 1^{any}=1)
    • 对于出现在图中类用,未现在图中类用,背景类用, 则:
  • 边界约束损失Constrain-to-boundary loss.
    • 鼓励网络学习产生与对象边界匹配的分割mask. 惩罚网络生成相对于图像中 空间和颜色信息 不连续的分割.
    • 因为CRF的输出是尊重图像边界分割的, 所以以它作为指导信息来让鼓励网络生成的mask贴紧对象边界.
    • 构建全连接的CRF为, 一元势(unary potentials)由分割网络预测的概率分数的对数给出, 并且 pairwise potentials of fixed parametric form that depend only on the image pixels.
    • 以网络输出和CRF输出之间的KL散度, 作为边界约束损失:
    • 为了计算全连接的CRF的梯度(从而能正常反馈学习), 作者采用中的代码
  • 思考:
    • 该方法能作为GAP和GMP之间的缓冲区, 是通过排序,幂函数实现的
    • 有其他实现介于GAP和GMP之间的方法:
    • Stochastic Pooling(按照像素值作为选择的概率值, 来挑选像素)
    • Log-Sum-Exp(LSE) 偏向于体现较大值的重要性.
    • 在已有方法中可以获取物体的粗糙位置信息, 可以引导网络往正确方向走. 类似控制了大致方向.
    • CRF能获得比较真实的分割线(即基于图像中空间,颜色信息的符合人视觉上的分割), 由此可以作为网络的收尾调控, 指导让对象的边界更为精确(CNN自适应学习出的边界会比较奇怪,即它不是完全按照人视觉形式)
    • 该文在寻找额外的指导信息, 来指导网络学习.如采用定位线索,CRF调整对象边界.
    • 文中为了获得当前mask的分数(信任值),设计了全局加权排序池化:

4. 2017_CVPR_种子定位信息_显著性区域信息_对mask进行标注的几种方法_提高弱监督

代码语言:javascript复制
2017_CVPR, Seong Joon Oh
寻找较好的种子定位信息的网络, 寻找提取显著区域网络
对显著区域进行像素标注的几种方法_如拆分显著区域 种子信息
  • Exploiting Saliency for Object Segmentation from Image Level Labels(https://arxiv.org/abs/1701.08261)
  • code(https://goo.gl/KygSeb)
  • 背景:
    • 必须探索额外的信息来补充指导image-level标注的弱监督学习. 特别是解决任务固有的模糊性(r addressing the inherent ambiguities of the task)
  • 本文提出:
    • 分为两个独立问题: 找到对象位置(any point on the object); 找到对象范围(object’s extent).
    • 对象位置: 已有图像分类网络对 discriminative areas敏感, 可以在感兴趣区域上找到那些最高置信点(称为Object seeds), 以及背景的最高置信点(种子).
    • 对象范围: 分类网络难易描述对象细节, 采用预训练的目标检测的网络(用了边界框标签,但无像素标签) 来提取出显著性区域.
  • 方法:
    • 单用种子来生成弱监督标签, 效果非常差(38.7 mIoU), 而G0方法效果45.8 mIou
    • G1方法效果46.2 mIou, 和G0很接近, 这表示很多图片都是单类的,而且显著区域难以被很好拆分.
    • G3方法51.2 mIou效果挺好.
    • 如果让G2的显著性区域为理想的标签(真实标签), 则效果达到56.9 mIou, 这意味着显著性区域的质量非常重要, 这方面值得提高.
    • 通过G3方法, 再加上CRF, 效果会更好.
    • G1:对单标签的图像的显著区域,直接赋予该图像的标签; 对于多标签图片的显著区域, 同时赋予多个标签给显著区域(意味着这区域既是猫又是狗).
    • G2: 拆分显著区域为多个块(用dense CRF),然后对每个块赋予对应的标签: 取某个显著区域块,将其他区域赋为0,传进网络得到分类预测值, 如果某类的概率值最大,则该区域块就标为该类. 对每个显著区域块都这样进行标注.
    • G3: 使用种子标签, 以种子和显著区域块(和G2一样用dense CRF进行拆分)的交叉关系, 得到每个像素的标签.
    • 只用带边界框注释的数据集训练DeepLab-v2 ResNet (在另一个数据集:MSRA的子集进行训练, 弱监督数据集(pascal)的图像不会出现在该数据集中).
    • 它会输出未知类别的显著区域(该方法提取的显著区域效果较好)
    • 对多种方法进行比较分类和定位的精度:GAP-HighRes,GAP-LowRes,GAP-DeepLab,GAP-ROI.
    • 都是在Imagenet上预训练后的网络
    • 高分辨率输出的GAP-HighRes获得最好的定位得分
    • Dilated convolutions 严重影响了GAP.
    • 框架的选择对定位效果有很大影响, 如GAP-DeepLab的分类得分最高, 但定位效果很差.
    • 寻找好的种子:
    • 寻找对象范围object extent
    • 递进设计了三种方法:
    • 采用DeepLabv1-LargeFOV结构作为语义分割网络, 上述G1或G2或G3来生成标签, 按照DeepLab论文所说进行训练. 最后采用CRF进行精调.
    • 实验结果:
  • 思考:
    • 在带边框其他数据集预训练一个生成较好显著区域的网络, 来为pascal数据集提高弱监督
    • 将显著区域用dense CRF进行拆分, 用分类网络判断显著区块的标签(G2), 或者引入种子信息来细分类显著区域块的类别(G3), 从而让mask标签更丰富.
    • 文中对提取种子的质量进行了一系列网络比较, 值得参考.
    • 文中一步步加强方法,并实验分析的思想值得参考.
    • 这也是一篇极力将额外的指导信息引入的论文. 利用预训练网络生成种子线索, 利用预训练网络生成显著区域(甚至用带边框注释的额外数据集进行预训练).
    • 本文没有致力于设计损失函数, 而是通过一些方法提高指导信息的质量:

5. 2017_CVPR_用CAM提取网络视频有效帧及关注区_图形学再细化得mask_增加数据进行训练_编码器解码器结构_弱监督

代码语言:javascript复制
2017_CVPR
用CAM生成粗略位置关注区, 再用图形学方法得到高质量的masks(作为标签)
网络爬取视频, CAM能挑选帧并生成粗略关注.
编码器分类并用于CAM,解码器采用图形学方法精调后mask进行训练.
  • Weakly Supervised Semantic Segmentation using Web-Crawled Videos(http://openaccess.thecvf.com/content_cvpr_2017/papers/Hong_Weakly_Supervised_Semantic_CVPR_2017_paper.pdf)
  • 方案:
    • 编码器是从弱注释图像中学习, 用于过来不相关帧且识别出视频帧中的判别区域(减少视频帧的空间,时间模糊).
    • 将CAM区域和颜色与运行的提示结合在一起, 基于图形优化技术来获得候选object的时空片段(分割并做成标签),用来训练解码器.
    • 通过类标签作为关键词搜索视频(视频级别标签). 但视频中只有部分帧和该类相关(时间模糊temporal ambiguity). 且视频针中只有少数区域和该类相关(空间模糊 spatial ambiguity)
    • 从web中检索视频提取额外训练数据:
    • 总框架的两个网络(编码器, 解码器)分别使用不同的数据进行训练:
  • 做法:
    • 采用训练好的编码器, 从弱标注视频中CAM生成的localization maps, 生成物体的segmentation masks(用到了图割方法), 作为标签.
    • 编码器是修改VGG后的网络(预训练参数), 采用普通分类方法进行微调得到编码器.
    • 用来消除噪声帧; 并使用CAM生成视频的粗略的localization maps.
    • 通过传统图像处理方法 损失函数设计从Videos中生成片段:
    • 解码器是反卷积方法组成(基础网络结构),根据上条得来的mask标签, 对解码器进行训练学习.
    • 测试时, 通过编码器分类得到图像可能的出现的类别,对这些预测的类别,分别计算CAM图,并用解码器生成前景概率. 最后对于每个像素(只能分配给一类), 取最大前景概率那类作为标注.
  • 思考:
    • 从网络视频中提取出有效帧的方法值得思考. 文中涉及到的是基于图形的优化技术(光流,图割, 标准Potts模型等方法), 以及文中对应的损失函数设计.
    • CAM主要靠编码器实现的, 而如果用gradient-CAM,就不会太局限编码器的网络结构了(但gradient-CAM也是17年出来的).
    • 此处是用CAM生成粗略位置关注区, 再用图形学方法得到高质量的masks(作为标签), 从而可以训练好segmentation 网络.

6. 2018_ECCV_图聚类考虑实体间关系_预提取mask和边界框_CAM和实体特征向量_图割聚类_弱监督

代码语言:javascript复制
2018_ECCV 旷视
预提取maks和边界框, 采用CAM和实体特征提取网络进行像素级标注(设计损失)
图割聚类法,引入实体内在特征及实体间的关系,让实体分配的标注更准确.
  • Associating Inter-Image Salient Instances for Weakly Supervised Semantic Segmentation(http://openaccess.thecvf.com/content_ECCV_2018/html/Ruochen_Fan_Associating_Inter-Image_Salient_ECCV_2018_paper.html)
  • 框架:
    • 属于同一类的salient实体则相似度很高
    • 采用graph partitioning算法将图划分为多个子图(每个子图表示一类)
    • 图分区过程被建模为混合整数二次规划mixed integer quadratic program (MIQP)问题, 可以找到全局最优解
    • 目标是让子图内尽可能相似, 同时考虑突出实例的intrinsic properties内在属性.
    • 通过现有方法提取实体的mask和边界框(但未知类别), 采用CAM和实体特征提取网络,设计损失函数实现像素级标注. 同时引入图割法让每个实体分配的标注更准确.
    • Attention结构: 通过intrinsic properties(内在属性)来预测salient instance的类别.
    • 语义特征提取器: 预测每个salient实体的语义特征
    • 相似图的构建: 点是每个salient实体的语义特征, 边是它们间的语义相似度.
  • 问题:
    • 使用 提取salient实体: 每个实体都有mask和对应的边界框, 但实体的类别不可知.
    • 采用预训练好的直接应用到数据集上有两个问题:
    • 图像可以用多个关键词标注
    • 可能提取出一些数据集标签中不包括的salient实体(比如提取出了路边的小石头,而数据集标签上没有这个东西). 此处作为噪音实体noisy instances.
    • 消除噪音实体对本方法来说很关键
    • 通过解决标注分配(tag-assignment)问题可以消除这两个限制,其中我们将显着实例与基于图像关键字的正确标记相关联,并将其他标记为噪声实例。
  • 注意力模块:
    • 根据其内在特征为每个salient实体确定正确的标注
    • 使用CAM的注意力模块从内在特征中识别salient实体所属类别:
    • FCAN为骨干网络, 预测C个注意力图(得分图, 数据集共有C类),图中每个像素表示属于相应类的概率. 定义为
    • 采用GAP sigmoid得到每类的概率(不用softmax), 以C个独立二元分类问题设计损失交叉熵函数. 因为图像可能存在多类.
    • 如果salient实体在图中具有边界框,则salient实体属于第类的概率为:. 该salient实体只分配给概率值最大的那类.
  • 语义特征提取器(Semantic Feature Extractor):
    • 注意力模块只根据实体的内在属性来标注类别, 但未考虑salient实体之间的关系.
    • 对salient实体的语义特征提取器的设计损失函数.要考虑到: 最大化不同类的实体特征之间距离, 最小化相同类别实体特征间的距离
    • 除了标准softmax-cross熵分类损失, 还增加了center loss.
    • 用center loss学习语义特征中心,并惩罚网络输出该salient实体的语义向量 和 语义特征中心的距离.
    • 是ground-truth标签, 是 -th类别的中心.
    • 类别的语义特征中心随着训练迭代更新:
  • 标签分配算法(Tag-Assignment Algorithm):
    • 目的给每个salient实体分配一个正确的标注, 或将其标识为有噪声的实体
    • 利用单个salient实体的内在属性, 和所有实体间的关系, 进行标签分配,称为图划分问题.
    • 分层方法,k-means,DBSCAN 或OPTICS的传统聚类算法不适合该任务,因为它们只考虑输入数据点之间的关系,并忽略每个数据点的内在属性.
    • 现在假设从中生成了n个salient实体, 并且每个实体提取了对应的特征向量,预测该实体属于类别的概率为, 类别0属于noisy实体类别.
    • 预测salient实体的标签. 比如 表示实体是噪音实体.
    • 将特定子图的内聚性定义为:连接子图内顶点的边权重之和, 那优化目标是最大化所有类别的内聚力之和. 这称为混合整数二次规划(MIQP,mixed integer quadratic program)问题
    • 具体实现方法看原论文.
    • 使用IBM-CPLEX来解决图划分过程中的MIQP问题
  • 实验表示整个数据集中的全局对象关系信息在标签分配中很有用,噪声过滤机制进一步提高了分割性能
  • 思考:
    • 文中采用提取出未知类别的实体的mask和边界框, 在此基础上进行弱监督像素级标注. 需查阅还有哪些适合弱监督的预方法.
    • 引入CAM指导像素级标注, 这是比较常见的操作. 这儿还对边界框设计了损失函数.
    • 对salient实体提取特征, 1是设计center loss,让同类相近异类相斥. 2是为了后续图割聚类.
    • 引入图割聚类的方法, 实现对所有实体关系信息的建模, 提高效果. 这一步值得好好探究. 文中也分析了其他聚类不适用此处,值得思考.

7. 2019_CVPR_FickleNet_随机选取像素卷积_获得集成CAM定位图_作为伪标签训练DSRG弱监督网络

代码语言:javascript复制
2019_CVPR 首尔大学
通过随机卷积(扩张卷积的延伸版),可得到多张不同区域的CAM图(带标签)
集成CAM获得准确的像素级标注的定位图(伪标签)
利用定位图,训练DSRG语义分割网络.
  • FickleNet: Weakly and Semi-supervised Semantic Image Segmentation using Stochastic Inference(https://arxiv.org/abs/1902.10421)
  • 背景: 大多基于图像级标注的方法依赖CAM获得定位图, 而CAM倾向于关注目标对象的小辨别区域,这使得它不适合于训练语义分割网络。
  • 提出FickleNet用来生成准确的定位图(即像素伪标签), 从而用定位图来训练弱语义分割网络.
  • 整个网络的流程:
    • 用FickleNet和CAM方法得到更为准确的定位图
    • 利用定位图作为伪标签来训练语义分割网络
  • FickleNet方案:
    • 将数据流 扩张成 , 其中为卷积核大小.
    • 不重叠卷积, 每次卷积都是随机从作用域中随机选出个特征点.
    • 得到卷积后的数据流大小依旧是.
    • 每次前馈,得到的都是"从不同位置组合卷积得来的特征"
    • 类似扩张卷积延伸版本, FickleNet的每次卷积都从作用域中随机选取特征点来进行卷积(扩张卷积是固定特征点).
    • 由于每个卷积它们分别随机选取特征点, 这可以在特征图上探索了不同位置的组合(每次随机选择的特征点会产生不同形状的区域)
    • 做法(这是作者的一种实现方法,当然也有其他的实现方式):
    • FickleNet作用于网络的最后一层卷积层(GAP前), 所以针对某类c, 获得多个不同的CAM图(因为每次CAM的结果都是从"随机组合出的区域进行卷积而来").
    • 假设获得N个同/不同类别的CAM图, 简单合并这N个带类标签显著定位图, 就可以得到最终的定位图(带类别)
  • 通过前面得到的准确的定位图, 制作伪标签, 训练语义分割网络:
    • 选取DSRG (Weaklysupervised semantic segmentation network with deep seeded region growing)(https://ieeexplore.ieee.org/document/8578831/)作为语义分割网络进行训练. 并增加了一项损失:
    • 其中是ground-truth mask, 是图片总出现的类别, 表示segmentation map 中属于类别位置的概率值.
  • 思考:
    • 文中随机挑选像素点卷积的实现方法虽然耗了些显存, 但是运算损耗比较小(因为用了文中的方法). 他这属于代码实现上的改进, 限定于框架或编程语言. 但也值得思考如何代码实现.
    • 文中针对CAM覆盖部分区域的特点, 提出以随机选取特征进行卷积得CAM图的方式, 获得大量不同的CAM图, 从而融合得到更为准确的CAM图(定位图).
    • 这种集成CAM的方式, dropout应该也能达成(但该方法在文中设计了些和dropout不一样的地方,如保留卷积作用域的中心点等等). 文中对dropout和该方法进行实验及分析, 值得看看.
    • 文中还提到该方法和 "擦除显著区域再训练,最后集成CAM" 的方式也有点相似, 文中对此解释为"此擦除的方法, 需要CAM的热力图覆盖整个物体才行".

8. 2018_CVPR_DSRG_基于CAM种子进行局域生长SRG_分割网络做SRG的指导_弱监督语义分割

代码语言:javascript复制
2018_CVPR 微软亚研
DSRG深度种子区域扩展.
基于CAM显著图得到种子,进行种子局域生长SRG
利用分割网络的输出,作为种子局域生长的指导(得到标签反过来训练分割网络)
像素标签训练中是动态的
  • 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)
  • 利用种子区域拓展机制, 让网络安全地生成新的像素级标签, 用于弱监督语义分割.
  • CAM得到的种子线索, 按分割网络中高概率的像素点, 按种子生长进行区域拓展, 得到像素级标签反过来监督分割网络.
  • 像素级标签随着训练而变化,且逐步变准确.
  • DSRG代码(https://github.com/speedinghzl/DSRG)
  • 背景:
    • 仅使用图像级标签作为监督来学习图像语义分割网络的问题. 主要问题是如何准确地将图像级标签分配给它们对应的像素。
    • 目前最新方法是:先用分类网络推断出对象的稀疏且显著的鉴别区域, 后采用鉴别区域作为监督来训练语义分割
    • 目前有效方法[3]:采用图像分类网络和CAM来选择最具鉴别力的区域(再用该区域作为像素级标签). 但该方法得到的鉴别区域是小而稀疏的, 这导致语义分割的监督标签是固定为稀疏的鉴别区域. 本文称它为'static supervision'固定监督, 而真正的监督信息是"正确且完整物体区域". 其实除了[3],很多方法也是采用固定监督的形式. 3_2016_ECCV_SEC_种子定位信息_边界约束的CRF指导_池化聚合法_设计损失函数_提高弱监督(https://arxiv.org/abs/1603.06098).
  • 本文解决:
    • 为了解决[3]这问题, 本文建议在训练分割网络时,扩展鉴别区域从而覆盖整个物体.
    • 物体具有空间连续性, 鉴别区域周围的像素一般属于该物体上. 本文将那些小且稀疏的鉴别区域作为'seed cues'种子线索, 种子附近的像素和种子应该具有相似的属性/标签. 采用经典种子生长方法:SRG(Seeded Region Growing(https://ieeexplore.ieee.org/document/295913))生成准确完整的像素级标签.从而能训练语义分割网络. 和static supervision固定监督法([3])不同, 此处像素级标签是动态的. 每次通过获得的稀疏且小的种子线索生成像素标签(SRG方法可以集入分割网络,可以端到端训练).
    • 通过CAM得到的种子线索很小,但却高精度. 为了标注种子的邻居像素, 本文将语义分割网络最后输出的segmentation 特征图(概率值)作为指导, 使对应类别上具有高概率的(种子的邻居)像素点标记为和种子一样的类别(重复这过程,直到没有满足该约束的像素). 将标记后的图作为像素标签, 反过来训练语义分割网络. 如下图的上中分支所示.
  • 基于分类网络的种子生成
    • 已有论文表明, 通过image-level的监督训练分类网络, 能够得到显著性的物体区域,即高质量种子.
    • 采用CAM定位前景类, 为每个对象类生成热力图heatmap,再用硬阈值来得到鉴别对象的区域.
    • 同时要找到背景的种子线索, 利用某显著性检测方法,简单地选择具有低显著值的区域作为背景.
    • 将前景和背景的种子线索,堆叠在一起形成单通道的分割mask.
    • 将热力图中前20%的像素认为是前景对象区域.
  • 种子损失
    • 提出平衡种子损失, 鼓励分割网络对"分类网络得来的种子所处的像素"进行准确预测, 同事忽略图像的其他像素. 即损失函数中只对分类网络的种子像素(包括生长出来的)进行反向求导, 而其他像素点概率值不用理会.
    • 考虑到前后景种子分布不平衡, 前后景的loss的归一化系数和[3]中的设置不一样.
    • 这里也考虑了[3]中的边框损失, 那么总的损失就是:
  • 深度种子区域生长:
    • 根据相似性标准可以将分类网络初始化的种子进行增长, 但采用哪种相似性标准?
    • 采用分割网络生成的分割图的像素概率阈值.
    • 分别为前景和后景设置阈值(简单地将所有类(除了背景)的阈值设为一样). 通过访问种子区(包括生长的像素)的八连通像素,按阈值判断是否纳入种子区. 循环执行,直到没有新像素纳入.
    • 前后景的概率阈值分别设置为0.99和0.85.
  • 实验:
    • 修改VGG16作为分类网络, 采用DeepLab-ASPP作为分割网络. 他们都通过ImageNet预训练后的.
    • 测试阶段,用全连接CRF细化分割结果.
  • 思考:
    • 文中提及: 也有采用动态像素级标签的方法Weakly-and semi-supervised learning of a dcnn for semantic image segmentation,它是在biased分割图上进行argmax函数进行近似,得到潜在像素级标注. 本文是利用种子生长方式拓展种子区域,找到准确可靠的潜在像素级标注. 因实体种子线索的引入,该方法在训练一开始就对嘈杂分割图具有鲁棒性,能生成高精度的像素级标注.
    • 以往很多方法都是得到固定的像素级标签, 而本文是动态像素级标签, 它能随着训练慢慢变好. 而协同促进的方法依赖于初始化好坏, 该论文采用很好的CAM得来的种子区域,让分割网络在训练初期就有好的指导方向.
    • 该文章的建立的基础是: CAM的显著区域是少且稀疏的, 且不能覆盖住物体全部. 但有时候CAM生成不准确, 或大范围时, 这将会严重影响该方法的发挥(毕竟是种子生长, 而没有种子消除之类的方法). 这里可以考虑下引入二值图像的基本形态学运算, 看看腐蚀、膨胀、开和闭这些操作能否在这里产生火花(数学形态学(https://zh.wikipedia.org/wiki/数学形态学), 提取图像中最具有区分度的区域, 如边界和连通区域等. 而且细化,像素细化,毛刺修建等方法也常用于图像增强中.).
    • 下面的[7]的FickleNet是针对CAM的种子进行改进, 以集成CAM热力图方式获得更为准确的种子.

9. 2019_IJCV_协同课程修正伪标签C-SPCL_设计正则项改变图像和实体权重_SVM优化_弱监督目标检测

代码语言:javascript复制
2019_IJCV 西北工业大学
从初始伪标签(先验知识), 课程学习并修正伪标签.
设计优化目标和正则项,让图像和实体不同的可学习的权重(在用SVM优化学习)
利用mask-out初始化伪标签, 课程学习来修正先验知识(伪标签)
  • 2019_IJCV_Leveraging Prior-Knowledge for Weakly Supervised Object Detection Under a Collaborative Self-Paced Curriculum Learning Framework(https://link.springer.com/article/10.1007/s11263-018-1112-4)
  • 先验知识能提供伪标签(实体框),但是会模糊. 通过逐步修正先验知识, 让伪标签更准确.
  • 设计优化目标和正则项, 让好的图片(简单图片)和好的实体学习出更大的权重; 再 通过SVM学习出较好物体检测器, 从而得到目标识别的伪标签(检测框).
  • 通过伪标签, 学习RCNN得到最终的目标检测器.
  • 本文方法:
    • 从简单图片和对象开始训练, 这些图片和对象(instance)是由"图片复杂度标记"和"对象先验" 的先验知识(prior-knowledge)分别确定的.
    • 考虑有用的先验知识下, instance-level和image-level的置信度分别推断筛选训练的instances和images. 然后获得更强的object 检测器,并迭代继续学习.
    • 通过联合优化过程协作instance-level和image-leveel的置信度推理. 缓解弱监督学习过程中存在的学习歧义(弱监督的伪标签一般都模糊带歧义)
    • 提出更好利用弱监督目标检测中的先验知识(instance-level和image-level的先验知识) 新方法, 该方法基于先验知识构建有用的学习课程, 指导整个学习过程.
    • 自我学习机制(self-paced) 嵌入该学习框架中, 便于指导"基于先验知识的学习课程"的不准确或误判情况(指用额外方法得到的伪标签不准确).
  • 流程(Algorithm.1):
    • 采用mask-out方法获得物体的先验概率
    • 选取top-50 的object proposals作为初始训练的instances
    • mask-out在<Weakly supervised object localization with progressive domain adaptation(https://ieeexplore.ieee.org/abstract/document/7780751/)>
    • 先初始化image-level的置信度, 简单图设为1,复杂为0.
    • 从简单图中提取训练实体:
    • 初始化instance-level的置信度, 对前面选出的实体instance 赋值为其先验概率值,未挑选中的赋值为0.
    • 初始化instance标签: 根据前面的先验概率值来初始化.
    • 用提出的C-SPCL来学习多对象类别的目标检测器(看Algorithm.1的2-6步进行训练).
  • 完成Algorithm1后, 利用所获得的instance 标签 作为伪ground-truth标签来训练RCNN
  • 方案:
    • Instance-Level Self-Pace Learning Term 和 Image-Level Self-Pace Learning Term: 标准损失,以及加权. 使得简单图片和较好的实体得到优先学习(高权重).
    • Prior-Knowledge Regularization Term. 让先验知识不合格时,也能逐步得到 使检测出的实体多样性且减少冗余(得到稀疏); 鼓励分配给"拥有高置信度的实体"更大的权重; 鼓励分配给"拥有简单图片"更高的权重.
    • ,即第k张图片(样本)的第i个实体是否属于第c类.
    • , 即图片中的某个得到的实体(检测出来的),最多属于某一种类(或属于背景).
    • , 真正标签指明图片中含有某类实体, 那伪标签中必须有一个实体属于这个类.
    • 目标是学习出能识别多类的目标检测器. 提供只有:弱监督标签, 只有每张图中包含的类别标注, 无边框or像素标注.
    • 优化目标有: instance-level的自学习目标, image-level的自学习目标,以及先验知识的正则.
    • 构建出整个公式:
    • 上式subject to:
    • 设计优化目标:
  • 思考:
    • 图片中伪标签指定的某个实体,只能属于某一类(或属于背景)
    • 真正标签指明图片中含有某类实体, 那伪标签中必须有一个实体属于这个类.
    • 先验知识上的正则(需要认真看看):鼓励简单图片和好的实体得到高权重; 鼓励得到的伪标签稀疏且多样性.
    • 基本套路都是:额外方法得到伪标签, 针对伪标签进行修正, 用伪标签训练真正的目标检测网络.
    • 该方法是采用额外的方法(mask-out)得到弱标签, 考虑到伪标签(先验知识)不一定正确. 本文认为:
    • 文中设计一系列目标函数以及正则项, 采用svm来优化学习出最佳的伪标签(初始化是用mask-out方法得到的伪标签)
    • 这篇文章的目标函数和正则项是重难点, 而整文思路是针对初始伪标签进行修正(认为需要满足ABC等条件,继而学习优化出这样的伪标签).

10. 2015_ICLR_DeepLabV1_用全连接CRF_空洞卷积_多尺度特征融合提高语义分割

代码语言:javascript复制
2015 ICLR DeepLabV1
用全连接CRF_空洞卷积_多尺度特征融合提高语义分割
弱监督语义分割常用的模型

Semantic image segmentation with deep convolutional nets and fully connected CRFs(https://arxiv.org/abs/1412.7062)

  • 问题和方案(DCNNs做语义分割时精准度不够):
    • 本文采用空洞卷积解决该问题.
    • 原本的池化的stride为2, 现在改为stride=1且用空洞卷积, 这也就能保持感受野不变.(否则stride=1或导致后面层神经元的感受野很小)
    • 信号下采样导致分辨率降低:
    • 空间“不敏感性”(CNN的平移不变性invariance),这特性限制空间定位. 本文采用全连接的条件随机场(DenseCRF)来提高网络捕获细节和边缘信息能力.
  • DCNN分数图可以可靠地预测图像中对象的存在和粗略位置,但不太适合用于勾画其精确轮廓:
    • 一种方法是利用卷积网络中多层的信息来更好地估计对象边界。
    • 第二种方法是采用超像素表示,实质上是将定位任务委托给低级分割方法
    • 本文通过耦合DCNN的识别能力和完全连接的CRF的细粒度定位精度来产生准确的语义分割结果
  • 做法:
    • 调整VGG一些结构,并进行微调.
    • 加入DenseCRF方法进行恢复详细的局部结构.
  • 探讨了一种多尺度预测方法来提高边界定位精度, 即将中间层的特征图(多尺度特征)添加到DeepLab模型中, 能进一步提高定位性能.
  • 想法:
    • 这是DeepLab v1, 提供了基本的方法.关键在于全连接的CRF的理解.
    • 多尺度特征能提高边界定位精度, 且空洞卷积也是之后论文常用的方法.
    • 全连接CRF:将DenseCRF真正结合进了FCN中, 能实现端到端的论文在《Conditional Random Fields as Recurrent Neural Networks》(把CRF迭代推理过程看成是RNN(https://blog.csdn.net/hjimce/article/details/50888915)) 有实现. 前向反向传播都没问题.

11. 2017_TPAMI_DeepLabV2_并行空洞空间卷积池化金字塔ASPP_全连接CRF_空洞卷积_提高语义分割

代码语言:javascript复制
2017_TPAMI DeepLabV2
DeepLabv1的强化版,在空洞卷积和全连接的CRF使用上与DeepLabv1类似
提出并行空洞空间卷积池化金字塔,以多尺度信息得到强健分割结果.
弱监督语义分割常用的模型

[Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs]

  • 背景:
  • DCNN应用于语义分割任务上,涉及到分类和定位细化,工作的核心是把两个任务结合起来。基于DCNN的语义分割系统有三种大类:
    • 第一种:采样基于DCNN的自下而上的图像分割级联。将形状信息合并的分类过程中,这些方法得益于传递的形状边界信息,从而能够很好分割。但这不能从错误中恢复出来。(错误随着迭代累积)
    • 第二种:依靠DCNN做密集计算得到预测结果,并将多个独立结果做耦合。其中一种是在多个分辨率下使用DCNN,使用分割树来平滑预测结果。最近有使用skip layer来级联内部的计算特征用于分类。
    • 第三种:使用DCNN直接做密集的像素级别分类。直接使用全卷积方式应用在整个图像,将DCNN后续的FC层转为卷积层,为了处理空间定位问题,使用上采样和连接中间层的特征来细化结果。
    • 本文基于这些工作基础.
  • 问题和方案(DCNN应用在语义分割任务,着重以下三个问题):
    • 采样全连接的CRF在增强模型捕捉细节的能力
    • 使用跳跃层,将前面的特征融合到一起
    • 受到spatial pyramid pooling(SPP)的启发,提出了一个类似的结构
    • 并行ASPP
    • 给定的输入, 以不同采样率的空洞卷积并行采样,相当于以多个比例捕捉图像的上下文,称为ASPP(atrous spatial pyramid pooling)模块。
    • 下采样降低特征分辨率: DeepLabv2在最后几个最大池化层中去除下采样,取而代之的是使用空洞卷积,以更高的采样密度计算特征映射。
    • 多个尺度上存在对象:
    • 由于DCNN的内在平移不变性,定位精度底:
  • 想法:
    • DeepLabv2是在DeepLabv1的基础上做了改进,基础层由VGG16换成了更先进的ResNet,添加了多尺度和ASPP模块技术得到了更好的分割结果。

12. 2017_DeepLabV3_并行ASPP的改进_增加GAP分支及BN_后续卷积融合_无需CRF

代码语言:javascript复制
2017 DeepLabV3
DeepLabv2的强化版, 并行ASPP增加GAP,BN以及1x1卷积, 无需CRF效果就很好
提出串联结构的空洞卷积(效果不如并行ASPP)
很多结构改进的分析及实验.
弱监督语义分割可用的模型

Rethinking Atrous Convolution for Semantic Image Segmentation(https://arxiv.org/abs/1706.05587)

  • 方案:
    • 为了解决多尺度分割对象的问题,我们设计了采用级联或并行、多个不同空洞率的空洞卷积模块,以捕获多尺度上下文信息。
    • 扩充了先前提出的空洞卷积空间金字塔池化ASPP模块
    • 讨论了实施细节, 并分享训练系统方面的经验.
    • 无需DenseCRF后处理.
  • 文中细节:
    • 对于deeplav2中的并行ASPP中增加BN,GAP以及后续的1x1卷积.
    • 不同采样率的ASPP能有效地捕捉多尺度信息
    • 随着采样率的增加,滤波器的有效权重逐渐变小(如极端情况下空洞卷积只用到了中间那一个像素点), 于是将全局上下文信息(全局平均池化)也加入并行分支中.
    • 但发现太多连续卷积对语义分割是有害的,会造成细节信息的丢失且效果变差.
    • 改为串联不同采样率的空洞卷积, 这样效果会好些.
    • 串联普通卷积(使得更深的模块更容易捕获长距离的信息):
    • 基于ASPP结构,并行应用了四个具有不同采样率的空洞卷积(并行,增加了BN).
    • 学习率下降法是:Poly策略.
    • 采用大尺寸的图片.且训练阶段,随机缩放输入图像(从0.5到2.0)和随机左-右翻转
    • 无需DenseCRF后处理.
  • 思考:

这是弱语义分割常提到的方法, 前面提到的弱语义分割的方法大多基于DeepLabV2或V1, 而V3效果比前面两种都要好,而且还无需CRF.

gluoncv中提供模型和预训练参数.

改进deeplabv2的思路值得模仿:并行(InI), 空洞卷积原因增加GAP的并行分支

学习率的Poly策略, 自定义控件的BN的使用(位置). 以及文中对比实验(各种超参的影响).

0 人点赞