PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in Clustering
下图为PiCIE的整体流程,其基于深度卷积框架。首先将数据集输入,经过光度不变、几何等变以及卷积神经网络的转换从而得到每个像素的特征表示,而后经过像素级聚类得到聚类中心并且为每个像素分配标签,再将得到的标签作为伪Groundtrue进行迭代,最终得到一个稳定的结果。右图为光度不变性以及几何等变性的具体操作方法。接下来详细介绍该模型。
<aside> 💡 DeepCluster
DeepCluster将图片输入后通过卷积神经网络获得特征表示,然后对特征表示进行聚类从而通过分类器打上标签,打上标签后再将标签反馈给神经网络,并更新分类器,以此循环迭代,最终得到稳定的结果
具体来说,假设我们有一组未标记的图像 $x_i, i = 1, 2, \cdots n$, $f_θ(x)$为图像 $x$ 中的每个像素 $p$ 的特征表示,用 $f_θ (x)[p]$ 表示。用 $g_w(·)$ 表示对这些像素特征向量的分类器。
Use the current embedding and k-means to cluster the pixels in the dataset.
$$ \min _ { \mathbf { y } , \boldsymbol { \mu } } \sum _ { i , p } \left\| f _ { \theta } \left( x _ { i } \right) [ p ] - \mu _ { y _ { i p } } \right\| ^ { 2 } $$
其中 $y_{ip}$ 表示第 $i$ 个图像中第 $p$ 个像素的簇标签,$μ_k$ 是第 k 个簇质心。
Use the cluster labels to train a pixel classifier using standard cross entropy loss.
$$ \begin{array} { l } \min _ { \theta , \mathbf { w } } \sum _ { i , p } \mathcal { L } _ { C E } \left( g _ { \mathbf { w } } \left( f _ { \theta } \left( x _ { i } \right) [ p ] \right) , y _ { i p } \right) \\ \mathcal { L } _ { C E } \left( g _ { \mathbf { w } } \left( f _ { \theta } \left( x _ { i } \right) [ p ] \right) , y _ { i p } \right) = - \log \frac { e ^ { s _ { y _ { i p } } } } { \sum _ { k } e ^ { s _ { k } } } \end{array} $$
其中 $s_k$ 是分类器 $g_w(f_θ(x_i,p))$ 输出的第 $k$ 类分数。
</aside>
本文提出在无监督的环境中既要既要不断的改变伪标签又要训练参数分类器这是十分困难的,并且当参数分类器学习不好时会对下一次的聚类产生噪声。因此该论文提出了舍弃参数分类器的方法,而改用计算簇中心与特征表示之间的距离来分类。
因此其损失函数则改变为这样,其中 $d$ 为特征表示与簇心的距离。到此,模型的第一个改动完成,实现了无超参化。
$$ \begin{array} { l } \min _ { \theta } \sum _ { i , p } \mathcal { L } _ { c l u s t } \left( f _ { \theta } \left( x _ { i } \right) [ p ] , y _ { i p } , \boldsymbol { \mu } \right) \\ \mathcal { L } _ { \text {clust } } \left( f _ { \theta } \left( x _ { i } \right) [ p ] , y _ { i p } , \boldsymbol { \mu } \right) = - \log \left( \frac { e ^ { - d \left( f _ { \theta } \left( x _ { i } \right) [ p ] , \mu _ { y _ { i p } } \right) } } { \sum _ { l } e ^ { - d \left( f _ { \theta } \left( x _ { i } \right) [ p ] , \mu _ { l } \right) } } \right) \end{array} $$
当一幅图像的光照强度发生轻微的抖动时在同一位置的像素应该被划分得到相同的标签,而不应该改变。在此论文中表现为将每一个像素点进行两种不同的光度变换后得到的特征表示应当相同。图中P1,P2就表示为同一像素点的两种不同光度变换,式子6、7为同一像素点两种光度变换后的结果。由于光度不变的想法,我们对Z1,Z2聚类后他们应当满足 与自身的簇中心越近越好(用Lwithin约束),以及 自身应当也与另一光度变换的簇心越近越好(用Lcross约束)。到此就实现了光度的不变性。
对于数据集中的每个图像 $x_i$,我们随机采样两个光度变换,$P^{(1)}_i$ 和 $P^{(2)}_i$ 。这为每个图像 $x_i$ 中的每个像素 $p$ 产生两个特征向量:
$$ \begin{aligned} z _ { i p } ^ { ( 1 ) } & = f _ { \theta } \left( P _ { i } ^ { ( 1 ) } \left( x _ { i } \right) \right) [ p ] \\ z _ { i p } ^ { ( 2 ) } & = f _ { \theta } \left( P _ { i } ^ { ( 2 ) } \left( x _ { i } \right) \right) [ p ] \end{aligned} $$