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

这项工作在无监督的目标重识别任务上显著地超越最先进技术高达16.7%;领域自适应的目标重识别任务中,在无监督的目标域上超越最先进技术高达5.0%,同时可以提升有监督的源域性能高达6.6%。实验结果充分证明其广泛的应用场景及有效性:可被应用于解决无监督学习任务,也可被应用于利用额外无监督数据提升有监督学习的任务。

另外,葛艺潇的Talk “无监督及领域自适应的目标重识别” 将会在11月5日(周四)晚8点在TechBeat准时开播,感兴趣的同学可以复制下方链接预约!https://www.techbeat.net/talk-info?id=456

公众号:将门创投 (thejiangmen)作者:香港中文大学多媒体实验室三年级博士生 葛艺潇

论文链接:https://arxiv.org/abs/2006.02713代码链接: https://github.com/yxgeee/SpCLhttps://github.com/open-mmlab/OpenUnReID项目主页:https://geyixiao.com/projects/spcl.html视频介绍:https://www.bilibili.com/video/av970104264?zw

长文预警!建议收藏!

一口气看完的朋友真的瑞斯拜

目录
一、背景简介
二、问题与动机
三、自步对比学习框架
四、统一对比损失函数
五、混合记忆模型
六、由简入难的自步学习
七、算法流程
八、无监督重识别上的应用
九、实验
十、总结

一、背景简介

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

目标重识别 (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 (Intersection 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的第一个版本中找到。(https://arxiv.org/abs/2006.02713v1)

十、总结

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

如需转载请注明来源:将门创投

//

作者介绍:

葛艺潇,香港中文大学多媒体实验室三年级博士生,师从李鸿升教授与王晓刚教授。此前于2017年从华中科技大学自动化学院获得学士学位。目前主要研究方向为计算机视觉中的表征学习,包括无监督学习、解耦学习、领域自适应学习等,及其在图像检索、图像生成上的应用。曾以第一作者身份在NeurIPS、ICLR、ECCV等会议中发表多篇论文。

更多信息请访问个人主页:

Yixiao Ge's Homepage

-The End-

@将门创投· 让创新获得认可

如果喜欢,别忘了赞同、关注、分享三连哦!笔芯❤

weka分类器怎么设置样本类别_NeurIPS 2020 | 港中文MMLab自步对比学习: 充分挖掘无监督学习样本...相关推荐

  1. weka分类器怎么设置样本类别_NeurIPS 2020 | 自步对比学习: 充分挖掘无监督学习样本...

    本文介绍一篇我们发表于NeurIPS-2020的论文<Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive ...

  2. weka分类器怎么设置样本类别_自步对比学习: 充分挖掘无监督学习样本

    本文为香港中文大学MMLab实验室博士生葛艺潇投稿. 本文介绍一篇我们发表于NeurIPS-2020的论文<Self-paced Contrastive Learning with Hybrid ...

  3. 自步对比学习: 充分挖掘无监督学习样本

    本文为香港中文大学MMLab实验室博士生葛艺潇投稿. 本文介绍一篇我们发表于NeurIPS-2020的论文<Self-paced Contrastive Learning with Hybrid ...

  4. NeurIPS 2020 :ReID任务大幅领先,港中文开源自步对比学习框架,充分挖掘无监督学习样本...

    作者丨葛艺潇 来源丨https://zhuanlan.zhihu.com/p/269112325 编辑丨极市平台 导语:本文介绍一篇作者发表于NeurIPS-2020的论文: <Self-pac ...

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

    ©作者|葛艺潇 学校|香港中文大学博士生 研究方向|图像检索.图像生成等 本文介绍一篇我们发表于 NeurIPS-2020 的论文<Self-paced Contrastive Learning ...

  6. weka分类器怎么设置样本类别_NeurIPS 2019 少样本学习研究亮点全解析

    少样本学习(Few-Shot Learning)是近两年来非常有研究潜力的一个子方向,由于深度学习在各学科交叉研究与商业场景都有比较普遍的应用,然而训练出高精度模型的情况大部分来源于充足的训练数据,这 ...

  7. weka分类器怎么设置样本类别_【程序喵笔记】小样本学习1.0

    小样本学习 前几天接触小样本学习 Few-Shot Learning,感觉很是有意思.看到Shusen Wang老师的讲解,感觉很棒~持续学习~ 学会学习 Lean to learn 小朋友去动物园, ...

  8. weka分类器怎么设置类别_AI 迁移学习怎么玩?手把手教你实战迁移学习

    本文将说明如何使用迁移学习来解决图像分类问题,相关代码示例将使用 Python + Keras 进行实现. 深度学习在最近几年发展迅速,并且已经在人工只能领域占据了极其重要的一席之地(LeCun,20 ...

  9. CVPR 2020 | 港中文提出3D目标检测新框架DSGN

    ©PaperWeekly 原创 · 作者|张承灏 学校|中科院自动化所硕士生 研究方向|双目深度估计 本文介绍的是香港中文大学贾佳亚团队在 CVPR 2020 上提出的 3D 目标检测新框架--深度立 ...

最新文章

  1. MyEclipse的Java Web项目配置环境搭建-如何安装tomact
  2. 如何去掉系统快捷方式的箭头(转载)
  3. HTML5中使用SpeechSynthesisAPI实现语音合成
  4. linux 代码统计工具,Shell脚本实现的基于SVN的代码提交量统计工具
  5. Linux内核源码行数,Linux源代码已超过1000万行 价值达5亿美金
  6. 国内第一本项目管理的实践书籍——《IT项目管理那些事儿》
  7. 让一个视图对触摸事件作出响应, 需要实现的方法
  8. access数据库指定日期查询
  9. 阿里云云计算 39在线实验--PolarDB MySQL
  10. C++中打印可变参数函数输出到控制台
  11. otsu算法详细推导、实现及Multi Level OTSU算法实现
  12. 喜讯!云效度量能力获信通院先进级评估
  13. 转:一个基于互联网医疗的创业公司,三年是一个收获
  14. mysql 添加表字段并添加数据,MySQL为表的所有字段添加数据
  15. iphonex 测试电池软件,iPhoneX电池容量多大 iPhoneX电池性能评测【详解】
  16. 九联UNT403G/UNT413G_国科GK6323芯片_5621ds无线wifi_免拆卡刷固件
  17. 一阶shelf IIR数字滤波器的设计和实现
  18. WebServer项目介绍
  19. 百度的凤巢广告系统多了些什么?
  20. slf4j输入日志到mongodb

热门文章

  1. 京东云主机挂载云硬盘、分区、格式化
  2. 微型计算机2018年12月,2018年度金奖TOP 10:出类拔萃的产品都在这!
  3. java POI Excel插入图片
  4. Redis 12 持久化
  5. 初学larval 第二篇(大神绕道哦,针对新手友好的一篇)
  6. 什么是股票情绪量化指标?
  7. [十大排序]有的人图画着画着就疯了(1.5w字详细分析+动图+源码)
  8. 思科-实验10:路由器接口 PPP 协议封装和 PAP、CHAP 验证配置
  9. 计算机端口号65536,65536端口能不能用
  10. ORA-02287:此处不允许序号