https://github.com/xiaomingzhid/sskd

GitHub - JDAI-CV/fast-reid: SOTA Re-identification Methods and Toolbox

resnet50起步

无监督行人重识别已经有很多人在研究了,目前最好的方法是 SPCL(葛艺潇:NeurIPS 2020 | 自步对比学习: 充分挖掘无监督学习样本), 在使用了 Generalized Mean Pooling (GEM) 之后,在 Market1501 数据集上达到了 rank-1 89.5% 的效果,效果很好,但是和有监督的方法,如 Resnet50 + Circle loss [1] rank-1 92.13% 或者 OSNet [2] 94.2% rank-1 相比仍然有一些差距。

SPCL 提供了一个很强的 unsupervised reid pipeline,可以启发我们去进行更深一步的探索。基于此,我们提出了无监督 Cluster Contrast ReID,在 Market1501 上跑到了 rank-1 94.6%,已经超越了很多有监督的算法。在其他行人重识别数据集如 Duke 和 MSMT17 数据集上,也比最先进无监督 re-ID 方法 mAP 提高了 7.5%,6.6%。

论文标题:

Cluster Contrast for Unsupervised Person Re-Identification

论文地址:

https://arxiv.org/abs/2103.11568

代码地址:项目中直接带预训练

https://github.com/alibaba/cluster-contrast-reid

首先来看一下整个无监督 reid 的 pipeline, 大致可以分成三个部分。第一个部分就是特征提取,在每一个 epoch 开始的时候,通过网络将训练数据集中图片的特征都提取出来。第二部分是聚类,通过传统的聚类方法如 DBScan, KNN 通过特征把图片聚成不同的类别,每个类别给一个标签,就是用来训练的伪标签。一开始的伪标签是很不准的,在训练的过程中,随着网络的精度越来越高,伪标签也会越来越接近真实标签。第三部分就是图片特征的存储和更新,在网络训练的过程中,随着网络参数的变化,图片的特征也需要进行对应的更新。

在训练的时候,我们因为有了伪标签,就能够通过类似于 softmax 的分类函数来对网络进行训练。因为伪标签在每次聚类的时候都会发生变化,所以无监督 reid 用的是 non-parametric softmax loss。我们用的是 moco 用的里面的 InfoNCE loss 来进行训练。

我们发现,图片特征的存储和更新对于网络的训练影响很大。一个最简单的直觉就是,在一个行人重识别数据集中,不同的人拥有的图片数量是不一样的,如果按照训练的图片来更新 feature 的话,拥有大量图片的人的 feature 将会滞后更新,从而有害网络优化。

所以 ClusterContrast 的核心思想就是,我们不再是从图片的层面上去更新特征和计算 loss,而是从人的维度去更新和计算 loss。无论一个人有多少张图片,对于网络训练来说,他们都是一视同仁的,都是用同一个速度去更新特征。在无监督 reid 中,每个人都被聚类成一个 cluster,所以我们的方法叫做 ClusterContrast。具体可以参加下图:

Cluster Contrast

在这张图中,相同颜色的图片是属于同一个人的。对于一个人,不管他有多少张图片,我们只会从里面选一张图片的 feature 存起来。怎么选这一张图片也是有很大的讲究的?就像 batch hard triplet loss 一样,我们发现选择和之前存起来的 feature 最不相似的 feature 效果最好,这样能够让网络去挖掘一些难样本。和之前的方法的对比可以参见下图:

我们可以看到 ClusterContrast 非常简洁,使用了最少的显存,取得了最好的效果。

结果

我们在各个数据集上,包括车辆重识别数据集上都大大超越了现有的无监督重识别方法。为了公平比较,我们在图表中并没有使用一些常见的提点方法如 Generalized Mean Pooling (GEM), reranking。用了 GEM 之后网络性能能进一步提升,能够超越很多有监督的方法:

Market1501

DukeMTMC

总结

我们提出了 Cluster Contrast 方法,核心就是在人的维度上去进行特征的提取和更新,从而将特征的更新速度与图片数量进行解耦,让算法工程师能够在 ID 的层面对模型进行调优。Custer Contrast 超越了现有的所有无监督行人重识别方法,无监督域自适应行人重识别方法和相当一部分有监督的方法。Cluster Contrast 简洁且效果好,代码已经开源,希望我们的方法能够带给广大重识别研究者一些启发,让行人重识别更好的落地在实际场景中。

