NeurIPS 2020 | 自步对比学习:充分挖掘无监督学习样本

文 | 葛艺潇

源 | PaperWeekly


本文介绍一篇我们发表于 NeurIPS-2020 的论文《Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID》,该工作提出自步对比学习框架及混合记忆模型,旨在解决无监督及领域自适应表征学习中数据无法被充分挖掘的问题。

这项工作在无监督的目标重识别任务上显著地超越最先进技术高达 16.7%;领域自适应的目标重识别任务中,在无监督的目标域上超越最先进技术高达 5.0%,同时可以提升有监督的源域性能高达 6.6%。

实验结果充分证明其广泛的应用场景及有效性:可被应用于解决无监督学习任务,也可被应用于利用额外无监督数据提升有监督学习的任务。代码和模型均已公开,方法也被收录于 OpenUnReID 代码库。

论文链接:
https://arxiv.org/abs/2006.02713

代码链接:
https://github.com/yxgeee/SpCL
https://github.com/open-mmlab/OpenUnReID

项目主页:
https://geyixiao.com/projects/spcl.html

视频介绍:
https://www.zhihu.com/zvideo/1302759986926096384

背景简介

近年来,在无监督学习的浪潮下,无监督及领域自适应的目标重识别任务也逐渐受到大家的关注,在刚刚过去的 ECCV2020 中这个方向所发表的论文就有十余篇。

目标重识别(Object Re-ID),包括行人重识别、车辆重识别等,旨在跨摄像机检索和追踪目标人物或车辆。重识别任务的关键之一是学习具有辨识性的特征,并在多样的条件变化下保持鲁棒性。

在如今深度学习盛行的时代,大规模数据集推动了目标重识别任务的快速发展,然而,领域差异及标注数据的高消耗等都成为了部署重识别算法中无法忽视的问题。

领域自适应的目标重识别(Domain Adaptive Object Re-ID) 旨在通过源域有标注的数据和目标域无标注的数据进行训练,从而在目标域上取得较好的性能。这里区分一下一般分类任务上的领域自适应,分类任务上的两个领域的类别往往有部分或者全部的重叠,而重识别任务上的两个领域,我们一般认为类别完全没有重复。

这是由于领域自适应的重识别任务一般应用在:将城市A训练的重识别模型应用于城市B、将虚拟合成数据训练的重识别模型应用于真实世界的场景等。在这些场景中,两个领域间的类别一般很难存在重复。

无监督的目标重识别(Unsupervised Object Re-ID) 与上述领域自适应重识别非常相似,问题设置上的唯一区别在于没有有标签的源域数据。这里着重区分一下目前很受关注的无监督预训练(Unsupervised Pre-training)任务,存在两点主要区别:

1)无监督预训练任务从网络随机初始化开始,无监督重识别任务从预训练好的网络开始;2)无监督预训练的网络需要经过fine-tune才可以应用在下游任务上,而无监督重识别任务本身可以看作一个无监督的下游任务,经过训练的网络可直接部署。

领域自适应重识别任务的研究历史较无监督重识别任务而言较长一些,但本质上这两项任务是非常相似的。正如上文所述,领域自适应重识别任务相较于无监督重识别任务而言,只是在问题设置上多出了有标签的源域数据。
所以,大部分的算法也都可以通用,因为很多领域自适应重识别算法只需要去除源域预训练的步骤,即可应用于无监督重识别任务上。该论文所介绍的方法在这两项任务上也都取得了很不错的结果。

下面,将先以领域自适应重识别任务为例介绍方法,再讲解如何应用于无监督重识别任务。

问题与动机

解决领域自适应重识别任务的算法可以分为两类,伪标签类和域转换类,目前伪标签类可以获得更好的性能,而伪标签类中的基于聚类的伪标签法较为有效,所以本文所基于的 baseline 是基于聚类的伪标签算法

目前大部分基于聚类的伪标签算法(如 SSG、MMT 等)在训练上分为两步:第一步,在源域上利用有标签的源域数据进行有监督的预训练;第二步,在预训练的模型基础上,利用目标域无标签的数据及其聚类产生的伪标签进行 fine-tune。

