【计算机视觉】【聚类】SwAV:基于对比簇分配的无监督视觉特征学习

《Unsupervised Learning of Visual Features by Contrasting Cluster Assignments》

论文地址:https://arxiv.org/pdf/2006.09882.pdf

一、简介

​ 无监督(或者自监督)视觉表示的目标是,在不使用人工标注的情况下或者图像的特征。目前,无监督方法在计算机视觉任务中快速的接近这有监督预训练方法。近期,许多state-of-the-art方法都是建立在实例级判别任务,这些自监督任务主要依赖两个元素的组合:(1) 对比损失函数;(2) 一组图像变换。对比损失函数通过直接比较图像的特征,从而移除了实例的类别概念;而图像变换则在特征中定义了不变性。这两个元素对于最终的网络质量至关重要,本文也是在损失函数和图像变换上进行了改进。

​ 对比损失函数将同一图像的不同视图(view \text{view}view)拉近,并拉远不同图像的视图。但是,在大规模数据集上进行两两比较是不切实际的。因此,大多数的实现方法都是在训练过程中缩减比较的数量。例如,基于聚类的方法区分具有相似特征的图像组,而不是区分单个图像。聚类的方式虽然易于处理,但是因为需要遍历整个数据集,所以不太适合大的数据集。本文提出的SwAV \text{SwAV}SwAV会在线计算codes,并强制相同图像的不同视图获得的codes保持一致。图像特征和codes都是在线学习的,所以本方法可以不受数据数量的限制进行扩展。此外,SwAV \text{SwAV}SwAV能够适应各种batch,且不需要memory bank \text{memory bank}memory bank或者momentum encoder \text{momentum encoder}momentum encoder。

​ 除了在线聚类方法以外,本文还提出了一种图像变换的改进。许多对比学习方法只会对比同一图像的一对变换,但是有证据表明在训练过程中比较更多的视图能够改善最终的模型。本文提出了multi-crop \text{multi-crop}multi-crop,通过使用较小的图像来增加视图的数量。

​ 本文在若干个标准自监督benchmarks上进行了评估。在使用标准ResNet-50 \text{ResNet-50}ResNet-50的情况下,能够在ImageNet \text{ImageNet}ImageNet上达到75.3 % 75.3\%7 5 .3 %的top-1准确率。此外,实验证明了multi-crop \text{multi-crop}multi-crop策略具有普适性,能够改善不同自监督方法的效果。总的来说,本文的贡献如下:

  • 提出了一个可扩展的在线聚类损失函数,能够在ImageNet \text{ImageNet}ImageNet带来+2% \text{+2\%}+2%的改进;
  • 引入了multi-crop \text{multi-crop}multi-crop策略,在若干个自监督方法上能够带来2%到4%的改进;
  • 合并两个技术贡献至单个模型,能够在ImageNet \text{ImageNet}ImageNet上带来+ 4.2 % +4.2\%+4 .2 %的改进;

二、方法

code是指样本的簇分配;
prototype可以看做是聚类中每个簇的向量表示;

​ 本文的目标是在无监督的情况下,以在线学习的方式学习视觉特征。先前基于聚类的方法都是离线的,其在簇分配和训练两个步骤交替进行。但是,这样的方式并不适合于在线学习,因为需要在整个数据集上多次计算图像特征。本文提出了一种替代方案,强制同一个图像的不同增强视图的codes保持一致。直观上,这种方法相当于通过对比图像的簇分配来实现对比学习。

​ 具体来说,从图像的一个增强视图计算code,然后使用另一个增强视图来预测这个code。给定一个图像的两个不同增强版本的特征z t \textbf{z}_t z t ​和z s \textbf{z}_s z s ​,通过将特征匹配至K K K个prototype集合{ c 1 , … , c K } {\textbf{c}_1,\dots,\textbf{c}_K}{c 1 ​,…,c K ​}来计算它们的code q t \textbf{q}_t q t ​和q s \textbf{q}_s q s ​。本文还通过下面的损失函数设置了一个”swapped” \text{“swapped”}”swapped”预测问题
L ( z t , z s ) = l ( z t , q s ) + l ( z s , q t ) (1) L(\textbf{z}_t,\textbf{z}_s)=l(\textbf{z}_t,\textbf{q}_s)+l(\textbf{z}_s,\textbf{q}_t) \tag{1}L (z t ​,z s ​)=l (z t ​,q s ​)+l (z s ​,q t ​)(1 )
其中,函数l ( z,q ) l(\textbf{z,q})l (z,q )衡量特征z \textbf{z}z和编码q \textbf{q}q的拟合程度。直觉上,本文提出的方法通过code q t \textbf{q}_t q t ​和q s \textbf{q}_s q s ​来比较特征z t \textbf{z}_t z t ​和z s \textbf{z}_s z s ​,如果两个特征捕获了相同的信息,那么它们应该能够从彼此的特征中预测code。

