无监督语义分割? STEGO 做到了!

点击下方卡片,关注“小白玩转Python”公众号

0fb6e3c9a933e283c10e27a08ceb6127.png

《通过特征对应提取进行无监督语义分割》(Unsupervised Semantic Segmentation by Distilling Feature Correspondences),这篇论文将缩小有监督语义分割与无监督语义分割之间的差距。 论文下载地址如下:https://arxiv.org/abs/2203.08414

既然我们没有标签,那么 STEGO 是如何工作的呢?

在此之前,我们先明确一下目标。

目标是什么? 

无监督语义分割的目标是在没有任何标记数据的情况下,发现并定位图像中语义上有意义的类别。为了解决这个任务,模型应该能够生成:

  1. 语义上有意义的 

  2. 每个像素的特征是紧凑的(因为我们要对它们进行聚类)

如果你知道 Dino(没有标签的自我蒸馏)或其论文《自监督视觉变压器中的新兴特性》,否则可以将其视为一个特征提取模型。此外,这不是我们可以使用的唯一模型,只要满足上述两个条件,任何模型都可以使用。

他们本可以设计自己的特征提取模型,但由于 Dino 学到的特征在同一图像内和跨图像集合中已经语义一致(如下图所示),因此他们设计了 STEGO(基于能量的图优化的自监督变压器)框架,旨在将这些特征提取成高质量的离散语义标签。

f75c1c97a62e32111ab0a834acfd77d7.png

DINO 的特征对应关系。从源图像(左)和目标(KNN)图像(中和右)之间的对应关系用源点的颜色(左图中的十字)在目标图像上绘制

产生这个结果的完整方法可以分为三个主要步骤:

b9a4ac5e48d0aad482339146fb9ac01c.png

  1. 特征对应关系预测类别共现

设 f 和 g 为两个具有空间维度(H, W)和(I, J)的特征张量,设 c 为通道数。使用这些特征我们形成特征对应张量,给出两幅图像区域之间的相似性。(从中提取了 f 和 g)

a3b8bf0659d96501c3b15a354f3d712c.png

特征对应向量 

这里的条目表示特征张量 f 的空间位置(h, w)和特征张量 g 的位置(i, j)之间的余弦相似性。上述特征对应张量与标签共现张量 L_hwij 强相关,这意味着如果你有两组图像和相应的语义分割真值(例如 k 和 l),并且你构建了一个标签共现张量,那么它与上述特征对应张量强相关。

  1. 提取特征对应关系

我们在上一步得到的是一个噪声分割,我们需要正确提取它,以便得到真实的分割。现在训练 S,一个轻量级的分割头,它接收 f 和 g 并输出 s 和 t。然后我们计算 s 和 t 的特征对应张量 S_hwij,与 f 和 g 的 F_hwij 类似。现在使用下面的损失函数,我们尝试将 S_hwij 的条目推向 F_hwij,如果 f 和 g 的两个相应条目之间存在显著耦合。

f47d229ef09ef295a2fc334f12b157f0.png

损失函数 

这里的 b 是一个超参数,增加均匀的“负压”,可以用来调整损失函数对特征对应的敏感性。较高的 b 值意味着对对齐的更强的阻碍,而较低的 b 值则允许更多的特征对齐灵活性,基于相关强度。

现在我们要么完全反对齐(-1),要么完全对齐(1)。那些显示出很少或没有相关性的特征呢?为了解决这个问题,我们优化弱相关分割特征,使它们正交。通过将分割对应 S 固定在 0 上,这大大提高了优化的稳定性。因此,现在我们只进行完全对齐,否则 S 为 0。

此外,小物体存在问题(它们具有集中的相关模式)。在这些情况下,F_hwij − b 在大多数区域是负的,损失驱使特征分散而不是聚合。为了使优化更加平衡,我们在特征对应上引入了空间中心化操作:

040ed62185c1158cb785ac7f465920b6.png

带有零固定的最终损失函数为:

a0e9f1c8834f15ba1c8c2634001e92de.png

  1. STEGO 架构

eaea4b4a691ae444a9066c12f98d212b.png

STEGO 使用三个实例的对应损失来训练一个分割头,以提取

  1. 图像与自身之间的特征关系

  2. 其 K 最近邻(KNNs),

  3. 随机其他图像。

这个分割头是一个简单的带有 ReLU 激活的前馈网络。我们首先使用主干通过全局平均池化(GAP)提取全局图像特征。然后我们根据主干特征空间中的余弦相似性构建每个图像的 K 最近邻的查找表。每个训练小批次由一组随机图像 x 和随机最近邻 x_knn 组成。STEGO 的完整损失为:

bab8478e87e81ebc3cc330d51ae2ce02.png

损失函数 

架构的最后一个组件是聚类和 CRF。STEGO 分割头的输出形成明确的聚类。因此,最终使用基于余弦距离的小批量 K 均值算法提取这些聚类,并从 STEGO 的连续特征中计算具体的类别分配。聚类后,我们使用 CRF 进一步细化这些标签的空间分辨率,以获得最终输出。

结果:

d5639b0d5695970a9eeeea13d727e392.png

·  END  ·

🌟 想要变身计算机视觉小能手?快来「小白玩转Python」公众号!

回复Python视觉实战项目,解锁31个超有趣的视觉项目大礼包!🎁

4bc51d4f284647643d1aa944a701d2ca.png

本文仅供学习交流使用,如有侵权请联系作者删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值