这样的算法流程目前已经可以获得相对令人满意的结果,但他们仍然存在两点缺陷

1)在第二步的目标域训练中忽略了源域数据(仅用于预训练),但我们认为源域的数据由于具有真实准确的标签,所以应当被充分利用;

2)在基于聚类的伪标签法中,往往没有用到全部的目标域无标签数据,因为基于密度的聚类(如 DBSCAN 等)本身会产生聚类离群值(outlier),这些聚类离群值由于无法分配伪标签,所以被丢弃,不用于训练。但我们认为,这样的聚类离群值往往正是那些值得挖掘的困难训练样本。尤其在训练的早期,往往存在大量的聚类离群值,若简单丢弃它们,训练样本将大幅减少。

所以如何合理地挖掘所有可用的信息是提升性能的关键。如上图所示,我们提出在训练中使用全部的源域数据和目标域数据,并利用一个混合记忆模型(Hybrid Memory)来提供监督:对于源域数据而言,监督是他们真实的标签;

对于目标域聚类内的数据而言,监督是他们的聚类标签;对于目标域的聚类离群值而言,他们每张图本身被看作一个单独的类,所以监督是实例级的标签。我们将所有的源域类、目标域聚类、目标域每个聚类离群值实例看成平等的类别

自步对比学习框架

以下是我们所提出自步对比学习(Self-paced Contrastive Learning)框架,包括一个图像特征编码器(Encoder)和一个混合记忆模型(Hybrid Memory)。

核心是混合记忆模型在动态变化的类别下所提供的连续有效的监督,以统一对比损失函数(Unified Contrastive Loss)的形式监督网络更新,实现起来非常容易,且即插即用。下文将具体介绍。

统一对比损失函数

类别原型(Class Prototype) 可以理解为该类别中较为有标志的特征,例如无偏分类器中的权重(Weights)。

在这里,我们使用源域真实类别的类质心(Class Centroids) 作为源域数据的类别原型 {w},使用目标域聚类的质心(Cluster Centroids) 作为聚类内的目标域数据的类别原型 {c},使用目标域聚类离群值的实例特征(Outlier Instance Features) 作为无聚类的目标域数据的类别原型 {v}。

我们所提出的混合记忆模型可以实时提供这三种类别原型以作训练监督,后文将具体介绍这三种类别原型的更新过程。

对于每一组输入的 mini-batch,同时包含源域数据和目标域数据(我们在编码器中使用 Domain-specific BNs 来消除不同领域数据间的域差异),他们需要与上述三种类别原型进行比较。所以我们提出统一对比损失函数(Unified Contrastive Learning)

该损失函数可以使得每个训练样本靠近它所属于的类别(包含源域真实类、目标域聚类、目标域无聚类实例),而远离其他类别。

举例来说,对于一个来自源域的样本,其对应的正面原型(Positive Prototype) 则是它真实类别所对应的质心(Class Centroids);对于一个来自目标域的样本,若其在聚类内,则正面原型为其所对应的聚类质心(Cluster Centroids),反之,若其不在聚类内,为聚类离群值,则正面原型为该离群值所对应的实例特征(Outlier Instance Features)。

其实,我们所设计的“混合记忆模型(Hybrid Memory)+统一对比损失函数(Unified Contrastive Loss)”与大家常用的“分类器(Classifier)+交叉熵损失函数(Cross-entropy Loss)”在工作机理上非常相似,可以简单的认为混合记忆模型是非参数化(Non-parametric)的分类器

那么,为什么我们不用普通分类器来完成这一任务呢?这是由于目标域的聚类及聚类离群值在训练过程中动态变化(一般每个 epoch 前更新),无法使用固定的聚类 ID 及离群值实例 ID 训练分类器。如若在每次更新完 ID 后需要重置分类器,分类器由于无法连续更新,会导致性能较差。