​ 从图像变换集合T \mathcal{T}T中采样具体的变换t t t,将其应用在图像x n \textbf{x}n x n ​上得到增强的视图x n t \textbf{x}{nt}x n t ​。在x n t \textbf{x}{nt}x n t ​上应用非线性映射f θ f\theta f θ​获取该视图的向量表示,并对向量表示投影至单位球面上,即z n t = f θ ( x n t ) / ∥ f θ ( x n t ) ∥ 2 \textbf{z}{nt}=f\theta(\textbf{x}{nt})/\parallel f\theta(\textbf{x}{nt}) \parallel_2 z n t ​=f θ​(x n t ​)/∥f θ​(x n t ​)∥2 ​。然而,通过将z n t \textbf{z}{nt}z n t ​映射至K K K个可训练的prototype { c 1 , … , c K } {\textbf{c}1,\dots,\textbf{c}_K}{c 1 ​,…,c K ​},从而获得对应的code q n t \textbf{q}{nt}q n t ​。这里使用矩阵C \textbf{C}C表示所有的prototype,其列为c 1 , … , c k \textbf{c}_1,\dots,\textbf{c}_k c 1 ​,…,c k ​。

​ 等式( 1 ) (1)(1 )中的”swapped”预测问题主要是通过从特征z s \textbf{z}s z s ​预测编码q t \textbf{q}_t q t ​和从z t \textbf{z}_t z t ​预测q s \textbf{q}_s q s ​来实现的。其中,每个项的计算如下:
l ( z t , q s ) = − ∑ k q s ( k ) log p t ( k ) , where p t ( k ) = exp ( 1 τ z t ⊤ c k ) ∑ k ′ exp ( 1 τ z t ⊤ c k ′ ) (2) l(\textbf{z}_t,\textbf{q}_s)=-\sum_k\textbf{q}_s^{(k)}\text{log}\;\textbf{p}_t^{(k)},\text{where}\quad\textbf{p}_t^{(k)}=\frac{\text{exp}(\frac{1}{\tau}\textbf{z}_t^\top\textbf{c}_k)}{\sum
{k’}\text{exp}(\frac{1}{\tau}\textbf{z}t^\top\textbf{c}{k’})} \tag{2}l (z t ​,q s ​)=−k ∑​q s (k )​log p t (k )​,where p t (k )​=∑k ′​exp (τ1 ​z t ⊤​c k ′​)exp (τ1 ​z t ⊤​c k ​)​(2 )
τ \tau τ是temperature参数。

​ 在所有图像和增强视图上采用这个损失函数将得到损失函数
− 1 N ∑ n = 1 N ∑ s , t ∼ T [ 1 τ z n t ⊤ Cq n s + 1 τ z n s ⊤ Cq n t − log ∑ k = 1 K exp ( z n t ⊤ c k τ ) − log ∑ k = 1 K exp ( z n s ⊤ c k τ ) ] (3) -\frac{1}{N}\sum_{n=1}^N\sum_{s,t\sim\mathcal{T}}\Big[\frac{1}{\tau}\textbf{z}{nt}^\top\textbf{Cq}{ns}+\frac{1}{\tau}\textbf{z}{ns}^\top\textbf{Cq}{nt}-\text{log}\sum_{k=1}^K\text{exp}(\frac{\textbf{z}{nt}^\top\textbf{c}_k}{\tau})-\text{log}\sum{k=1}^K\text{exp}(\frac{\textbf{z}{ns}^\top\textbf{c}_k}{\tau})\Big] \tag{3}−N 1 ​n =1 ∑N ​s ,t ∼T ∑​τ1 ​z n t ⊤​Cq n s ​+τ1 ​z n s ⊤​Cq n t ​−log k =1 ∑K ​exp (τz n t ⊤​c k ​​)−log k =1 ∑K ​exp (τz n s ⊤​c k ​​)
这个损失函数能够联合优化prototype C \textbf{C}C和图像编码器f θ f
\theta f θ​的参数θ \theta θ。

​ 要使本文的方法能够在线执行,需要基于单个batch内的图像特征来计算codes。SwAV \text{SwAV}SwAV会将单个batch内的样本聚类至prototypes C \textbf{C}C,这样可能会导致平凡解,即每个图像都具有相同的code。为了解决平凡解的问题,本文强制添加约束来保证单个batch内的图像属于不同的codes。

