论文阅读:Unsupervised Part Discovery from Contrastive Reconstruction

论文:Unsupervised Part Discovery from Contrastive Reconstruction
论文下载:https://www.robots.ox.ac.uk/~vgg/research/unsup-parts/pdfs/choudhury21unsupervised.pdf
源码地址:https://github.com/subhc/unsup-parts

由于本人对于自监督的语义分割涉猎不多,故对原文的理解难免会产生一些偏差,如有错误还望路过的大佬指正。

Abstract

自监督的视觉表征学习的目标是学习强的,可移植的图像特征,大多数的研究都集中在场景和目标层面。对于零件(part)层面的研究较少。作者总结这篇论文的贡献有三点:首先,作者设计了一系列目标函数来构造一个代理任务,这些目标函数鼓励模型学习将物体有意义的分解为各个零件。第二,先前的工作主张可以对预先计算好的特征进行重建或者聚类作为零件分割(part segmentation)的代理任务。我们的经验表明仅仅这样做不太可能会得到有意义的零件分割结果;主要是因为那些特征的分辨率很低而且分类网络有抹除空间上(spatial)的信息的趋势。(因为分类网络需要的是语义信息来优化损失函数,一般为交叉熵)。我们认为像素级的图像重建作为一个补充的线索可以缓解这个问题。最后,我们证明了基于关键点回归的评估标准和零件分割的质量没有太大的相关性因此我们引入了不同的评价标准:NMI和ARI,这两个指标可以更好的描述物体到零件的分割结果。我们的模型产生的基于语义的零件分割结果在视觉上不同但细粒度上一致。
ps:最后一句话实在是翻译不通顺,有看到的小伙伴希望指导一下。
论文阅读:Unsupervised Part Discovery from Contrastive Reconstruction_第1张图片

Introduction

人类通过将世界视为不同物体的集合感知这个世界。当我们与一个物体交互时,我们自然的会感知其所包含的不同零件。在视觉场景理解中,零件提供的中间表达相比物体本身更具有对物体姿态、方向、视角和光照的不变性。这对一些高层次的任务如细粒度的图像识别、操作等有很重要的作用。然而,全监督的零件分割方法需要人工的标注,这是缓慢的、昂贵的并且不可能为现实世界中几乎无限的种类的对象收集齐全。因此,无监督的零件分割方法最近受到了大家的关注。因此我们考虑自动发现视觉物体种类的零件的问题:给定一个特定类别的(例如,鸟)图像和相应的对象掩码的集合,我们想要模型可以学习将一个对象分解为可重复的和包含信息的零件。

Method

论文阅读:Unsupervised Part Discovery from Contrastive Reconstruction_第2张图片
上图是论文中设计的几个损失函数,接下来我会详细的介绍一下这几个损失函数。
M ∈ { 0 , 1 } C × H × W M\in\{0, 1\}^{C \times H \times W} M{0,1}C×H×W: the final part segmentation result
I I I: the original image
ϕ \phi ϕ: the feature extractor pre-trained in ImageNet
[ ϕ ( I ) ] u ∈ R d [\phi (I)]_u \in R^d [ϕ(I)]uRd: the feature vector to pixel location u u u in image
Ω \Omega Ω: all foreground pixels
z k ( I ) z_k(I) zk(I): the part descriptor of part k k k in image I I I
z k ( I ) = 1 ∣ M k ∣ ∑ u ∈ Ω M k u [ ϕ ( I ) ] u , ∣ M k ∣ = ∑ u ∈ Ω M k u z_k(I)=\frac{1}{\mid M_k \mid}\sum _{u \in \Omega}M_{ku}[\phi(I)]_u, \mid M_k \mid = \sum_{u \in \Omega} M_{ku} zk(I)=Mk1uΩMku[ϕ(I)]u,Mk=uΩMku

Feature Loss