有同学会问,以前的算法(如MMT),每个 epoch 重置分类器依然训练效果很好,这是为什么?这是因为这些算法不使用聚类离群值进行训练。

试想,将每个聚类离群值也看做单独的类加入分类器,而每个 epoch 只能遍历到该类对应的样本一次(因为一个离群值是一个类),那么,在类样本数如此不平均的情况下,分类器几乎得不到有效的训练,便会被重置。

我们所提出的统一对比损失函数与自监督任务(如 MoCo、SimCLR 等)中常用的对比损失函数最主要的区别在于,我们同时考虑了三种不同的类别原型,而以前的对比损失函数只考虑实例级的类别原型

他们将所有样本看作独立的类,进行实例区分(Instance Discrimination)训练,这样的算法很大程度上忽略了类内(Intra-class)关系,也就是同一 ID 的不同图像间的联系,故以前的对比损失函数不适用于重识别任务。

混合记忆模型

上文中,我们提到混合记忆模型(Hybrid Memory)实时提供三种不同的类别原型,那么,这三种类别原型是如何动态地在混合记忆模型中连续更新变化的呢?

我们提出使用动量更新(Momentum Update),想必这个词对大家来说并不陌生,在 MoCo、Mean-teacher 等模型中常有见到,简单来说,就是以“参数=(1-动量)x新参数+动量x参数”的形式更新。在这里,我们针对源域和目标域采取不同的动量更新算法,以适应其不同的特性。

对于源域的数据而言,由于具有真实的类别,我们提出以类为单位进行存储。这样的操作一方面节省空间,一方面在实验中也取得了较好的结果。我们将当前 mini-batch 内的源域特征根据类别算均值,然后以动量的方式累计到混合记忆模型中对应的类质心上去,详见下图。


对于目标域的数据而言,我们提出全部以实例为单位进行特征存储,这是为了让目标域样本即使在聚类和非聚类离群值不断变化的情况下,仍然能够在混合记忆模型中持续更新(Continuously Update)。具体而言,我们将当前 mini-batch 内的目标域特征根据实例的index累计到混合记忆模型对应的实例特征上去。

那么,如何获得目标域的聚类质心及离群值实例特征呢?我们在混合记忆模型中,将同一聚类 ID 的特征做平均,即可获得聚类质心;而离群值的实例特征则直接从混合记忆模型中提取剩下的实例特征即可,如下图。

由简入难的自步学习

我们发现,由于聚类和聚类离群值都被看作平等且独立的类,所以聚类的可靠性对训练的影响至关重要。由于网络在训练的一开始对于图像的辨别性较差,聚类的噪声也较大。

所以我们借鉴自步学习(Self-paced Learning) 的思想,先从最可靠的聚类开始,再逐步增加聚类,由简入难。我们提出了一个聚类可靠性评价标准(Cluster Reliability Criterion),保留可靠的聚类,而将不可靠的聚类拆解回无聚类的离群值实例。

我们所提出的聚类可靠性评价标准分为聚类独立性(Cluster Independence)和聚类紧凑型(Cluster Compactness)。

聚类独立性(Cluster Independence) 体现为一个可靠的聚类应当具有良好的类间距离,通俗点来说,不能和附近的聚类“如胶似漆”。我们提出,放宽聚类的标准,例如 DBSCAN 中的最小类内距离,此时,如果该聚类与周围的聚类融合成了一个大聚类、或者吸收了附近的离群值,那么我们认为,该聚类的独立性不太好。


我们使用一个IoU(Interp over Union)公式来计算聚类的独立性。

聚类紧凑型(Cluster Compactness) 体现为一个可靠的聚类内的样本应该相互靠近,具有良好的类内距离。类似的,我们提出,缩紧聚类的标准,此时,如果该聚类被拆解成了多个小聚类、或者拆出了一些聚类离群值,那么我们认为,该聚类的紧凑型不太好。