​ 给定B B B个特征向量Z = [ z 1 , … , z B ] \textbf{Z}=[\textbf{z}1,\dots,\textbf{z}_B]Z =[z 1 ​,…,z B ​],目标是将这些特征映射至prototype C = [ c 1 , … , c K ] \textbf{C}=[\textbf{c}_1,\dots,\textbf{c}_K]C =[c 1 ​,…,c K ​]上。使用Q = [ q 1 , … , q B ] \textbf{Q}=[\textbf{q}_1,\dots,\textbf{q}_B]Q =[q 1 ​,…,q B ​]来完成两者的映射,并通过优化Q \textbf{Q}Q来最大化特征向量和prototype间的相似度,即
max Q ∈ Q Tr ( Q ⊤ C ⊤ Z ) + ϵ H ( Q ) (3) \mathop{\text{max}}
{\textbf{Q}\in\mathcal{Q}}\;\text{Tr}(\textbf{Q}^\top\textbf{C}^\top\textbf{Z}^)+\epsilon H(\textbf{Q}) \tag{3}max Q ∈Q ​Tr (Q ⊤C ⊤Z )+ϵH (Q )(3 )
其中,H ( Q ) = − ∑ i j Q i j log Q i j H(\textbf{Q})=-\sum_{ij}\textbf{Q}{ij}\text{log}\textbf{Q}{ij}H (Q )=−∑i j ​Q i j ​log Q i j ​是信息熵,ϵ \epsilon ϵ是超参数。实验发现ϵ \epsilon ϵ太高会导致平凡解,即所有的样本都退化成唯一的向量表示,且会被均匀分配到所有的prototype。因此,实验中使用较低的ϵ \epsilon ϵ。Asano \text{Asano}Asano等人通过约束矩阵Q \textbf{Q}Q为transportation多面体来强制完成均等划分,但他们的方法是在整个数据集上的。本文通过约束mini-batch的样本为transportation多面体,从而实现均等划分
Q = { Q ∈ R + K × B ∣ Q1 B = 1 K 1 K , Q ⊤ 1 K = 1 B 1 B } (4) \mathcal{Q}=\Big{\textbf{Q}\in\mathbb{R}_+^{K\times B}|\textbf{Q1}_B=\frac{1}{K}\textbf{1}_K,\textbf{Q}^\top\textbf{1}_K=\frac{1}{B}\textbf{1}_B\Big} \tag{4}Q ={Q ∈R +K ×B ​∣Q1 B ​=K 1 ​1 K ​,Q ⊤1 K ​=B 1 ​1 B ​}(4 )
其中,1 K \textbf{1}_K 1 K ​表示K K K维全1向量。这个约束会强制prototype在每个batch被至少平均选择B K \frac{B}{K}K B ​次。

​ 通过公式( 3 ) (3)(3 )得到解Q ∗ \textbf{Q}^Q ∗,然后通过舍入的方式能够得到离散的code。离散的code在整个数据集上的效果很好,但是在在线(online)的场景中,离散的code要差于连续code。一个可能的原因是,code的舍入操作时一个比梯度更加激进的优化策略,导致模型收敛太快并得到次优解。因此,本文不进行舍入并保留了 Q ∗ \textbf{Q}^Q ∗。Q ∗ \textbf{Q}^Q ∗是通过公式( 3 ) (3)(3 )在集合Q \mathcal{Q}Q得到的解,其形式为标准指数化矩阵
Q ∗ = Diag ( u ) exp ( C ⊤ Z ϵ ) Diag ( v ) (5) \textbf{Q}^
=\text{Diag}(\textbf{u})\text{exp}\Big(\frac{\textbf{C}^\top\textbf{Z}}{\epsilon}\Big)\text{Diag}(\textbf{v}) \tag{5}Q ∗=Diag (u )exp (ϵC ⊤Z ​)Diag (v )(5 )
其中,u ∈ R K \textbf{u}\in\mathbb{R}^K u ∈R K和v ∈ R B \textbf{v}\in\mathbb{R}^B v ∈R B是renormalization向量。renormalization向量通过Sinkhorn-Knopp \text{Sinkhorn-Knopp}Sinkhorn-Knopp算法来计算。

​ 当batch的尺寸B B B小于prototype的数量K K K时,不可能等分batch至K K K个prototypes。因此,当 batch太小时,需要使用前一个batch的数据来增大Z \textbf{Z}Z。然后,在计算loss时仅使用当前的batch。

​ 先前的实验表示,比较一个图像的随机裁剪有助于捕获场景或者物体间各个部分的关系。但是,增加裁剪视图的数量到导致内存消耗和计算量的上升。本文提出了multi-crop \text{multi-crop}multi-crop策略,其使用两个标准分辨率的裁剪视图和V V V个低分辨率的裁剪视图。具体来说,这里将等式( 1 ) (1)(1 )的损失函数进行推广

L ( z t 1 , z t 2 , … , z t V + 2 ) = ∑ i ∈ { 1 , 2 } ∑ v = 1 V + 2 1 v ≠ i l ( z t v , q t i ) (6) L(\textbf{z}{t_1},\textbf{z}{t_2},\dots,\textbf{z}{t{V+2}})=\sum_{i\in{1,2}}\sum_{v=1}^{V+2}\textbf{1}{v\neq i}l(\textbf{z}{t_v},\textbf{q}_{t_i}) \tag{6}L (z t 1 ​​,z t 2 ​​,…,z t V +2 ​​)=i ∈{1 ,2 }∑​v =1 ∑V +2 ​1 v ​=i ​l (z t v ​​,q t i ​​)(6 )
需要注意,仅使用全分辨率的裁剪视图来计算code。multi-crop \text{multi-crop}multi-crop策略也可以用于其他几种自监督方法。

Original: https://blog.csdn.net/bqw18744018044/article/details/124027411
Author: BQW_
Title: 【计算机视觉】【聚类】SwAV:基于对比簇分配的无监督视觉特征学习

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/549684/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球