About Unsupervised Semantic Segmentation
date
Nov 20, 2022
Last edited time
Mar 27, 2023 08:42 AM
status
Published
slug
About_Unsupervised_Semantic_Segmentation
tags
DL
CV
summary
日后再更新, 但也说不定
2022.11.20@修改排版
type
Post
Field
Plat
Unsupervised Domain AdaptionArticle ReadingCVPR2021 Oral: DANNet: A One-Stage Domain Adaptation Network for Unsupervised Nighttime Semantic SegmentationUnsupervised Semantic Segmentation分类Ⅰ跨像素相似性跨视图相似性跨像素相似性 + 跨视图相似性跨图像关联其他分类ⅡSegmentation HeadLearnable PrototypeContract Learning MethodArticles ReadingECCV2018: Invariant Information Clustering for Unsupervised Image Classification and SegmentationNeurIPS2019: Unsupervised Object Segmentation by RedrawingNertIPS2021: Looking Beyond Single Images for Contrastive Semantic Segmentation LearningICCV2021: Unsupervised Semantic Segmentation by Contrasting Object Mask ProposalsCVPR2021: PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in Clustering GCPR2021-Best Paper: InfoSeg: Unsupervised Semantic Image Segmentation with Mutual Information MaximizationICLR2022: Unsupervised Semantic Segmentation by Distilling Feature CorrespondencesCVPR2022: Self-Supervised Learning of Object Parts for Semantic SegmentationNeurIPS2022: Self-Supervised Visual Representation Learning with Semantic GroupingCVPR2022 Oral: Deep Spectral Methods: A Surprisingly Strong Baseline for Unsupervised Semantic Segmentation and LocalizationCVPR2022: Unsupervised Hierarchical Semantic Segmentation with Multiview Cosegmentation and Clustering TransformersUnsupervised Semantic Segmentation with Language-Image Pre-trainArticle ReadingExtract Free Dense Labels from CLIPReCo: Retrieve and Co-segment for Zero-shot TransferGroupViT: Semantic Segmentation Emerges from Text Supervision
Unsupervised Domain Adaption
Article Reading
CVPR2021 Oral: DANNet: A One-Stage Domain Adaptation Network for Unsupervised Nighttime Semantic Segmentation
Abstract
在本文中,提出了一种新的基于对抗学习的单阶段域自适应网络 (DANNet) 用于夜间语义分割,该网络使用新发布的Dark Zurich数据集,其中包含使用GPS记录粗略对齐的未标记的昼夜场景图像对。提出的DANNet执行从 Cityscapes到 Dark Zurich-D和Dark Zurich-N 数据集的多目标域适应图像分割。首先实现从Cityscapes到 Dark Zurich-D的域适应因为这两个数据集都在日间拍摄的,光照相似。然后,Dark Zurich-D 数据集上的预测值作为作为伪标签训练Dark Zurich-N数据,我们采用图像重光照子网络,使不同区域的图像亮度分布接近。之后,我们结合了权重共享的语义分割网络,对其进行预测,并在输出空间上执行对抗学习。我们进一步设计了一种调整权重的策略,以处理日间-夜间图像对之间的偏差和对日间图像的错误预测所造成的不准确性。
Method
该网络包括一个源域 和两个目标域 , , 其中 表示Cityscapes数据集, 和 分别表示 Dark Zurich-D (日间拍摄)Dark Zurich-N (夜间拍摄)。注意只有Cityscapes有ground truth 用于有监督的分割训练。
所提出的DANNet 同时进行从 到 和从 到 的域适应训练。它由三个不同的模块组成: 图像重光照网络、语义分割网络和两个鉴别器,如图2所示。
Network architecture
Image relighting network
本小节设计了一种图像重光照网络,使不同区域的图像强度分布更接近,从而使后续的语义分割网络对光照变化的敏感性降低。该网络的输入为三种不同的数据域: 和 生成后的图像表示为: 和 。所有的输入图像共享相同的权重值,如Figure 3。
Semantic segmentation network
论文选择了三种常用的分割网络Deeplab-v2,RefineNet和PSPNet。 采用ResNet-101 作为框架的主干。语义分割网络以 和 作为网络的输入,并生成相应的预测值 和 。图像重光照网络和语义分割网络共同构造了DANNet的生成器 。
Discriminators
鉴别器的作用是区分分割预测来说源域还是目标域。由于我们有两个目标域和 和 ,我们设计了两个鉴别器分别对应输出来自 或者 还是来自 或者是 。
Probability re-weighting
由于不同对象类别的像素数量在源域中是不平衡的, 当网络训练预测一个像素是大尺寸目标的类别往往更容易收敛。在这种情况下,很难正确预测图像当中的小目标。为了解决这一问题,文章提出了一种对预测的类别似然图重新加权的策略。具体来说,对于每个类别 ,我们首先定义一个权重:
其中, 是类别为 的像素与所有像素的比例。显然 越小, 越大。使用这样的权重可以帮助分割较小尺寸对象的类别。同时,文章中进一步将权重 进行归一化:
其中, 和 为 , 的均值和标准差。 std,avg 为超参数将 的范围限制为正数。在训练中选择 std=0.05 , avg=1.0 。之后将权重值和预测值 相乘,其中 ,通过对其进行 argmax 运算得到分割结果 。
Objective functions
本部分介绍文章中的损失函数,包括light loss, 分割loss, static loss和adversaial loss
Light loss
Light loss主要功能是保证图像重光照子网络的输出 和 在光照强度上相似。light loss 包括三部分:the total variation loss , the exposure control loss, 和 结构相似损失 。
在图像去噪和图像合成方面被广泛的应用,可以让图像变的平滑。本文中用来去掉图像中粗糙的纹理,如噪声,以促进图像分割。
其中, 表示输入的像素个数。 表示输入图像 , 表示输出图像 。 表示相邻像素沿 和 方向的梯度。 表示 范数对所有元素求和。
为了获得相似的关照强调,采用 来控制光照强度。
其中, 表示32×32的平均池化操作 表示 中的像素个数。 动态设置为每张夜间图像的平均强度值。
被广泛引用与图像重建,本文中采用此损失函数目的是保证输出的图像R能够保证原始的图像结构;
在这个损失函数中,我们使用了一个简化的SSIM(结构相似指数度量)和3×3块滤波器
最后的损失如下:
Semantic segmentation loss
在源域,我们采用了广泛使用的加权交叉熵损失来训练图像的语义分割:
为预测值, 为 Ground Truth
Static loss
当只考虑静态对象类别时,日间的图像与夜间的图像具有相似性,因此引入静态损失为静态类对象提供像素级的伪监督。静态对象为图像中的类别,如道路,树等。
根据分割预测值 和 ,只在通道上计算损失, 表示类别总数,首先计算重新加权预测 作为伪标签,根据下面公式:
之后使用focal loss纠正不同类别训练样本之间的不平衡,最后静态损失 定义为:
为Ground Truth 有标记的像素总数, 超参数,设置为1。 网络的输出预测值。 表示正确类别的可能性图。不同于focal loss 我们采用如下的方式计算 ,在3×3的区域中计算每个像素上的 :
表示对伪标签进行ont-hot编码, 表示一个3×3的区域。
Adversarial loss
论文中使用两个鉴别器来进行对抗学习,用来区分输出是来自源域还是两个目标域之一。采用最小二乘损失函数,使预测 和 都接近
Experiments
Unsupervised Semantic Segmentation
无监督(语义)分割的早期阶段,主要是通过人工设计的图像特征进行聚类实现分割,如K-means和Graph Cut 等,用于将图像划分为多个具有高自相似性(high self-similarities)的部分。最近,随着无监督特征表示学习的快速发展,特别是MoCo、SimCLR 、BYOL 等算法,无监督密集特征表示学习极大的促进了无监督分割的发展。无监督分割的目的是,对于没有任何标注的给定图像 ,网络需要学习密集的特征图 。一个好的网络学习得到特征图有如下特性:来自相同语义区域(object/stuff)的像素具有相似的特征表示,而来自不同语义区域的像素则具有不同的特征表示。学习良好的密集特征图可以直接促进分割模型的训练。
由于没有监督信息,实现无监督分割的关键是如何获取监督信息。当前的工作试图根据一些启发式先验来生成密集的自监督信息,例如跨像素相似性、跨视图一致性和跨图像关联(cross-image relation)。
分类Ⅰ
跨像素相似性
跨像素相似性(Cross-pixel similarity)表示具有高度相似线索(如颜色、亮度和纹理)的像素可能属于图像中的同一语义区域。由于该先验源自感知分组原理,因此几乎所有的无监督语义分割算法都基于此原理生成密集的自监督信息。
Hwang等提出首篇用于语义分割的无监督深度学习方法SegSort。其首先使用轮廓检测器,通过聚类生成密集的自监督信息,即伪片段(pseudo segment)。然后,提取每个伪片段的原型,即片段内像素的均值。SegSort的训练目标是将伪片段内像素的特征表示拉向该伪片段的原型,并将其与其他伪片段区分开来。
我的理解是将片段使用带有聚类的对比学习方式学习特征表达, 拉近视觉相似的物体, 推远视觉上不相似的物体.
但是, 带来一个问题就是, 一个物体往往由许多部分组成, 而各个部分的视觉特征是不相似的, 这些部分的关联性表现在他们出现的空间毗邻关系以及统计上的共现性.比如说一个煎蛋, 有蛋黄和蛋白部分, 由于视觉特征的不相似性, 蛋清和蛋白会被直接分到两个 segment 当中, 对比学习将会拉远两者之间的距离. 另外, 跨试图相似性也有这个问题.
这与图像级对比学习不同的是, 图像能够直接包含所有出现图像的特征, 从而识别到蛋清和蛋白的相关性.
这个问题在后面的Leopart和HSG尝试解决.
跨像素相似性 需要用到轮廓检测器, 显著性检测器这种先验
跨视图相似性
跨视图相似性(Cross-view consistency)指一个目标在不同视图中应表现出一致性,是无监督语义分割的另一个常用的先验。
- IIC 在图像级分类中, 网络输出样本分类的概率值, 最大化正例图像之间分类的互信息. 在像素级分类中, 使用图像Patch预测像素的分类(即使用CNN), 最大化两个临近像素之间分类的互信息.
- 使用光度不变、几何等变的方式构造不同视图, 进行像素的特征学习. 而后经过像素级聚类得到聚类中心并且为每个像素分配标签,再将得到的标签作为伪Groundtrue进行迭代,最终得到一个稳定的结果。
- Leopart 在进行跨视图的对比学习中, 使用一个 Attention Mask 来只优化前景部分
- SlotCon 使用两个网络来计算两个视图的像素特征, teacher网络使用EMA更新方式
跨像素相似性 + 跨视图相似性
- MaskContrast 结合了 SegSort 与对比学习, 用到了跨像素相似性+跨视图相似性 来拉进同类像素之间的距离
- HSG 扩展了 Segsort 方法, 其使用不同粒度的 Segment 进行对比学习
跨图像关联
跨图像的同一类别目标具有类似的语义关系。然而,由于没有监督信息,如何在图像中挖掘相似语义的像素比较困难。为了解决这个问题,目前的方法是使用从无监督预训练中学习到的特征,如MoCo [56] 和BYOL [58],作为建立跨图像关联的基础,然后对特征进行细化。
Zhang等[67]提出了一种像素级对比学习方法,通过隐式涉及跨图像关联进行无监督语义分割。其对无监督预训练学习到的训练图像的特征进行聚类,并能够根据聚类结果为所有训练图像生成逐像素的伪标签,伪标签则用于在对比学习中选择positive/negative pair。其余工作如[24]可以参考具体论文。
Looking beyond single images for contrastive semantic segmentation learning
其他
分类Ⅱ
Segmentation Head
使用现有的方法对像素进行表示学习, 设计像素分割头来更好的完成分割任务.
- 使用两个随机图像的特征图计算相关性矩阵, 以此来监督分割mask的相关性
- 在特征图上使用谱分割方法, 得到的前几个特征向量, 即为最显著的前景分割图
Learnable Prototype
Contract Learning Method
- 最大化互信息
IIC 最大化两个视图的预测类别的互信息
InfoSeg 最大化重建图像与原始图像的互信息
- InfoNCE
MaskCon 使用 InfoNCE 的方式, 拉近不同视图中同类像素的距离, 推远不同类像素的距离
HSG 同:
- CrossEntropt
PICie 拉近像素与其对应聚类中心的距离, 推远其他聚类中心的距离
Leopart 优化两个视图分类概率的交叉熵
- Mix
SlotCon 在优化像素类别的时候, 与Leopart一致, 使用交叉熵. 在优化 prototype(slot) 的时候使用InfoNCE
Articles Reading
ECCV2018: Invariant Information Clustering for Unsupervised Image Classification and Segmentation
Abstract
本文提出Invariant Information Clustering (IIC), 也是把无监督学习转化为了一个classification的问题, 可以用于图像级分类以及像素级分类. 在图像级分类中, 网络输出样本分类的概率值, 最大化正例图像之间分类的互信息. 在像素级分类中, 使用图像Patch预测像素的分类(即使用CNN), 最大化两个临近像素之间分类的互信息.
Method
是成对的输入,神经网络 进行表示学习,我们希望这个网络保留它们之间的共同之处,丢弃instance-specific的细节. 前者使用最大化网络输出的互信息 来实现, 就是最大化 与 之间的可预测性 , 后者可以是一个 "bottleneck", 强迫网络丢弃 instance-specific 信息, 这里使用软聚类方式实现, 即网络通过一个softmax, 得到每个类别的概率值 .
overclustering
trained to produce an result, which has same loss function but greater number of clusters than the ground truth.
我们可以得到一批 Batch Size 为 的数据的 joint probability 矩阵 :
为了矩阵的对称性, 我们使用的矩阵 实际为 .
目标函数就是最大化:
为了方便观察,我们先把 写开:
这就体现了一个tradeoff,最大化前者,最小化后者。前者的最大化是 ,当所有的clusters等概率地assign时,可取得。那后者什么时候取最小值0呢,就是当cluster assignment彼此之间可以准确地预测时,也就是它们俩的cluster assignment是一样的时候,换句话说,它们的representation在空间上的距离很近时.
与 Barlow Twins 不一致的是, Barlow Twins 优化的 joint probability 矩阵 是图像级的, 是图像 与 图像 的相关性. 而 IIC 中的 为图像 预测类别 的概率与图像 预测类别 的概率.
以上可以的输出结果可以完成图像级分类, 而使用此方式进行像素级分类, 需要进行一些改动:
具体来说, 图像 , 为像素位置, 为以 为中心的图像块。可以通过添加一些小位移 来形成一对图像块 。所有图像块 的类别概率 , 那么图像的类别预测 ,可以由卷积网络 的直接计算得出。然后对 计算联合概率矩阵 。
最后, 可以得到:
其中 为可逆的图像变换.
Experiment
- Unsupervised segmentation
NeurIPS2019: Unsupervised Object Segmentation by Redrawing
本章提出应该可以在不改变数据集整体分布的情况下改变物体的纹理或颜色。
遵循这一假设,我们的方法基于一种对抗架构,给定图像, 生成器提取对象掩码,然后在相同位置用一个生成的物体替换, 应该产生一个真实的图像。生成器由鉴别器控制,鉴别器确保生成图像的分布与原始图像对齐。
就是将生成器拆成了两个部分, 一个部分负责预测分割掩码, 另一个部分负责该部分的填充. 当这个对抗网络网络被良好训练的情况下, 预测的分割掩码即完成了语义分割任务.
让我们将 表示为一个函数,其目标是在给定任何图像 的情况下推断 的值。我们可以同时学习这样一个函数,以促进生成器的信息守恒。这种策略类似于InfoGAN中使用的互信息最大化。
NertIPS2021: Looking Beyond Single Images for Contrastive Semantic Segmentation Learning
! No Code
没有代码, 所以就简单看看. 这篇文章使用一个预训练的特征提取器, 然后在多张图像中进行像素级聚类, 然后将聚类后的像素位置特征进行对比学习.
从一组未标记的图像中,我们使用现有的特征提取器获取视觉特征。我们将整个数据集的特征聚类,并将输入图像中的单个像素分配到相应的聚类中心。在最后一步中,我们通过超像素投票算法优化结果标签映射。
ICCV2021: Unsupervised Semantic Segmentation by Contrasting Object Mask Proposals
有/无监督SOD方法进行一阶段检测,对同一mask进行像素级对比学习,对正负例进行图像级对比学习。
在 LUSS 所述,使用ImageNet数据集进行测试的时候,如果不使用 MoCo 的预训练模型,以及额外的 SOD 训练监督,性能下降会很严重。
初识
在无监督设置下,学习密集语义表征(dense semantic representations)是一个非常重要的问题,这引导网络学习像素级的语义表征/嵌入,这对无监督语义分割非常重要。如果解决了这个问题,那么后续直接使用K-Means聚类将每个像素聚集到对应的sematic groups就可以执行语义分割。
目前采用的无监督表征学习(自监督学习)通常学习到的是图像级的表征【比如进行实例判别的对比学习】,无法表征其具有像素判别性。而一个好的像素级表征应该是具有判别性的,即具有语义判别性,同类物体像素聚集较近,异类像素特征距离较远(对于语义分割任务来说)
无监督语义分割通常是一个端到端的形式【直接学习聚类函数】,而本文将表征学习和聚类的过程进行解耦,如下图所示,先进行像素级表征学习(两阶段-I和II):采用无监督显著性检测得到物体掩码区域object mask proposals,以此作为先验去引导网络学习像素表征;然后再进行聚类/微调进行语义分割。
本文提出的方法能够在具有挑战性的数据集上得到应用(比如PASCAL VOC),而之前的方法仅应用于一些小规模数据集。
相知
整体框架:首先进行两阶段的像素级表征学习,再进行微调聚类。为什么需要两阶段?因为直接进行端到端像素聚类是非常难的,容易只关注低级图像特征,比如颜色,对比度等,丧失特征的语义判别性。而查找一块像素可能聚集在一起的图像区域是比较容易的(利用显著性检测),虽然不能直接进行语义分割,但能够为像素级标注学习提供一个很好的先验。
因此本文提出一个名叫MaskContrast两阶段进行像素表征学习:第一步先获取Mid-level visual gropus,也就是显著性检测的结果(mask)作为先验;第二步采用对比学习学习像素级表征,如图2所示,将相似对象的像素特征在特征空间中靠拢,不同对象的像素特征进行推远。
这个先验也称为
shared pixel ownership
:如果一对像素点属于同一个mask区域,那么它们应该聚在一起,即最大化它们之间的一致性。关于为什么要使用mid-level visual gropus作为先验,作者解释了两点好处:① 使用这类mid-level visual gropus,如对象信息,约束了表征(一种regularization方式)。这迫使网络不依赖低级图像信息进行聚类,而学习语义判别性特征。② 提供的物体线索(cue)对语义分割任务具有很高的信息量。
目标掩码区域生成:使用显著性检测生成mask区域,并使其作为
mid-level visual gropus
,下图展示了两种方法在PASCAL上的预测结果(一个为监督学习训练,一个为非监督训练)。无监督方法为:Deepusps,监督方法为:Basnet
像素级对比学习:利用上述方法,对于一组图片 就可以得到一组非重叠的目标mask区域 。接下来就需要进行像素级表征学习,即学习一个网络,其可以将图像中的每个像素 都映射为一个 维的特征 。
对于图像级别的对比学习:
基于上式进行修改,使其应用于像素级的对比学习。首先计算每个mask内包含的平均特征作为该
object
的mean pixel embedding
:接下来再考虑要达到的两个目的:
- Pull-Force:为了进行
shared pixel ownership
,需要拉近属于同一个object
的像素级特特征间距离。与对比学习不同的是,这里将属于同一个mask的像素特征直接与对应的mean embedding最大化一致性【与像素个数乘scales linearly】。
- Push-Force:为了避免模型崩塌(所有像素映射到一个常数点),还需要将不同object的像素级特征推远。这里同样也是推远与其他目标的mean embedding。
最后形成的损失函数形式如下,其中像素 属于 。
应用上式可以使得网络让同一个目标在不同视角下(不同增广,如图2所示)的像素级特征之间最大化一致性,同时最小化不同目标的一致性。
值得注意的是,这个损失函数只对前景区域的像素使用,因为背景区域形式多样,难以聚集。但这样就带来了一个问题:在这个损失约束下,网络没有区分mask内像素特征和mask外像素特征之间的差异,导致同一张图片的像素特征出现崩塌【同一张图像的所有像素特征为一个值】。为了解决这个问题,额外增加了一个linear head预测显著性mask。
Experiment
CVPR2021: PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in Clustering
Overview
下图为PiCIE的整体流程,其基于深度卷积框架。首先将数据集输入,经过光度不变、几何等变以及卷积神经网络的转换从而得到每个像素的特征表示,而后经过像素级聚类得到聚类中心并且为每个像素分配标签,再将得到的标签作为伪Groundtrue进行迭代,最终得到一个稳定的结果。右图为光度不变性以及几何等变性的具体操作方法。接下来详细介绍该模型。
DeepCluster
DeepCluster将图片输入后通过卷积神经网络获得特征表示,然后对特征表示进行聚类从而通过分类器打上标签,打上标签后再将标签反馈给神经网络,并更新分类器,以此循环迭代,最终得到稳定的结果
具体来说,假设我们有一组未标记的图像 , 为图像 中的每个像素 的特征表示,用 表示。用 表示对这些像素特征向量的分类器。
- Use the current embedding and k-means to cluster the pixels in the dataset.
其中 表示第 个图像中第 个像素的簇标签, 是第 k 个簇质心。
- Use the cluster labels to train a pixel classifier using standard cross entropy loss.
其中 是分类器 输出的第 类分数。
Non-parametric prototype-based classifiers
本文提出在无监督的环境中既要既要不断的改变伪标签又要训练参数分类器这是十分困难的,并且当参数分类器学习不好时会对下一次的聚类产生噪声。因此该论文提出了舍弃参数分类器的方法,而改用计算簇中心与特征表示之间的距离来分类。
因此其损失函数则改变为这样,其中 为特征表示与簇心的距离。到此,模型的第一个改动完成,实现了无超参化。
Invariance and Equivariance
Invariance to photometric transformations
当一幅图像的光照强度发生轻微的抖动时在同一位置的像素应该被划分得到相同的标签,而不应该改变。在此论文中表现为将每一个像素点进行两种不同的光度变换后得到的特征表示应当相同。图中P1,P2就表示为同一像素点的两种不同光度变换,式子6、7为同一像素点两种光度变换后的结果。由于光度不变的想法,我们对Z1,Z2聚类后他们应当满足 与自身的簇中心越近越好(用Lwithin约束),以及 自身应当也与另一光度变换的簇心越近越好(用Lcross约束)。到此就实现了光度的不变性。
对于数据集中的每个图像 ,我们随机采样两个光度变换, 和 。这为每个图像 中的每个像素 产生两个特征向量:
Equivariance to geometric transformations
当一张图片发生放大、缩小时,物体的标签结果应当是原图像处理后的放大、缩小版本。论文中体现为在得到光度变换的基础上,对其中一个进行几何变换,而另一个保持不变,这样就形成了两种不同的几何形式。
为了学习关于几何变换的等方差,我们对每个图像采样几何变换(具体来说,随机裁剪和水平翻转)。然后,在上述框架中,一个视图使用转换图像的特征向量,而另一个使用原始图像的转换特征向量:
Loss
然后我们在两个“视图”中分别进行聚类,得到两组伪标签和质心:
给定这两组质心和这两组伪标签,我们使用两组损失函数:
- 我们希望特征向量符合聚类标签。
- 我们还希望来自一个视图的特征向量与另一个视图的聚类标签和质心相匹配:
Experiment
- Ablation Study
我们测试了 PiCIE 不同组件的替代方案。对比将跨视图损失替换为 MSE 损失,直接最小化特征
- COCO-All
- COCO-Stuff
GCPR2021-Best Paper: InfoSeg: Unsupervised Semantic Image Segmentation with Mutual Information Maximization
Overview
这是一个需要分割成两个类别的图片示例,首先原图输入 CNN 网络有两个输出端,一个是和原图成比例缩小的局部特征图 ,一个是个数和类别数一样的全局特征 。 大小为 ,通道数和 一致。
每个全局特征 对应一个类别, 然后与 逐点相乘(计算相似度), 然后softmax得到每个点类别概率.
之后每个 H 与特征图做点积得到预测的初步分割图,对几张 进行 Scaled Softmax 操作以确定每个像素点属于哪个类别的概率:
之后其实分割图就可以通过该方法得到啦,上图是得到概率,分割图直接明确哪个类别最大就好了:
无监督方法则进一步通过合成特征来达到,如上图结构所示,之后将每个类别概率值与其 H 相乘并加和就得到了加权合成特征:
最后,我们的目标就是使正例的局部特征与该合成特征互信息最大:
这里最小化的是 JS 散度:
Result
ICLR2022: Unsupervised Semantic Segmentation by Distilling Feature Correspondences
Abstract
无监督语义分割因为训练时没有标注,所以需要让特征具有充分的语义信息的同时,让同一类物体对应的像素的特征足够紧凑。因此本文根据这两个特点,没有采用以往端到端的方式,而是将无监督语义分割拆分为提取特征和聚类两步。作者认为,目前的特征提取模块已经能很好地将同类特征放在一起了,因此本文创新点是通过全新的损失函数,鼓励模型将特征变得更加紧凑的同时不破坏不同分类之间的关系.
使用预训练的 DINO 作为特征提取器, DINO(Caron 等人,2021 年)在自监督学习框架内使用 ViT,该框架通过指数移动平均更新执行自蒸馏。卡隆等人。 (2021) 表明 DINO 的类注意力可以产生局部的和语义上有意义的显着对象分割。我们的工作表明,DINO 的特征不仅可以检测显着物体,还可以用于提取图像之间密集且具有语义意义的对应关系。在 STEGO 中,我们改进了这个预训练主干的特征,以在聚类时产生语义分割预测。我们关注 DINO 的嵌入是因为它们的质量,但请注意 STEGO 可以使用任何深度网络功能。
Method
作者从经验上表明,经过预训练的特征提取backbone能够很好地将同一类的像素放在一起
如图,左图是原图,在天空,摩托车和地面三个类上分别选择了一个参考像素,然后中间和右图是特征提取之后,每个点的像素修改为其所最接近的参考像素的颜色所得到的图,如果三个都不接近,那就说明被聚集到了其他特征聚类中。
可以看到,在原图提取后的图像中,大多数像素都正确地和参考像素放在了一起,天空大部分为蓝色,摩托车为红色,地面为绿色。即使是另一幅图,也因为主要构成的语义和原图相同,所以不同区域的颜色也同样成功聚类了。这说明特征提取能成功聚类,并且知识能够跨图像保留。
基于上面例子的结论,作者将中心放在了聚类上.
结构
本文只训练一个分割分类头,其余部分要么是冻结参数绝对不参加训练的特征提取backbone,要么是传统方法。
- backbone 将两个图片 映射为特征 , ;
- 计算二者间的 feature correspondence
即 spatial element-wise 的 cosine similarity.
- segmentation head 将 分别映射为
计算二者间的 feature correspondence .
- 得到如下的损失函数:
其中 为一个超参数. 注意到, 关于 最小化上式, 有
故合适的 会促使 准确度量一致性;
- 但是 (3) 在训练的时候并不稳定, 作者先将 进行中心化, 即
然后用如下的损失进行替代:
- 最后的损失为:
其中 和其本身 或类似的 (positive) 样本 (通过 KNN 选取的) 的损失主要是为了学习正向的 的信息, 而 和随机的样本 之间的损失则是为了更多的提供 等负向的排斥的信息的学习;
预测结构的最后一个组件是聚类和CRF细化步骤,由于DINO的特征蒸馏过程,STEGO的分割特征倾向于形成清晰的簇。STEGO的分割特征往往会形成清晰的聚类,使用MacQueen等人1967年提出的基于acosine距离的小批量K-均值算法来提取这些聚类簇,并根据STEGO的连续特征计算为形成的簇分配类别。聚类后,使用CRF对这些标签进行细化,以进一步提高其空间分辨率。
Exp
CVPR2022: Self-Supervised Learning of Object Parts for Semantic Segmentation
Abstract
自监督学习的进步带来了强大的图像表示学习方法。然而到目前为止,它主要集中在图像级学习上。反过来,无监督图像分割等任务并没有从这一趋势中受益,因为它们需要空间多样化的表示。在本文中,我们认为对象部分的自我监督学习是解决这个问题的方法。
尽管自监督 ViT 擅长提取对象,但它们并没有学习到空间标记嵌入空间,即区分不同的对象类别。为此, 我们提出了一个密集聚类 pretext task 来学习语义丰富的空间标记,缩小监督 ViT 和自我监督 ViT 之间的差距。
我们探索使用 Vision Transformer (VIT) 和我们的新损失,使其完成自我监督的分割。虽然视觉转换器显示出巨大的潜在统一架构,并且可以很好地将数据扩展到数十亿,但它们主要被证明适用于以监督方式的图像级任务或密集任务。我们的工作旨在通过自监督学习密集的 VIT 模型来缩小这一差距。
Method
我们的目标是学习一个嵌入空间,该空间对包含对象相同部分的图像块进行分组。原因是我们假设对象的部分表示比对象表示更通用, 因为其可以以多种方式重新组合到不同的对象。例如,轮子表示可以组合成汽车表示,也可以组合公共汽车表示。
我们没有使用需要大量 GPU 预算的从头开始预训练模型,而是使用我们的损失来微调预训练神经网络 DINO。
Fine-tuning loss for spatial tokens
- 为了训练 vit 网络提取空间标记,我们首先将图像随机裁剪 次, 每次得到 global view和 local view。给定一个图像 , 那么剪裁后的图像表示为
- 使用一个 MLP + L2 Norm 作为 bottleneck 进行提取特征, 得到
我们使用的视觉编码器是 ViT ,它将图像块 映射到 个空间标记的向量 。
- 接下来初始化每个图像块特征 的 个聚类中心, , 然后使用 OTA 最优传输匹配, 计算每个图像块特征 属于每个类别的概率 , 由于全局作物捕获了图像的大部分,我们仅使用 它们来计算 ,因为空间标记可以关注全局场景信息,从而提高整体预测目标质量。
- 为了将 与 的区域对齐, 使用 ROI Align 将 与 对齐.
- 然后, 损失为:
其中 是交叉熵, 是按温度 缩放的 softmax。我们使用 联合优化类别向量 以及神经网络 和 。 在每个梯度步骤之后进一步 归一化,使得 为图像块特征与聚类中心之间的余弦相似度。
类似于 Self-Supervised Visual Representation Learning with Semantic Grouping. 但这里的 Q 是由 OTA 匹配的来的, 而另一篇文章的 Q 计算方式与 student 网络一致.
- 为了将聚类集中在前景标记上,我们进一步利用了 ViT 每个注意力头的 CLS token 注意力图 , 同样的, 将这个注意力图对齐到 , 二值化后得到 , 然后将得到的掩码应用于 2D 交叉熵损失的 0-1 权重,。
Cluster-based Foreground Extraction (CBFE)
由于我们需要判断在每张图像的每个聚类类别是否为该图像的前景,我们计算 Attention Masks 与 每个Cluster Masks 的差异,差异小的我们就认为是前景,反之则为背景。
Overclustering with community detection(CD)
正如我们在表 1 中看到的,分割结果随着聚类粒度的增加而显着提高。然而,这主要是因为过度聚类利用标签信息将聚类分组为真实对象,并且在为每个像素提供一个聚类的限制下,这相当于提供完整的监督信号。
我们的思想是每个 cluster 对应于对象的某个部分,并且一组对象部分经常同时出现。因此,图像中集群的局部共现应该提供有关对象组成部分的提示。为了对集群进行分组,我们构建了一个无向和加权的共现网络 ,其中 对应于每个集群。我们将 8 邻域视为像素距离 d。然后,我们计算所有图像 上的集群 和 的条件概率 。有了共现概率,我们定义 。这种不对称的边缘权重定义的动机是部分不需要相互预测:例如,汽车挡风玻璃可能与天空显着同时出现,但天空的存在不能预测汽车挡风玻璃。
为了在 中找到社区,我们使用常见的 Infomap 算法,因为它使用加权图并与 的线性扩展。使用离散的多对一映射 从 Infomap 获得并在训练数据上计算,我们将验证数据的集群合并到所需数量的真实类中并进行匈牙利匹配。
Experiments
- Result
- Ablation Study
NeurIPS2022: Self-Supervised Visual Representation Learning with Semantic Grouping
Abstract
本文提出从数据驱动的语义槽 进行对比学习,即SlotCon,用于联合语义分组和表征学习。
- 语义分组 是通过 将像素分配给一组可学习的原型 来执行的,这些原型可以通过 attentive pooling 注意力池化 特征来适应每个样本,并形成新的槽。
- 基于所学习的数据相关槽,对比目标被用于表示学习,这增强了特征的可区分性,并且反过来便于将语义一致的像素分组在一起。
与先前的工作相比,通过同时优化 语义分组 和 对比学习 这两个耦合的目标,本文的方法绕过了手工制作的先验的缺点,并且能够从以场景为中心的图像中学习目标/组级别的表示。
Prototype(原型) 的概念其实就是 InfoSeg: Unsupervised Semantic Image Segmentation with Mutual Information Maximization 中的 global feature, 可以与特征图点积计算相似度, 得到每个像素分配到每个类别的概率. 另外可以认为是聚类得到的聚类中心.
Method
语义分组
给定一个未标记图像的数据集 ,我们旨在学习一组原型 ,将每个像素分类为一个有意义的组,使得同一组内的像素是语义一致的(具有相似的特征表示),并且不同组之间的像素是语义不连贯的。
语义上有意义的分组 应该 对数据增强是不变的。因此,对于同一图像的不同增强,我们强制位于同一位置的像素具有相似的匹配分数 关于同一组集群中心(原型)。
类似于 leopart: Self-Supervised Learning of Object Parts for Semantic Segmentation
leopart 中损失函数中的两项分别是: student 网络输出的图像块的类别分数, 第二项是使用 teacher 网络输出的特征, 使用 OTA 匹配获得的类别分数.
而此模型与此类似, 损失函数的第二项与第一项的计算方式一致. 损失函数均为交叉熵, 并且 prototype 均为可以优化的.
具体来说,如图 1 所示,本文的方法包含两个神经网络:学生网络由 参数化,并包括编码器 、projector 和 一组 个可学习原型 ,教师网络与学生拥有相同的架构,但使用了一组不同的权重 ,其更新为 的指数移动平均值。
- 给定输入图像 ,应用两个随机增强来生成两个增强视图 和 。
- 每个增强视图 然后用编码器 编码成隐藏特征图 ,然后用多层感知器 (MLP) 转换得到 。
- 然后,我们用原型 使用相似度计算 的匹配分数 ,并强制它与教师网络的另一个视图 产生的分配 相匹配。更准确地说,使用 l2 归一化 投影 和原型 .
其中, 温度参数,控制两个网络输出分布的锐度。 可以省略,后面会解释。请注意,由于几何图像增强,例如 随机裁剪、缩放 或 翻转,两个特征图 和 的 比例 或 布局 可能不一致。因此,我们 对预测的分配 执行逆增强(inverse augmentation)过程来对齐它们的空间位置:.
对 分配 而不是投影 执行 逆增强,以将上下文信息保持在用于槽生成的重叠区域之外
基于 对齐的分配,本文应用 交叉熵损失 强制不同视图的 空间对齐像素之间 分配分数的一致性。
交叉熵损失 在所有空间位置上进行平均 以产生分组损失:
直接优化上述目标 类似于 Mean Teacher 的无监督变体,其会发生崩溃。为了避免崩溃,本文维持一个 mean logit 并在产生教师的分配 时减少它。 mean logit 存储教师网络产生的所有 logit 的指数移动平均值:
其中 代表批量大小。直观地说,减少 mean logit 会放大 不同像素之间 分配的差异,从而避免 将所有像素 分配给同一个原型。除此之外,教师温度 设置为 小于学生温度 以产生更清晰的目标 并避免统一的分配。这两种操作都有助于避免崩溃,并强制网络学习有意义的语义分组。
slots 的对比学习
受 Slot Attention 的启发,本文重用语义分组模块计算的分配 。 在密集投影 上执行注意力池化 以产生组级的特征向量(就是注意力后的特征上, 取了一个平均值)(表述为槽)。
具体来说,对于从视图 产生的密集投影 ,我们提取 个槽:
其中, 表示 Hadamard 积,类似的操作适用于教师网络以生成 。请注意,由于 初始槽 由整个数据集共享,因此在特定视图 中可能 缺少相应的语义,从而产生冗余槽。因此,本文计算以下二进制指示符 以屏蔽 未能占据主导像素的槽:
本文然后应用 对比学习目标 用 InfoNCE 损失 来 区分 具有相同语义的插槽 与 分散注意力的插槽:
这个目标有助于最大化同一槽的不同视图之间的相似性,同时最小化 来自具有不同语义的另一个视图的槽之间 和 来自其他图像的所有槽之间的相似性。请注意,此处将具有与projector 相同架构的 额外的predictor 应用于槽 ,因为根据经验 (BYOL),它会产生更强的性能。
Loss
Experiment
Transfer learning results
Unsupervised semantic segmentation results
本文的方法可以超越之前的作品 PiCIE 和 SegDiscover ,mIoU 高 4 个点。同时,pAcc 较低,因为我们用较低的分辨率训练模型(7 × 7 对 80 × 80 特征图)。除了表 5,本文还描述了可视化结果,其中本文的方法 区分了混淆对象(第 4 列)并成功定位了小目标(第 5 列)。由于我们只需要在同一图像中分离具有不同语义的像素,因此可以忽略类别预测中的错误。
Ablation Study
CVPR2022 Oral: Deep Spectral Methods: A Surprisingly Strong Baseline for Unsupervised Semantic Segmentation and Localization
Abstract
- 现有的无监督方法难以处理包含多个对象的复杂场景。
- 我们从传统的谱分割方法中汲取灵感,将图像分解重新定义为一个图划分问题。
- 我们研究了自监督网络中特征的 affinity 矩阵的拉普拉斯特征向量。我们发现这些特征向量已经将图像分解为有意义的片段,并可以很容易地用于定位场景中的对象。
我们的方法首先利用自监督网络提取与图像块对应的密集特征。然后我们在图像块上构建一个加权图,其中边的权重是图像块的语义 affinity 矩阵,然后将该图进行拉普拉斯矩阵的特征分解。我们发现,在不强加任何额外结构的情况下,该图的拉普拉斯算子的特征向量直接对应于具有语义意义的图像区域, 具有最小非零特征值的特征向量通常对应于场景中最突出的对象。
Method
令 为图像。我们将首先使用神经网络得到密集特征 , 为下采样的倍数. 首先计算图像语义 affinity 矩阵:
为了获得低级细节,我们将它们与传统的颜色级信息融合,这些信息可以看作是网络第 0 层的特征。我们使用 sparse KNN-matting matrix 作为颜色 affinity 矩阵,也可以使用任何传统的相似矩阵。
其中 是用户定义的参数,用于权衡语义和颜色一致性。
KNN-matting 将图像转换为 HSV 颜色空间,并为每个像素定义一个向量 ,其中包含两种颜色信息 ( 值)和空间信息( 值)。然后,他们基于 从像素最近的邻居构造一个稀疏affinity 矩阵:
其中 是 在由 定义的距离下的 个最近邻。
给定 ,我们取其拉普拉斯算子 的特征向量将图像分解为 soft segments:. 由于第一个特征向量 是对应于 的常数向量,出于我们的目的,我们仅使用 。
Laplace 矩阵:
- Combinatorial Laplacian:
- Symmetric normalized Laplacian:
- Random walk normalized Laplacian:
正则化图拉普拉斯矩阵具有实对称半正定的性质。利用这个性质,正则化拉普拉斯矩阵可以分解为 .
其中 , 是由 的特征向量构成的矩阵, 是对角矩阵,对角线上的值为 的特征值。正则化拉普拉斯矩阵的特征向量构成了一组正交基。
Object Localization
为了定位主要对象,我们只需遵循标准的谱二分法。我们检查 的 Fiedler 特征向量 并通过取其符号将其离散化以获得图像的二元分割。然后我们在两个区域中较小的区域周围取一个边界框,它更可能对应于任何前景对象而不是背景。
Semantic Segmentation
我们执行了一个三步过程,其中:(1)将每个图像分解为 segments(2)计算每个 segments 的特征向量,以及(3)对这些图像的段进行聚类
- 我们通过使用 K 均值聚类(分别针对每个图像)在特征向量维度上对 的前 个特征向量 进行离散化, 得到每个特征向量中的聚类区域, 即 segments 。由于我们不知道图像的先验有意义 segments 的数量,我们根据经验发现最好将图像过度聚类。
- 每个 segments 的区域进行裁剪,并使用神经网络计算其特征 。
- 使用 簇的 K 均值聚类对所有图像的所有特征向量集 进行聚类。第二个聚类步骤为每个图像的每个片段分配一个标签;具有相同标签的相邻区域被合并在一起,我们得到了一组在整个数据集中一致的语义图像分割。
Experiments
- Architecture and pretraining
- Semantic Segmentation on PASCAL VOC 2012
CVPR2022: Unsupervised Hierarchical Semantic Segmentation with Multiview Cosegmentation and Clustering Transformers
Abstract
给定一张图片 使用神经网络进行特征提取, 得到稠密的特征表示 , 对像素的特征表示使用聚类算法进行聚类, 可以得到其聚类中心 , 每个像素属于每个类别的概率 , 将类别概率使用一个去argmax 操作, 得到像素到类别的分配 .
然后, 我们使用边缘检测器(OWT-UCM) 进行边缘检测, 然后与 合并, 即边缘检测得到的边缘加上 的边缘, 也就是说两者的边缘都是 的边缘, 这些边缘将像素分配图 分割成各段 Segments, 然后使用 进行对比学习.
为了在不同分割粒度下, 像素的稠密表示都能反应其所属类别, 比如说在细粒度的像素分配图 中, 存在”手”和”腿”两种聚类中心, 但是在粗粒度的像素分配图中, 这两个类应该同属于”人”, 所以使用了不同层级的像素分配图 进行对比学习.
下一层级的聚类中心与像素分配图的生成
clustering transformer enforces 目的是给出一个类别转移矩阵 以及新的聚类中心 . 使用当前的聚类中心在类别转移矩阵当中可以找到一个对应的最大概率的新聚类中心. 其中 是可学习的.
Segment 的对比学习
这一部分的目的是拉近相同类别Segment之间像素的类型, 推远不同类别 Segment 之间的像素类别. 给定图像 以及对应的像素级稠密表示 , . 我们可以得到每个 Segment 的类别中心:
对比学习的损失可以写为:
为在图像 的任何视图中与像素 类别相同的片段,除了 自己所在的片段
为在图像 的任何视图中与像素 类别不同的片段,除了 自己所在的片段
为啥不用像素 所在的片段, 咱也不知道
Exp
Unsupervised Semantic Segmentation with Language-Image Pre-train
Unsupervised Semantic Segmentation with Language-Image Pre-train is a subtask of Unsupervised Semantic Segmentation.