我们使用另一个 IoU 公式来计算聚类的紧凑型,如上图所示。
直观地说,该聚类可靠性评价标准的出发点在于,一个可靠的聚类应当在多尺度的聚类环境下保持稳定。从下图训练的统计中可以看出,使用了聚类可靠性评价标准的模型(红色线)相比较于未使用的模型(蓝色线),无论是在聚类的数量还是质量上,都离真实类别更近。

算法流程

以上,我们介绍了核心的模块,我们梳理一下具体训练流程:

初始化(Initialization): 图像编码器(Encoder)的初始化一般使用 ImageNet Pre-trained Weights,混合记忆模型(Hybrid Memory)的初始化使用初始的编码器对所有的样本进行一次前向计算。

聚类和聚类离群值: 在每个 epoch 前进行聚类,并根据聚类可靠性评价标准(Cluster Reliability Criterion)进行聚类的筛选,仅保留可靠的聚类,其余样本均视作聚类离群值。

网络和混合记忆模型的更新: 在每个 iteration 中,首先利用编码器对 mini-batch 的样本进行特征编码,然后利用统一对比损失函数(Unified Contrastive Loss)进行网络的反向传播更新,最后利用编码的特征以动量更新(Momentum Update)的方式更新混合记忆模型(Hybrid Memory)。

无监督重识别上的应用

在一开始曾提到,该方法也可以被有效利用在无监督重识别任务上,只需要将混合记忆模型和统一对比损失函数中有关源域的部分去掉即可。

无监督重识别任务上的自步对比学习框架如下:


对应的统一对比损失函数如下:

实验

由于自步对比学习框架中可以同时训练源域和目标域的数据,所以训练是 one-stage 的,无需单独的源域预训练步骤。实验中,我们针对多个真实及虚拟合成数据集进行了实验,在行人重识别和车辆重识别任务上都测试了该方法的有效性。

领域自适应任务中,我们在无监督的目标域上均超越先前算法,在 PersonX->MSMT17 的任务上领先高达 5.0% 的 mAP,这是由于在“虚拟合成->真实”的迁移任务中,由于聚类噪声较大,产生的聚类离群值较多,所以我们所提出的充分挖掘所有样本的方案所带来的优势将更为突出。

除此之外,一项有趣的发现,VehicleID->VeRi-776 与 VehicleX->VeRi-776 在目标域上获得几乎相似的性能,这说明,在未来,随着领域自适应算法的不断升级,可能我们再也不需要人为标注的源域数据来作为辅助了,可以使用虚拟合成的数据予以代替。

以前的算法由于在目标域的训练中忽视了源域数据,所以会无法避免地忘记源域的信息,而我们提出的方法对源域和目标域数据进行了联合训练,在目标域性能提升的同时,也提升了有监督的源域性能。

可以看到,在 MSMT17-Market-1501 的迁移训练中,我们利用 Market-1501 的无标签数据大幅提升了 MSMT17 上的有监督训练性能(+6.6% mAP)。这意味着,我们所提出的算法可以被用于利用无标签数据提升有监督训练的任务。

同样,在无监督重识别任务上,我们大幅领先已有的算法,在 Market-1501 的 benchmark 上领先高达 16.7% 的 mAP。我们也将 MoCo 在无监督重识别任务上进行了复现,正如我们之前所介绍了,这类无监督预训练任务的算法并不适用于无监督的重识别任务,因为他们将所有的样本视作独立的类,忽视了重识别任务中最重要的类内类间关系。

再强调一下,MoCo 这类算法适用于无监督预训练任务,在应用于下游任务上时需要 fine-tune,而无监督重识别任务本身是一个下游任务

有细心的同学可能会发现,刚刚展示的结果中没有涉及 DukeMTMC-reID 数据集的实验,这是因为 DukeMTMC-reID 已经官方下架,在 AC 的要求下,我们需要在论文的最终版本中删去所有有关 DukeMTMC-reID 的实验结果。

但是 DukeMTMC-reID 是行人重识别相关任务中常用的数据集,所以为了方便大家未来进行算法的调试和比较,我在这里也简单展示一下 DukeMTMC-reID 相关的结果,更多的结果大家可以在我们 arXiv 的第一个版本arxiv.org/abs/2006.0271)中找到。