最强无监督行人重识别方法 Cluster Contrast ReID相关推荐

  1. 最强无监督行人重识别方法 Cluster Contrast ReID,rank-1 94.6%

    代码连接: https://github.com/alibaba/cluster-contrast-reid 看了一下,主要是resnet50,resnet101训练的. 在行人重识别领域,如何获取海 ...

  2. 【论文阅读笔记】无监督行人重识别中的采样策略

    参考论文<Rethinking Sampling Strategies for Unsupervised Person Re-identification> 一.问题背景 无监督行人重识别 ...

  3. 【学习笔记】无监督行人重识别

    BUC <A Bottom-up Clustering Approach to Unsupervised Person Re-identification>2019 AAAI BUC是一种 ...

  4. CVPR2018——以属性为指导的无监督行人重识别

    Transferable Joint Attribute-Identity Deep Learning for Unsupervised Person Re-Identification(CVPR20 ...

  5. 中山大学提出新型行人重识别方法和史上最大最新评测基准

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 导读:行人重识别,是利用 CV 技术判断图像或视频序列中是否存在特定行人的技术.常规的行人重识 ...

  6. 中山大学提出新型行人重识别方法和史上最大评测基准

    本文转载自机器之心. 导读:行人重识别,是利用 CV 技术判断图像或视频序列中是否存在特定行人的技术.常规的行人重识别方法往往需要高昂的人工标注成本,计算复杂度也很大.在本文中,中山大学研究者提出的弱 ...

  7. 摄像机域内监督行人重识别问题

    本文是对『Intra-Camera Supervised Person Re-Identification』一文的详细解读,IJCV接收论文. 作者信息: 论文链接:https://arxiv.org ...

  8. 【Journal of Computer-Aided Design Computer Graphics】基于生成对抗网络的行人重识别方法研究综述

    文章目录 引言 数据集介绍 基于GAN的行人重识别方法分类 2.1基于风格转换的方法 2.2基于数据增强的方法 2.3基于不变性特征学习的方法 3 基于GAN的方法性能对比分析 总结 引言 对于行人检 ...

  9. 基于RK3588+TensorFlow的人工智能跨模态行人重识别方法及应用

    摘要: 跨模态行人重识别技术(cm-ReID)旨在可见光.红外等不同模态图像中识别出同一个人,其在人 机协同.万物互联.跨界融合.万物智能的智能系统与装备中有重要应用.提出一种数据增强的跨模态行人 重 ...

最新文章

  1. SrpingCloud 之SrpingCloud config分布式配置中心实时刷新
  2. 恢复误删数据(SQL Server 2000)--Log Explorer
  3. 【PTA】JAVA提交的一些注意点
  4. 谈谈你的GC调优思路?
  5. python半年能达到什么程度_花半年的时间能把Python自学到什么程度?
  6. C语言中的指针有什么作用
  7. idc机房运维巡检_智和信通赋能国产信创 建设IT智能监控运维体系 - 蔚颖willing...
  8. 网易容器云平台的微服务化实践
  9. 原版英文书籍《Linux命令行》阅读记录7 | 原版英文书籍《Linux命令行》阅读记录7 | 一些键盘按键技巧...
  10. 1003.imx6Q自启动脚本
  11. Python实战从入门到精通第二讲——类
  12. 设计一款知识性产品需要考虑十二个基本问题
  13. java服务器端socket,java 服务器端socket
  14. 运用c语言和Java写九九乘法表
  15. 事件--[Asp.Net]
  16. 已知二叉树的后序和中序遍历结果 求前序结果
  17. VS1838B 红外接收头接线及单片机编码原理
  18. 不知道图片加文字水印怎么弄?这3个方法自媒体达人必学
  19. html分页样式居中,bootstrap分页样式怎么实现?
  20. 单芯片快速以太网MAC控制器DM9000介绍续

热门文章

  1. debian apt-get 更新源文件格式说明
  2. 用 Windows API “GetAdaptersInfo” 获取 MAC 时遇到的问题
  3. 远程线程注入引出的问题
  4. 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)
  5. Linux System Programming --Chapter Four
  6. Android开发--用户定位服务--UserLocation
  7. Makefile文件和shell脚本
  8. android 获取应用内存大小,如何在Android中获取当前内存使用量?
  9. bluez 设置绑定pin码_国家工信部紧急提醒:一定要设置这个密码!
  10. c语言太极图编程语言,利用C语言的Cairo图形库绘制太极图实例教程.pdf