L f = ∑ k = 1 K ∑ u ∈ Ω M k u ∥ z k ( I ) − [ ϕ ( I ) ] u ∥ 2 2 \mathcal{L}_f = \sum_{k=1}^K \sum_{u \in \Omega} M_{ku} \parallel z_k(I) - [\phi(I)]_u \parallel_2^2 Lf=k=1KuΩMkuzk(I)[ϕ(I)]u22
从这个公式的字面意思上看,这个损失就是计算同一张图片中的同一个零件(part)的描述符的方差,优化这个损失的目的就是直接使同一张图片中具有相似语义信息的像素可以被分为相同的零件(part)。

Contrastive Loss

L c = − ∑ n = 1 N ∑ k = 1 K l o g e x p ( z k ( n ) ⋅ z ^ k ( n ) / τ ) e x p ( z k ( n ) ⋅ z ^ k ( n ) / τ ) + ∑ j ≠ k ∑ i ≠ n e x p ( z k ( n ) ⋅ z j ( i ) / τ ) \mathcal{L}_c = -\sum_{n=1}^N \sum_{k=1}^K log \frac{exp(z_k^{(n)} \cdot \hat z_k^{(n)}/ \tau)}{exp(z_k^{(n)} \cdot \hat z_k^{(n)}/ \tau) + \sum_{j \neq k} \sum_{i \neq n} exp(z_k^{(n)} \cdot z_j^{(i)} / \tau)} Lc=n=1Nk=1Klogexp(zk(n)z^k(n)/τ)+j=ki=nexp(zk(n)zj(i)/τ)exp(zk(n)z^k(n)/τ)
上述的公式就是典型的对比学习的损失函数,对于对比学习最重要的就是要找出正样本和负样本,这里的正样本取的是不同图片但是属于同一part的像素,由于相同的part即使不出现在同一张图片中也应该足够相似,负样本中取的是不同图片不同part的像素。优化这个损失就可以使正样本更加相似,而离负样本越来越远(也就是与负样本越来越不相似)。
这里我有个问题,希望路过的大佬可以解答一下,作者在原文中描述的是该损失可以最大化不同图片但相同part之间的相似性,同时最大化不同或相同图片中不同part的不相似性。如下图所示,但是正如公式中所示,负样本中的样本并没有相同图片不同part的部分,按照作者这样说,公式中的负样本应该去掉 i ≠ n i \neq n i=n的限制,即负样本的那项应该改为 ∑ j ≠ k e x p ( z k ( n ) ⋅ z j ( i ) / τ ) \sum_{j \neq k} exp(z_k^{(n)} \cdot z_j^{(i)} / \tau) j=kexp(zk(n)zj(i)/τ)

Visual Consistency Loss

L v ( M ) = ∑ k = 1 K ∑ u ∈ Ω M k u ∥ I u − 1 M k ∑ v ∈ Ω M k v I v ∥ 2 2 \mathcal L_v(M) = \sum_{k=1}^K \sum_{u \in \Omega} M_{ku} \parallel I_u - \frac{1}{M_k}\sum_{v \in \Omega} M_{kv}I_v \parallel_2^2 Lv(M)=k=1KuΩMkuIuMk1vΩMkvIv22
上述两个损失函数均是从基于特征提取器提取的语义特征计算的,但是由于特征提取器输出的feature map分辨率很低,不能保存很多的空间信息,所以不能很好的和原图的物体边界对齐。因此,考虑到在同一张图片中的同一个part往往会具有颜色,纹理上的相似性,因此作者考虑从视觉一致性方面设计一个损失函数。
1 M k ∑ v ∈ Ω M k v I v \frac{1}{M_k}\sum_{v \in \Omega} M_{kv}I_v Mk1vΩMkvIv 可以认为是计算了同一个part区域内的平均灰度值,所以该损失函数就相当于鼓励模型将具有相似视觉特征的区域分为同一个part。这里作者描述的是使模型学习将part的分割和原图中的边界对齐,这里我不太理解为什么只是计算一下灰度的相似性便可以使模型学习到边界的信息,希望路过的大佬可以指点一下。

你可能感兴趣的:(论文阅读笔记,计算机视觉,人工智能)