总结

该文提出了一个简单有效的自步对比学习框架,核心思想是利用多种不同形式的类别原型提供混合监督,以实现对所有训练数据的充分挖掘。虽然本文只在目标重识别任务上进行了实验,但是提出的混合记忆模型及统一对比损失函数是即插即用的,有很大潜力在其他任务上取得较好的结果,欢迎大家尝试。

这次 NeurIPS 的评审过程相当刺激,从初审的 7663 到终审的 5553,reviewers 的降分起源对 DukeMTMC-reID 数据集的讨论,最终这份工作也经历了 NeurIPS 今年特有的 Ethics Review,起起落落,最终被 AC 捞起,感恩。可见,目前学术界对于数据集的隐私保护规范要求也越来越严格。

推荐大家在以后领域自适应重识别工作中考虑采用合成数据集,如 PersonX、VehicleX 等,不仅可以避免不必要的麻烦,并且由于合成数据和真实数据的域差异较大,算法上可以提 shua 升 fen 的空间也会较大。

分类任务及分割任务上的领域自适应往往采用合成数据作为源域,且这次 VisDA-2020 的比赛中,源域采用的也是合成数据集 PersonX,可见合成数据到真实数据的自适应任务备受关注。

我近期将会给一个 talk,总结我这一年半以来在在领域自适应及无监督重识别方向上所做的研究,届时欢迎大家关注。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

有顶会审稿人、大厂研究员、知乎大V和妹纸

等你来撩哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Postman安装与使用

原文链接:https://blog.csdn.net/fxbin123/article/details/80428216 一、Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。…

LeetCode 35. 搜索插入位置(二分查找)

文章目录1. 题目信息2. 解题2.1 暴力遍历2.2 二分查找1. 题目信息 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1:输入…

青年人在美团是怎样成长的?

2020年五四青年节,我们采访了美团技术团队9位青年代表,他们是来自清华大学、北京大学、中国科学院大学等国内高校的2位博士研究生和7位硕士研究生。在这个属于青年人的特别的日子里,我们请他们分享了自己在美团成长的故事。 道阻且长&#xf…

它来了它来了!2020深度学习硬核技术干货集锦!

这份干货来自于今天要给大家推荐的一个深度学习与计算机视觉领域知名公众号:「极市平台」。从2016年创立至今,极市平台深耕于DL与CV领域,输出300篇高质量原创文章,并积累了近10万名海内外专业算法开发者。极市平台公众号坚持每日更…

容器的使用和创建虚拟环境 vitualenv

xshell jupter容器的使用方法 #容器相当于子服务器 1 创建指定python版本的虚拟环境 方法1: 1.安装虚拟环境的第三方包 venv pip install venv 2.创建虚拟环境 cd 到存放虚拟环境的地址 在当前目录下创建名为env的虚拟环境: python -m venv env python…

Android中动态的更改selector中某张图片的属性

在我们平常开发的时候会有许多状态按钮,比如state_pressed,android:state_checked,或者就正常状态等等,我们做这样的效果通常需要三个文件,一张是按下的图片,一张是正常状态的图片,一张是管理它…

