MoCov1: 无监督视觉表征学习的动量对比《Momentum Contrast for Unsupervised Visual Representation Learning》(MoCo、动量对比、动态字典、队列维护、对比损失InfoNCE)

现在是2024年6月11日,21:49,刚找好要看的论文,师兄推荐的.

先占个坑,明天看,我累了(我没脑子了).

现在是6月12日,15:49,干正事了(又被别人影响了情绪,这不好,希望你改掉,好的,不要被小导的消息影响,不听他的,I'm fine.)。

论文:Momentum Contrast for Unsupervised Visual Representation Learning

GitHub:https://github.com/facebookresearch/moco

CVPR 2020的论文。

膜拜大佬的成果。

 

摘要

我们提出了用于无监督视觉表征学习的动量对比(MoCo)。从对比学习[29]作为字典查找的角度出发,我们用队列和移动平均编码器建立了一个动态字典。这样就能快速构建一个大型而连续的字典,从而促进对比式无监督学习。在 ImageNet 分类的常见线性协议下,MoCo 提供了具有竞争力的结果。更重要的是,MoCo 学习到的表征可以很好地迁移到下游任务中。在 PASCAL VOC、COCO 和其他数据集上的 7 项检测/分类任务中,MoCo 的表现优于其监督预训练的对应方,有时甚至远远超过它。这表明,在许多视觉任务中,无监督表征学习和有监督表征学习之间的差距已基本缩小。

1. 引言

在自然语言处理领域,无监督表示学习非常成功,例如 GPT [50, 51] 和 BERT [12]。但在计算机视觉领域,有监督的预训练仍占主导地位,而无监督方法则普遍落后。原因可能在于它们各自信号空间的不同。语言任务有离散的信号空间(单词、子单词单元等),可用于建立标记化词典,在此基础上进行无监督学习。相比之下,计算机视觉则更多地涉及字典构建[54, 9, 5],因为原始信号处于连续的高维空间中,并不像人类交流那样结构化(例如,与单词不同)。

最近的几项研究[61, 46, 36, 66, 35, 56, 2]利用与对比损失相关的方法[29],在无监督视觉表征学习方面取得了可喜的成果。尽管动机各不相同,但这些方法都可以被视为在构建动态字典。字典中的 "keys"(tokens)是从数据(如图像或patches)中采样的,并由编码器网络表示。无监督学习可训练编码器执行字典查询:编码的 "query "应与其匹配的key相似,而与其他键不相似。学习被表述为最小化对比损失[29]。

(Sorry,今天无心学习,一直在摸鱼,哈哈哈哈,最近有点不稳,得稳住,现在20:51,继续看.)

从这一角度出发,我们假设建立的字典最好是:(i) 大型字典;(ii) 在训练过程中不断演变的一致性字典。直观地说,较大的字典可以更好地采样底层连续的高维视觉空间而字典中的键应由相同或相似的编码器表示,这样它们与查询的对比才会一致。然而,现有的使用对比损失的方法在这两个方面中的一个方面可能会受到限制(稍后在上下文中讨论)。

我们提出的 Momentum Contrast(MoCo)是一种利用对比损失为无监督学习建立大型一致词典的方法(图 1)。我们将字典作为数据样本队列来维护:当前小批量数据的编码表示将被排队,最旧的数据将被取消。队列将字典的大小与迷你批次的大小分离开来,因此字典可以很大。此外,由于字典密钥来自之前的几个迷你批次,为了保持一致性,我们提出了一个缓慢推进的密钥编码器,作为查询编码器的一个基于动量的移动平均值来实现。

 

 图 1 Momentum Contrast (MoCo) 利用对比损失将编码查询 q 与编码键字典进行匹配,从而训练视觉表示编码器。字典键 {k 0 , k 1 , k 2 , ...}由一组数据样本即时定义。字典以队列的形式建立,当前的迷你批次入库,最老的迷你批次出库,与迷你批次大小脱钩。键值由一个缓慢推进的编码器编码,由查询编码器的动量更新驱动。这种方法可以为学习可视化表征提供大量一致的字典。

 

MoCo 是一种为对比学习建立动态词典的机制,可用于各种借口任务。在本文中,我们采用了一个简单的实例辨别任务 [61, 63, 2]:如果查询与关键字匹配,则它们是同一图像的编码视图(例如不同的作物)。利用这一借口任务,MoCo 在 ImageNet 数据集[11]的常用线性分类协议下显示出了具有竞争力的结果。

无监督学习的一个主要目的是预训练表征(即特征),通过微调将其转移到下游任务中。我们的研究表明,在 7 个与检测或分割相关的下游任务中,MoCo 的无监督预训练效果都超过了 ImageNet 的有监督预训练效果,在某些情况下甚至达到了非同一般的效果。在这些实验中,我们探索了在 ImageNet 或十亿张 Instagram 图像集上进行预训练的 MoCo,证明了 MoCo 可以在更真实、十亿张图像规模和相对未经整理的场景中良好地工作。这些结果表明,MoCo 在很大程度上缩小了许多计算机视觉任务中无监督表示学习与有监督表示学习之间的差距,在一些应用中可以替代 ImageNet 监督预训练。

2. 相关工作

无监督/自我监督(自我监督学习是无监督学习的一种形式。在现有文献中,它们之间的区别是非正式的。在本文中,我们使用更经典的术语 "无监督学习",即 "不受人类标注的监督"。)学习方法一般涉及两个方面:借口任务和损失函数。所谓 "借口",是指被解决的任务并非真正感兴趣的任务,而只是为了学习良好的数据表示这一真正目的。损失函数通常可以独立于借口任务进行研究。MoCo 着重于损失函数方面的研究。接下来,我们将讨论与这两方面相关的研究。

损失函数。定义损失函数的常见方法是测量模型预测与固定目标之间的差异,例如通过 L1 或 L2 损失重建输入像素(如自动编码器),或通过交叉熵或基于边际的损失(此处有话要说,基于边际的损失,可以做点什么东西出来)将输入分类为预定义类别(如八个位置 [13]、颜色箱 [64])。接下来介绍的其他方法也是可行的。

对比损失法[29] 可测量表示空间中样本对的相似性。在对比损失公式中,目标可以在训练过程中实时变化,也可以根据网络计算的数据表示来定义[29],而不是将输入与固定目标相匹配。对比学习是最近几项无监督学习研究的核心[61, 46, 36, 66, 35, 56, 2],我们将在后面的上下文(第 3.1 节)中详细阐述。

对抗损失 [24] 衡量概率分布之间的差异。这是一种在无监督数据生成方面非常成功的技术。用于表征学习的对抗方法在 [15, 16] 中进行了探讨。生成式对抗网络与噪声对比估计(NCE)[28]之间存在关联(见[24])。

借口任务。人们提出了各种各样的借口任务。例如,去噪自动编码器[58]、上下文自动编码器[48]或跨信道自动编码器(着色)[64, 65]。有些借口任务通过对单张("示例")图像进行变换 [17]、补丁排序 [13,45]、跟踪 [59] 或分割视频中的物体 [47] 或聚类特征 [3,4] 等方式形成伪标签(有想过做这个,后续有时间合适的话就搞这个试试)

对比学习与借口任务。各种借口任务都可以基于某种形式的对比损失函数。实例辨别法 [61] 与基于示例的任务 [17] 和 NCE [28] 有关。对比预测编码(CPC)[46] 中的前置任务是上下文自动编码[48] 的一种形式,而对比多视图编码(CMC)[56] 中的前置任务则与着色[64] 有关。

(现在是21:39,先到此为主吧,方法论这部分还没看完,看完再贴翻译.(看原文,再转成中文翻译,真的好麻烦,现在都是好几段好几段一起翻译了贴博客.)

(6月13日,14:25,已经看上论文了.)

3. 方法

3.1. 对比学习作为字典查询

对比学习 [29] 及其最新发展,可视为训练编码器完成字典查询任务,如下所述。

考虑一个编码查询 q 和一组编码样本 {k 0 , k 1 , k 2 , ...},它们是字典的键。假设字典中有一个键(用 k + 表示)与 q 匹配。对比损失[29]是一个函数,当 q 与其正键 k + 相似,而与所有其他键(视为 q 的负键)不相似时,其值为低。通过点积来衡量相似度,本文考虑了一种对比损失函数形式,称为 InfoNCE [46]:

其中,τ 是温度超参数[61]。总和是一个正样本和 K 个负样本的总和。直观地说,这种损失是基于 (K+1)-way softmax 分类器的对数损失,该分类器试图将 q 分类为 k + 。对比损失函数也可以基于其他形式 [29, 59, 61, 36],如基于边际的损失和 NCE 损失的变体。

对比损失函数是一种无监督目标函数,用于训练表示查询和密钥的编码器网络 [29]。一般来说,查询表示为 q = f q (x q ),其中 f q 是编码器网络,x q 是查询样本(同样,k = f k (x k ))。它们的实例化取决于具体的借口任务。输入 x q 和 x k 可以是图像 [29, 61, 63]、斑块 [46] 或由一组斑块组成的上下文 [46]。网络 f q 和 f k 可以完全相同 [29, 59, 63]、部分共享 [46, 36, 2] 或不同 [56]。

(6月17日,10:12,继续.)

3.2. 动量对比

从上述角度来看,对比学习是在高维连续输入(如图像)上建立离散字典的一种方法。字典是动态的,因为密钥是随机抽样的,而且密钥编码器在训练过程中会不断变化。我们的假设是,可以通过涵盖丰富负样本集的大型字典来学习良好的特征,同时,尽管字典键的编码器在不断变化,但仍要尽可能保持一致。基于这一动机,我们提出了下文所述的动量对比法。

作为队列的字典。我们方法的核心是将字典作为数据样本队列来维护。这样,我们就能重复使用前一个迷你批次的编码键。队列的引入使字典大小与迷你批大小脱钩。我们的字典大小可以比典型的迷你批大小大得多,而且可以作为超参数灵活、独立地设置。

词典中的样本会被逐步替换。当前的迷你批次将被录入字典,队列中最老的迷你批次将被删除。字典总是代表所有数据的采样子集,而维护该字典的额外计算量是可控的。此外,删除最老的小批量数据也有好处,因为它的编码键是最过时的,因此与最新的编码键最不一致。(看到这里,让我想起来了那个信息论,信息瓶颈,嗯,还是要串一下最近看的内容。)

动态更新。使用队列会使字典变得庞大,但同时也会使通过反向传播更新密钥编码器变得困难(梯度应传播到队列中的所有样本)。一种天真的解决方案是从查询编码器 f q 中复制密钥编码器 f k,忽略这一梯度。但在实验中,这种解决方案的结果并不理想(第 4.1 节)。我们假设这种失败是由于快速变化的编码器降低了密钥表示的一致性造成的。我们提出了一种动量更新来解决这个问题。

形式上,将 f k 的参数表示为 θ k,将 f q 的参数表示为 θ q,我们通过以下方式更新 θ k:

这里 m∈[0, 1) 是动量系数。只有参数 θ q 是通过反向传播更新的。式(2)中的动量更新使 θ k 比 θ q 演变得更平滑。因此,虽然队列中的密钥是由不同的编码器(在不同的小批量中)编码的,但这些编码器之间的差异可以变得很小。在实验中,相对较大的动量(如 m = 0.999,我们的默认值)比较小的值(如 m = 0.9)效果要好得多,这表明缓慢演化的密钥编码器是使用队列的核心。

与先前机制的关系。MoCo 是一种使用对比损失的通用机制。我们在图 2 中将它与现有的两种通用机制进行了比较。它们在字典大小和一致性方面表现出不同的特性。

 图 2. 三种对比损失机制的概念比较(经验比较见图 3 和表 3)。在此,我们以一对查询和密钥为例进行说明。三种机制在密钥的维护方式和密钥编码器的更新方式上有所不同。(a): 计算查询和密钥表示的编码器通过反向传播进行端到端更新(两个编码器可以不同)。(b):密钥表示是从内存库中采样的[61]。(c): MoCo 通过动量更新编码器对新密钥进行实时编码,并维护一个密钥队列(图中未说明)。

通过反向传播进行端到端更新是一种自然机制(如 [29, 46, 36, 63, 2, 35], 图 2a)。它使用当前迷你批次中的样本作为字典,因此键的编码是一致的(通过同一组编码器参数)。但字典大小与迷你批次大小相关,受 GPU 内存大小的限制。这也是大型迷你批次优化所面临的挑战[25]。最近的一些方法 [46, 36, 2] 基于由局部位置驱动的前置任务,字典大小可以通过多个位置变大。但这些借口任务可能需要特殊的网络设计,如对输入进行修补[46]或定制感受野大小[2],这可能会使这些网络向下游任务的转移变得复杂。

另一种机制是 [61] 提出的记忆库方法(图 2b)。记忆库由数据集中所有样本的表征组成。每个迷你批次的字典都是从内存库中随机抽取的,没有反向传播,因此可以支持较大的字典规模。但是,样本在内存库中的表示是在最后一次看到它时更新的,因此采样键基本上是关于编码器在过去历时中多个不同步骤的情况,因此一致性较差。文献[61]对记忆库采用了动量更新。其动量更新是针对同一样本的表示,而不是编码器。这种动量更新与我们的方法无关,因为 MoCo 不会跟踪每个样本。此外,我们的方法更节省内存,可以在十亿规模的数据上进行训练,而这对于内存库来说是难以实现的。

第 4 节对这三种机制进行了实证比较。

3.3. 借口任务

对比学习可以驱动各种借口任务。由于本文的重点不在于设计新的借口任务,我们主要沿用[61]中的实例辨别任务,使用一个简单的借口任务,最近的一些工作[63, 2]也与此相关。

根据文献 [61],如果查询和密钥来源于同一幅图像,我们将它们视为一对正样本,反之则视为一对负样本。继 [63, 2] 之后,我们将同一图像的两个随机 "视图 "在随机数据增强的情况下组成一对正样本。查询和密钥分别由其编码器 f q 和 f k 编码。编码器可以是任何卷积神经网络 [39]。

算法 1 提供了 MoCo 用于此借口任务的伪代码。对于当前的迷你批次,我们对查询及其对应的密钥进行编码,这就形成了正样本对。负样本来自队列。

技术细节。我们采用 ResNet [33] 作为编码器,其最后一层全连接层(全局平均池化后)有一个固定维度的输出(128-D [61])。该输出向量按其 L2-norm[61]进行归一化。这就是查询或密钥的表示。公式(1)中的温度 τ 设为 0.07 [61]。数据增强设置遵循 [61]:从随机调整大小的图像中裁剪出 224×224 像素,然后进行随机颜色抖动、随机水平翻转和随机灰度转换,所有这些都可以在 PyTorch 的 torchvision 软件包中找到。

洗牌 BN。与标准 ResNet [33] 一样,我们的编码器 f q 和 f k 都采用了批量归一化 (BN) [37]。在实验中,我们发现使用 BN 会阻止模型学习良好的表征,这与 [35] 中的报告类似(该报告避免使用 BN)。该模型似乎 "欺骗 "了借口任务,很容易找到低损耗的解决方案。这可能是因为样本间的批内通信(由 BN 引起)泄露了信息。

我们通过洗牌 BN 解决了这一问题。我们使用多个 GPU 进行训练,并对每个 GPU 的样本独立执行 BN(这是常见做法)。对于密钥编码器 f k,我们在将当前迷你批次中的样本顺序在 GPU 之间分配之前进行洗码(编码后再洗回);而查询编码器 f q 的迷你批次样本顺序不会改变。这确保了用于计算查询及其正密钥的批次统计数据来自两个不同的子集。这就有效地解决了作弊问题,并让训练从 BN 中受益。

我们在我们的方法及其端到端消融对应方法中都使用了洗牌 BN(图 2a)。这与记忆库对应方法(图 2b)无关,因为记忆库对应方法不存在这个问题,因为正密钥来自过去的不同迷你批次。

4. 实验

我们研究了在以下环境中进行的无监督训练:

ImageNet-1M (IN-1M): 这是一个 ImageNet [11]训练集,包含 1000 个类别中的 128 万张图像(通常称为 ImageNet-1K;我们计算的是图像数量,因为无监督学习并不利用类别)。该数据集的类别分布非常均衡,其图像通常包含物体的标志性视图。

Instagram-1B(IG-1B): 继 [44] 之后,该数据集包含来自 Instagram 的 10 亿(9.4 亿)张公开图片。这些图片来自与 ImageNet 类别相关的 1500 个标签[44]。与 IN-1M 数据集相比,该数据集相对未经整理,并且具有长尾、不平衡的真实世界数据分布。该数据集包含标志性物体和场景级图像。

训练。我们使用 SGD 作为优化器。SGD 权重衰减为 0.0001,SGD 动量为 0.9。对于 IN-1M,我们在 8 个 GPU 中使用 256(算法 1 中为 N)的迷你批次大小,初始学习率为 0.03。我们训练了 200 个历元,在 120 和 160 个历元时学习率乘以 0.1 [61],ResNet-50 的训练时间为 53 小时。对于 IG-1B,我们在 64 个 GPU 中使用了 1024 个小批量,学习率为 0.12,每 62.5k 次迭代(64M 幅图像)后指数衰减 0.9 倍。我们对 ResNet-50 进行了 125 万次迭代训练(IG-1B 的迭代次数为 1.4 次),耗时 6 天。

4.1. 线性分类协议

我们首先按照通用协议,通过对冻结特征进行线性分类来验证我们的方法。在本小节中,我们在 IN-1M 上进行无监督预训练。然后,我们冻结特征并训练一个有监督的线性分类器(全连接层,然后是 softmax)。我们在 ResNet 的全局平均池化特征上对该分类器进行了 100 次训练。我们报告了 ImageNet 验证集上的 1-crop、top-1 分类准确率。

对于这种分类器,我们进行了网格搜索,发现最佳初始学习率为 30,权重衰减为 0(类似报告见 [56])。这些超参数在本小节介绍的所有消融条目中表现一致良好。这些超参数值意味着特征分布(如幅度)可能与 ImageNet 监督训练的特征分布有很大不同,我们将在第 4.2 节中再次讨论这个问题。

消融:对比损失机制。我们对图 2 中所示的三种机制进行了比较。为了重点关注对比损失机制的效果,我们在第 3.3 节所述的相同借口任务中实施了所有这些机制。我们还使用了相同形式的 InfoNCE 作为对比损失函数,即公式(1)。因此,比较只针对三种机制。

结果见图 3。总的来说,三种机制都能从更大的 K 值中获益。[61, 56]在记忆库机制中也观察到了类似的趋势,而在这里我们表明这种趋势更为普遍,在所有机制中都能看到。这些结果支持了我们建立大型词典的动机

 图 3. ImageNet 线性分类协议下三种对比损失机制的比较。我们采用相同的借口任务(第 3.3 节),只改变对比损失机制(图 2)。在内存库和 MoCo 中,底片数量为 K,在端到端中为 K-1(由于正片密钥在同一迷你批次中,因此抵消了 )。网络为 ResNet-50。

当 K 较小时,端到端机制的性能与 MoCo 类似。但是,由于端到端要求,字典大小受到迷你批大小的限制。在这里,高端机器(8 个 Volta 32GB GPU)所能承受的最大迷你批次为 1024。更本质的问题是,大型迷你批次训练是一个未解决的问题[25]:我们发现有必要在这里使用线性学习率缩放规则[25],否则准确率会下降(1024 个迷你批次的准确率会下降 ∼ 2%)。但使用更大的迷你批次进行优化比较困难[25],而且即使内存足够,能否将趋势推断到更大的 K 也是个问题。

内存库 [61] 机制可以支持更大的字典规模。但它比 MoCo 差 2.6%。这与我们的假设是一致的:记忆库中的密钥来自过去所有不同的编码器,它们并不一致。请注意,记忆库中 58.0% 的结果反映了我们对 [61] 的改进实现。

消融:动力。下表显示了预训练中使用不同 MoCo 动量值(式(2)中的 m)时 ResNet-50 的准确率(此处 K = 4096):

当 m 在 0.99 ∼ 0.9999 之间时,它的表现相当不错,这表明缓慢前进(即相对较大的动量)的密钥编码器是有益的。当 m 太小(如 0.9)时,准确率会大幅下降;在无动量的极端情况下(m 为 0),训练损失会出现振荡,无法收敛。这些结果支持了我们建立一致词典的动机。

与以往结果的比较。以往的无监督学习方法在模型大小上会有很大差异。为了进行公平、全面的比较,我们报告了准确率与 #parameters的权衡。除了 ResNet-50(R50)[33],我们还报告了其 2 倍和 4 倍宽(更多通道)的变体。我们设置 K = 65536,m = 0.999。表 1 是比较结果。

 

表 1. ImageNet 上线性分类协议下的比较。图为表格的直观图。所有报告都是在 ImageNet-1M 训练集上进行无监督预训练,然后在冻结特征上进行监督线性分类训练,并在验证集上进行评估。参数数是特征提取器的参数数。如果有改进的重新实现(在数字后注明),我们将与之进行比较。符号: R101 ∗ /R170 ∗ 是去掉最后一个残差阶段的 ResNet-101/170 [14、46、35],R170 则更宽 [35];Rv50 是可逆网 [23],RX50 是 ResNeXt-50-32×8d [62]。
† :预训练使用 FastAutoAugment [40],由 ImageNet 标签监督。

使用 R50 的 MoCo 的表现很有竞争力,达到了 60.6% 的准确率,优于所有类似模型大小(∼ 24M)的竞争对手。MoCo 受益于更大的模型,使用 R50w4× 时达到了 68.6% 的准确率。

值得注意的是,我们使用标准的 ResNet-50 就能获得具有竞争力的结果,而且不需要特定的架构设计,例如修补输入[46, 35]、精心定制的感受野[2]或结合两个网络[56]。通过使用不为借口任务定制的架构,可以更容易地将特征转移到各种视觉任务中并进行比较,下一小节将对此进行研究。

本文的重点是一般对比学习的机制;我们并不探讨可能进一步提高准确性的正交因素(如特定的借口任务)。举例来说,"MoCo v2"[8]是本手稿初步版本的扩展,在对数据增强和输出投影头[7]稍作改动后,R50 的准确率达到了 71.1%(高于 60.6%)。我们相信,这一额外结果显示了 MoCo 框架的通用性和稳健性。

4.2. 传递特征

无监督学习的一个主要目标是学习可传递的特征。ImageNet 监督预训练在作为下游任务微调的初始化时影响最大(例如,[21, 20, 43, 52])。接下来,我们将对 MoCo 与 ImageNet 监督预训练进行比较,并将其应用到 PASCAL VOC [18]、COCO [42] 等不同任务中。作为前提条件,我们将讨论其中涉及的两个重要问题 [31]:规范化和时间表。

规范化。如第 4.1 节所述,与 ImageNet 有监督预训练相比,无监督预训练产生的特征可能具有不同的分布。但是,用于下游任务的系统通常会为监督预训练选择超参数(如学习率)。为了解决这个问题,我们在微调过程中采用了特征归一化方法:我们使用经过训练(并在 GPU 上同步运行 [49])的 BN 进行微调,而不是通过仿射层进行冻结 [33]。我们还在新的初始化层(如 FPN [41])中使用 BN,这有助于校准幅度。

在微调有监督和无监督预训练模型时,我们会进行归一化处理。MoCo 使用与 ImageNet 有监督模型相同的超参数。

时间表。如果微调时间表足够长,那么从随机初始化开始训练的检测器可以成为强大的基线,并可与 COCO [31] 上的 ImageNet 有监督对应模型相媲美。我们的目标是研究特征的可转移性,因此我们的实验是在受控的时间表上进行的,例如 COCO 的 1× ( ∼ 12 个历时)或 2× 时间表[22],而 [31] 的时间表是 6× ∼ 9×。在像 VOC 这样的较小数据集上,更长的训练时间可能赶不上 [31]。

不过,在我们的微调中,MoCo 采用了与 ImageNet 有监督对应数据集相同的时间表,并提供了随机初始化结果作为参考。

总之,我们的微调使用了与有监督预训练相同的设置。这可能会使 MoCo 处于劣势。即便如此,MoCo 仍然具有竞争力。这样做还可以在多个数据集/任务上进行比较,而无需额外的超参数搜索。

4.2.1 PASCAL VOC 物体检测

设置。检测器采用 Faster R-CNN [52],骨干为 R50-dilated-C5 或 R50-C4 [32](详情见附录),BN 经过调整,在 [60] 中实现。我们对所有层进行端到端微调。训练时的图像比例为 [480, 800] 像素,推理时为 800 像素。所有条目都采用了相同的设置,包括监督预训练基线。我们评估了默认的 VOC 指标 AP 50(即 IoU 临界值为 50%)以及更严格的 COCO-style AP 和 AP 75 指标。评估基于 2007 年 VOC 测试集。

消融:骨干网。表 2 显示了在 trainval07+12 (∼ 16.5k 图像)上微调的结果。对于 R50-dilatedC5(表 2a),在 IN-1M 上进行预训练的 MoCo 与监督预训练的 MoCo 相当,而在 IG-1B 上进行预训练的 MoCo 则超过了监督预训练的 MoCo。对于 R50-C4(表 2b),使用 IN-1M 或 IG-1B 的 MoCo 优于有监督的同行:分别达到 +0.9 AP 50、+3.7 AP 和 +4.9 AP 75。

 表 2. 在 PASCAL VOC trainval07+12 上对物体检测进行微调。评估基于 test2007: AP 50(默认 VOC 指标)、AP(COCO-style)和 AP 75,5 次试验的平均值。所有数据均经过 24k 次迭代(∼ 23 个历时)的微调。括号内是与 ImageNet 监督预训练对应的差距。绿色为至少 +0.5 点的差距。

有趣的是,转移精度取决于检测器结构。对于现有基于 ResNet 的结果 [14, 61, 26, 66] 默认使用的 C4 主干网,无监督预训练的优势更大。预训练与检测器结构之间的关系在过去一直被遮遮掩掩,这应该是一个需要考虑的因素

消融:对比损失机制。我们指出,这些结果的部分原因是我们为对比学习建立了坚实的检测基线。为了确定在对比学习中使用 MoCo 机制所带来的收益,我们使用与 MoCo 相同的微调设置,对使用端到端机制或记忆库机制预训练的模型(即图 3 中的最佳模型)进行了微调。

这些竞争者的表现尚可(表 3)。它们使用 C4 主干网的 AP 和 AP 75 也高于 ImageNet 有监督的同行,参见表 2b。表 2b,但其他指标较低。它们在所有指标上都比 MoCo 差。这说明了 MoCo 的优势。此外,如何在更大规模的数据中训练这些竞争对手还是一个未决问题,它们可能无法从 IG-1B 中获益。

表 3. 三种对比损失机制在 PASCAL VOC 物体检测上的比较,在 trainval07+12 上进行了微调,并在 test2007 上进行了评估(5 次试验的平均值)。所有模型均由我们实现(图 3),在 IN-1M 上进行了预训练,并使用与表 2 相同的设置进行了微调。

与之前结果的比较。在竞争对手之后,我们使用 C4 骨干对 trainval2007(∼ 5k 幅图像)进行了微调。比较结果见表 4。

 表 4. 与之前在 PASCAL VOC trainval2007 上进行微调的物体检测方法的比较。评估基于 test2007。ImageNet 有监督对应方法来自相关论文,其结构与相应的无监督预训练对应方法相同。所有条目都基于 C4 主干网。[14] 中的模型是 R101 v2 [34],其他的是 R50。RelPos(相对位置)[13] 结果是多任务论文[14] 中最好的单任务案例。Jigsaw [45] 结果来自 [26] 中基于 ResNet 的实现。我们的结果是 9k 次迭代微调,5 次试验的平均值。括号内为与 ImageNet 监督预训练对应结果的差距。绿色为至少 +0.5 点的差距。

就 AP 50 指标而言,之前的任何方法都无法赶上相应的监督预训练方法。在 IN-1M、IN-14M(完整 ImageNet)、YFCC-100M [55] 和 IG-1B 中的任何一种上进行预训练的 MoCo 都能超越监督基线。在更严格的指标上,MoM 的收益也很大:分别高达 +5.2 AP 和 +9.0 AP 75。这些收益大于 trainval07+12 中的收益(表 2b)。

4.2.2 COCO 物体检测与分割

设置。模型为 Mask R-CNN [32],FPN [41] 或 C4 主干网,BN 经过调整,在 [60] 中实现。图像比例在训练时为 [640, 800] 像素,在推理时为 800。我们对所有层进行端到端微调。我们在 train2017 集(∼ 118k 幅图像)上进行微调,并在 val2017 上进行评估。时间安排为 [22] 中默认的 1× 或 2×。

结果。表 5 显示了在 COCO 上使用 FPN(表 5a、b)和 C4(表 5c、d)骨干的结果。在 1× 时间表下,所有模型(包括 ImageNet 有监督对应模型)的训练都严重不足,与 2× 时间表情况下的差距为 2 分。在 2× 时间表下,MoCo 在两个骨干网中的所有指标都优于其 ImageNet 监督对应模型。

表 5. COCO 上的物体检测和实例分割微调:在 val2017 上评估的边界框 AP (AP bb) 和掩码 AP (AP mk)。括号内为与 ImageNet 监督预训练对应的差距。绿色为至少 +0.5 点的差距。

4.2.3 更多下游任务

表 6 显示了更多下游任务(实施细节见附录)。总体而言,MoCo 的表现与 ImageNet 的监督预训练不相上下:

表 6. 经过微调的 MoCo 与 ImageNet 监督预训练在不同任务上的对比。对于每项任务,所有条目都使用了相同的架构和时间表(见附录)。括号内为与 ImageNet 有监督预训练对应项的差距。绿色为至少 +0.5 分的差距。
† : 此条目使用了冻结的 BN,结果有所改善;参见正文。

COCO 关键点检测:与随机初始化相比,监督预训练没有明显优势,而 MoCo 在所有指标上都优于随机初始化。

COCO 密集姿态估计 [1]: 在这项对定位高度敏感的任务中,MoCo 的表现大大优于监督预训练,例如在 AP dp 75 中提高了 3.7 个点。

LVIS v0.5 实例分割[27]:这项任务有 1000 个长尾分布式类别。具体来说,在 LVIS 的 ImageNet 监督基线中,我们发现使用冻结 BN(24.4 AP mk)进行微调比使用可调 BN 效果更好(详情见附录)。因此,我们将 MoCo 与该任务中更好的监督预训练变体进行了比较。使用 IG-1B 的 MoCo 在所有指标上都超过了它。

城市景观实例分割 [10]: 在 AP mk 中,使用 IG-1B 的 MoCo 与监督预训练的对应程序不相上下,而在 AP mk 50 中则更胜一筹。

语义分割: 在城市景观[10]中,MoCo 的表现比其监督预训练的对应模式高出 0.9 个百分点。但在 VOC 语义分割上,MoCo 至少比其差 0.8 个点,这是我们观察到的一个负面案例。

总结。总之,在 7 项检测或分割任务中,MoCo 的表现都优于其 ImageNet 有监督的预训练对手。5 此外,MoCo 在城市景观实例分割方面表现相当,而在 VOC 语义分割方面则落后;我们在附录中展示了 iNaturalist [57] 的另一个可比案例。总的来说,在多个视觉任务中,MoCo 在很大程度上缩小了无监督表征学习与有监督表征学习之间的差距。

值得注意的是,在所有这些任务中,在 IG-1B 上预先训练的 MoCo 始终优于在 IN-1M 上预先训练的 MoCo。这表明,MoCo 可以在这个大规模、相对未经整理的数据集上表现出色。这代表了现实世界中无监督学习的一个场景。

5. 讨论与结论

我们的方法在各种计算机视觉任务和数据集中显示了无监督学习的积极效果。有几个悬而未决的问题值得讨论。从 IN-1M 到 IG-1B,MoCo 的改进一直很明显,但幅度相对较小,这表明大规模数据可能没有得到充分利用。我们希望先进的借口任务能改善这一情况。除了简单的实例辨别任务[61],MoCo 还可以用于掩码自动编码等借口任务,例如语言[12]和视觉[46]。我们希望 MoCo 能在其他涉及对比学习的前置任务中发挥作用。

(现在是16:21,看完了,但是看的有点迷.)

 

呜呜呜,加油菜狗.

 

posted @ 2024-06-11 21:50  ZERO-  阅读(110)  评论(0编辑  收藏  举报