PiCIE,21CVPR无监督语义分割
此篇文章内容源自 PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in Clustering ,若侵犯版权,请告知本人删帖。
Code: https:// http:// github.com/janghyuncho/ PiCIE
简介:
1.标题:在聚类中使用不变性和等变性的无监督语义分割
2.什么是无监督语义分割呢?如这张图片所示,将没有标签的数据集作为输入,能够将图中的每个像素都输出为标记成不同事物的标签,例如下面的蓝色一部分标记为天空,绿色为树,灰色为房子,褐色为地面。
3.在无监督的语义分割中会遇到很多的问题,其中重要的一点就是像素怎样学习到高级语义概念。现有的无监督语义分割方法,大多只能是单标签,以对象为中心的,而现实中的图像多数为多标签,以场景为中心的,这篇文章所提出的PICIE方法,通过将光度不变性和几何等变性融入深度卷积框架来学习高级语义概念,它是是第一个能够区分stuff和things的无监督语义分割方法,且无需超参数和预处理。
模型:
4.左图为PiCIE的整体流程,其基于深度卷积框架。首先将数据集输入,经过光度不变、几何等变以及卷积神经网络的转换从而得到每个像素的特征表示,而后经过聚类得到聚类中心并且为每个像素分配标签,再将得到的标签作为伪Groundtrue进行迭代,最终得到一个稳定的结果。右图为光度不变性以及几何等变性的具体操作方法。接下来详细介绍该模型。
5.首先是该方法的基线DeepCluster,什么是DeepCluster呢,DeepCluster其实就是在获得特征表示以及聚类之间迭代,使用卷积后的标签作为伪Groundtrue来训练特征表示。如下图,将图片输入后通过卷积神经网络获得特征表示,然后对特征表示进行聚类从而通过分类器打上标签,打上标签后再将标签反馈给神经网络,并更新分类器,以此循环迭代,最终得到稳定的结果。本论文的基线方法在两步中循环
公式(1):将当前的 embedding 通过 k-means 聚类,得到标签及聚类中心,其中 f_\theta(x_i)[p] 表示第i张图片的像素点p的特征表示, \mu _{y_{ip}} 为聚类中心。
公式(2):其实就是交叉熵的一个标准算法,通过计算最小损失来更新,其中SK为参数分类器的得分结果。
但是在无监督的环境中既要既要不断的改变伪标签又要训练参数分类器这是十分困难的,并且当参数分类器学习不好时会对下一次的聚类产生噪声。因此该论文提出了舍弃参数分类器的方法,而改用计算簇中心与特征表示之间的距离来分类。因此其损失函数则改变为这样,其中d为特征表示与簇心的距离。到此,模型的第一个改动完成,实现了无超参化。
6.接下来是光度不变性,首先什么是光度不变性呢?其实就是当一幅图像的光照强度发生轻微的抖动时在同一位置的像素应该被划分得到相同的标签,而不应该改变。在此论文中表现为将每一个像素点进行两种不同的光度变换后得到的特征表示应当相同。图中P1,P2就表示为同一像素点的两种不同光度变换,式子6、7为同一像素点两种光度变换后的结果。由于光度不变的想法,我们对Z1,Z2聚类后他们应当满足 与自身的簇中心越近越好(用Lwithin约束),以及 自身应当也与另一光度变换的簇心越近越好(用Lcross约束)。到此就实现了光度的不变性。
7.然后是几何的等变性,那么什么又是几何等变性呢?它其实就是当一张图片发生放大、缩小时,物体的标签结果应当是原图像处理后的放大、缩小版本。论文中体现为在得到光度变换的基础上,对其中一个进行几何变换,而另一个保持不变,这样就形成了两种不同的几何形式。如图中进行卷积网络之前下方进行了G的几何变换而上方却没有(上方卷积网络之后加入了与下方相同的几何转变是为了聚类后位置的相互对应)。论文中再将几何变换与光度变换结合起来为每一个像素得到两种不同的特征表示,如图中下面的一条线表示,在进行光度变换后进行几何等变然后通过卷积网络得到的特征表示Z1,而上面一条线先只进行光度变换在提取特征表示后再进行与下面相同的几何变换得到特征表示Z2,因为两种变换的不变与等变性,因此他们也应当满足自身的约束,以及相互之间的约束。所以总的损失函数则变化为两种损失之和。到此实现了论文的全部思想。
8.这是模型的一个整体代码流程,首先进行光度变换、几何变换以及卷积网络,为每个像素点得到两种不同的特征表示形式,通过聚类算法得到标签以及簇心,后迭代循环不断更新得到稳定的结果f映射函数。