LeetCode 17. 电话号码的字母组合(回溯)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例:输入:"23" 输出:[&…

细数一行代码改变结局的炼丹骚操作

文 | 陀飞轮&圈圈&年年的铲屎官源 | 知乎tips总结知乎答主:陀飞轮谈一下自己知道的。尽量避开优化器、激活函数、数据增强等改进。。先上完整列表:Deep Learning: Cyclic LR、FloodingImage classification: ResNet、GN、Label Smoothing、Shuff…

推荐收藏 | 美团技术团队的书单

4月23日对于世界文学而言是一个具有象征性意义的日子。1616年的这一天,塞万提斯、莎士比亚、印卡加西拉索德拉维加几位大师相继与世长辞。此外,这一天也是其他一些著名作家的出生和去世的日期,例如:莫里斯德吕翁、哈尔多尔K拉克斯…

论文浅尝 | 采用多层注意力机制的事件检测

笔记整理:杨帆,浙江大学计算机学院硕士,研究方向知识图谱。动机事件编码(event encoding)之前的工作集中在提取实体,检测触发单词以及匹配预定义的模板,这些方法存在以下缺点:首先它…

无需人工!无需训练!构建知识图谱 BERT一下就行了!

文:Sherry今天给大家带来的是一篇号称可以自动建立知识图谱的文章《Language Models are Open Knowledge Graphs》,文中提出了一个叫Match and Map(MAMA)的模型,无需人工!无需训练!只需语料和预…

LeetCode 557. 反转字符串中的单词 III(栈)

文章目录1. 题目信息2. 解题2.1 栈2.2 STL reverse()1. 题目信息 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1:输入: "Lets take LeetCode contest" 输出: "steL ekat edoCteeL tse…

美团OCTO万亿级数据中心计算引擎技术解析

美团点评自研的 OCTO 数据中心(简称 Watt)日均处理万亿级数据量,该系统具备较好的扩展能力及实时性,千台实例集群周运维成本低于10分钟。本文将详细阐述 Watt 计算引擎的演进历程及架构设计,同时详细介绍其全面提升计算…

中文实体命名识别工具使用汇总:Stanza、LAC、Ltp、Hanlp、foolnltk、NLTK、BosonNLP

实体命名识别相关知识Stanford CoreNLP 命名实体识别一、简介:二、java版本使用三、python版本使用NLTK 命名实体识别一、简介:二、搭建环境三、nltk使用1、英文实体命名初体验2、使用nltk来处理中文资料结巴分词使用foolnltk 命名实体识别一、简介二、p…

论文浅尝 | 基于知识图谱中图卷积神经网络的推荐系统

笔记整理:王若旭,浙江大学在读硕士,研究方向为关系抽取,零样本学习。本文发表于 www2019,参考链接:https://arxiv.org/pdf/1905.04413.pdf为了解决推荐系统中协同过滤方法面对的数据稀疏和冷启动的问题&…

NeurIPS 2020 | Glance and Focus: 通用、高效的神经网络自适应推理框架

文 | rainforest wang源 | 知乎本文主要介绍我们被NeurIPS 2020会议录用的一篇文章:Glance and Focus: a Dynamic Approach to Reducing Spatial Redundancy in Image Classification代码和预训练模型已经在Github上面放出:https://link.zhihu.com/?tar…

如何下载Android源码(非常详细,含自动恢复下载,编译,运行模拟器说明)

今天终于把代码下载完成,特此开一篇博文记录一下。上图: 为了下载这些源码,历时5天5夜,说为什么这么长时间,是因为太容易中断了,有时候下一晚上可能就一直没在下,在你入睡的时候它就自己断了&am…

NumPy快速入门-- Less 基础/线性代数

文章目录1. 广播(Broadcasting)规则2. 使用索引数组索引3. 使用布尔值作为数组索引4. ix_()函数5. 线性代数 简单数组操作6. 技巧和提示6.1 “自动”整形6.2 矢量堆叠1. 广播(Broadcasting)规则 Broadcasting允许通用函数以有意义…

Intel PAUSE指令变化影响到MySQL的性能,该如何解决?

MySQL得益于其开源属性、成熟的商业运作、良好的社区运营以及功能的不断迭代与完善,已经成为互联网关系型数据库的标配。可以说,X86服务器、Linux作为基础设施,跟MySQL一起构建了互联网数据存储服务的基石,三者相辅相成。本文将分…

会议 | CCKS 2019 全国知识图谱与语义计算大会在杭州隆重召开

本文转载自公众号:中国中文信息学会。2019 年全国知识图谱与语义计算大会(CCKS 2019)于 8 月 24 日至 27 日在杭州召开,由中国中文信息学会语言与知识计算专业委员会主办,浙江大学承办。本次会议主题是“知识智能”。大会吸引了来自海内外的八…