CVPR2020行人重识别算法论文解读
CVPR2020行人重识别算法论文解读
Cross-modalityPersonre-identificationwithShared-SpecificFeatureTransfer
具有特定共享特征变换的跨模态行人重识别
摘要:
跨模态行人重识别对智能视频分析是一个难点,而又关键的技术。过去的研究主要集中在,将嵌入式不同模态放到同一个特征空间中,来训练常用的表现形式。但是,仅仅训练这些常用的特性,意味着会丢失大量的信息,降低特征显著性的上限。
本文中,通过推荐一个新的特定跨模态特征转换算法(称为cm-SSFT),探测模态共享信息和特定模态特性来克服这个限制,提升重识别的性能。依据不同模态特征示例内容,在不同模态之间转换共享和特定特征。推荐辅助特征研究策略,包括模态适应性,目标对抗训练,重构增强性能,分别学习每种形态的区别性和互补性的共同特征和具体特征。整个cm-SSFT算法能用端到端方式训练。用综合实验验证真个算法的优势,以及各个环节的效果。这个算法在两个主流数据集上将mAP分别提高22.5% 和 19.3%。
关注的任务是红外线-RGB跨模态行人重识别。主要想解决的问题是:以往大部分跨模态行人重识别算法一般都只关注shared feature learning,而很少关注Specific feature。因为Specific feature在对面模态中是不存在的。例如在红外线图片中是没有彩色颜色信息的。反之在彩图中也不会有热度信息。而实际上做过ReID的都知道,传统ReID之所以性能很高,很大程度上就是有些“过拟合”到了这些specific信息上。比如衣服颜色一直是传统ReID的一个重要的cue。于是从这个角度出发,想试图利用specific特征。主要思路是利用近邻信息。思路(motivation)是这样:给定一红外线query。当搜索彩色target时,可以先找到一些简单的置信度高的彩色样本(这些样本大概率是红外线query的positive样本),把这些彩色样本的颜色特异特征给与红外线query。做了这件事后,红外线query样本可以利用这些彩色信息再去搜索更难的彩色样本。这样做与传统做法的对比如下:

图1:motivation和与传统基于特征学习的方法的对比
基于这个思路,参考了以往使用GCN做传统ReID的一些方法。提出了自己的算法。本文会大致介绍一下该算法的流程。也会从介绍一些bad case和问题。欢迎各位讨论。整体pipeline如下:

1. shared and specific feature learning:
这里就是follow了以往的做法。现在主流工作都会有shared支路和specific支路去提取两种特征。在两个支路上进行训练,会使得backbone的整体判别力(discriminative)很强。具体细节可以参考。这里也同样follow了这个做法,使用two-stream网络学习shared和specific特征。

2. Shared and Specific Transfer Network
这里的思路主要是借鉴自SGGCN和Spectral Feature Transfer。这两篇工作使用GCN去做跨样本特征融合,本质上是平滑了特征,挖掘了样本间的联系。而这种做法恰好与要做的事情很吻合。前面的思路,即利用近邻关系将specific特征在样本间进行传递,本质也是个message passing的过程,所以在这里也利用这种思维。pipeline如下:

首先将每个样本的特征表示成三段式的形式:【RGB-sp,
sh, IR-sp】。

即认为每一个样本都有RGB特异特征,shared特征和红外线特异特征三段。只是对于RGB样本,其红外线特异部分是0。同样对于红外线样本,RGB特异部分是零。这种表示会便利于矩阵运算。整体特征矩阵写为:

之后使用特征计算出样本间的相似度矩阵A。而后利用矩阵A进行跨样本特征融合,会同时propagate三种特征,利用GCN公式进行特征传播:

这块的细节可以去参考原文,整体的思路就是利用近邻关系进行信息传递。会补全每个样本缺失的对面模态的specific
feature,而且GCN的平滑特性也会使得shared feature鲁棒性有所提高。最后三段式feature会被fusion进行训练。
3. Complementary Learning
这一段其实是当初投NIPS时被argue后加入的点。即有review认为specific和shared feature很容易学成一个feature,即实际上差不多。specific并不是真正的specific。所以这里利用了很多方式去给特征做解纠缠,这块思路恰好与CVPR另一篇做本任务的算法类似。大家可以去阅读那一篇。这里也示例下sh与sp特征是什么样子,进行了可视化:

Bad case讨论:实验细节可以见原文。本文最大的bad case其实是,这种做法在testing的时候需要multi-query。因为训练的时候其实每个batch内RGB和红外线图片有多张,但在测试时理论上query模态的图片只有一张(query自己),这会引起模态不平衡。所以初始Test时也包含了其他的query图片(当然是不会包含label的),但是这个做法实际上一定程度上违背了ReID的限制,即理论上不应该看见其他的query图片(所以定义除了当前query图片外的其他query图片为辅助集)。在原文中同样利用实验证明了辅助集对性能的影响:

可见即便单query也是有提高的。这里单query提高的原因思考为。即便query模态图片只有一张。但是gallery模态的图片有多张,gallery模态特异信息同样是有利用价值的。所以会带来提高。而在实际应用中,辅助集其实容易获得。库存中很容易会留存以往被检索过的query图片,所以并不会阻碍实际的应用潜力。这个问题也是未来会尝试解决的事情。
CVPR2020行人重识别算法论文解读的更多相关文章
- 行人重识别(ReID) ——基于深度学习的行人重识别研究综述
转自:https://zhuanlan.zhihu.com/p/31921944 前言:行人重识别(Person Re-identification)也称行人再识别,本文简称为ReID,是利用计算机视 ...
- 行人重识别(ReID) ——数据集描述 Market-1501
数据集简介 Market-1501 数据集在清华大学校园中采集,夏天拍摄,在 2015 年构建并公开.它包括由6个摄像头(其中5个高清摄像头和1个低清摄像头)拍摄到的 1501 个行人.32668 个 ...
- 行人重识别(ReID) ——概述
什么是Re-ID? 行人重识别(Person re-identification,简称Re-ID)也称行人再识别,是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术.广泛被认为是一个图像 ...
- 行人重识别(ReID) ——数据集描述 CUHK03
数据集简介 CUHK03是第一个足以进行深度学习的大规模行人重识别数据集,该数据集的图像采集于香港中文大学(CUHK)校园.数据以"cuhk-03.mat"的 MAT 文件格式存储 ...
- 行人重识别(ReID) ——数据集描述 DukeMTMC-reID
数据集简介 DukeMTMC 数据集是一个大规模标记的多目标多摄像机行人跟踪数据集.它提供了一个由 8 个同步摄像机记录的新型大型高清视频数据集,具有 7,000 多个单摄像机轨迹和超过 2,700 ...
- 行人重识别(ReID) ——技术实现及应用场景
导读 跨镜追踪(Person Re-Identification,简称 ReID)技术是现在计算机视觉研究的热门方向,主要解决跨摄像头跨场景下行人的识别与检索.该技术能够根据行人的穿着.体态.发型等信 ...
- 端到端文本识别CRNN论文解读
CRNN 论文: An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Applica ...
- 行人重识别和车辆重识别(ReID)中的评测指标——mAP和Rank-k
1.mAP mAP的全称是mean Average Precision,意为平均精度均值(如果按照原来的顺利翻译就是平均均值精度).这个指标是多目标检测和多标签图像分类中长常用的评测指标,因为这类任务 ...
- 行人重识别(ReID) ——基于Person_reID_baseline_pytorch修改业务流程
下载Person_reID_baseline_pytorch地址:https://github.com/layumi/Person_reID_baseline_pytorch/tree/master/ ...
随机推荐
- hdu4771 水搜索(状态压缩+bfs)
题意: 给你一个n*m的地图,问你从起点出发,吧所有的宝藏都捡完用的最少时间. 思路:k <= 4,水题,直接开一个数组mark[now][x][y];now代表的是当前检宝藏的二进制 ...
- Windows核心编程 第九章 线程与内核对象的同步(下)
9.4 等待定时器内核对象 等待定时器是在某个时间或按规定的间隔时间发出自己的信号通知的内核对象.它们通常用来在某个时间执行某个操作. 若要创建等待定时器,只需要调用C r e a t e Wa i ...
- Intel汇编语言程序设计学习-第六章 条件处理-中
6.3 条件跳转 6.3.1 条件结构 在IA-32指令集中没有高级的逻辑结构,但无论多么复杂的结构,都可以使用比较和跳转指令组合来实现.执行条件语句包括两个步骤:首先,使用CMP,AND,SUB ...
- nodejs-安装/helloworld/npm
安装---------------------------------------------------------------- http://nodejs.cn/download/ 完成之后确定 ...
- Spring Cloud Alibaba(7)---docker-compose搭建nacos1.4.0集群
docker-compose搭建nacos1.4.0集群 有关Nacos之前写过四篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba ...
- Linux系统调用表
Linux系统调用表 记录下来,免得到处找 32位 int 0x80 %eax Name Source %ebx %ecx %edx %esx %edi 1 sys_exit kernel/exit. ...
- Yii2访问gii模块403
出现问题 访问Yii2的gii模块没有权限,403 找到原因 在Yii2-gii源码文件中(vendor/yiisoft/yii2-gii/src/Module.php)可以看到有一个配置项$allo ...
- python模块一之faker模块
faker模块主要是用来创建伪数据,无需手动生成或者手写随机数来生成数据,可以利用faker完成伪造大量测试数据的工作 一.安装 pip install faker 二.使用 from faker i ...
- CCNA 第二章 以太网回顾
1:半双工和全双工 (1):半双工:类似于单车道: (2):全双工:类似是双向多车道: 2:思科三层模型 (1): (2):核心层.集散层(汇聚层).接入层各功能: 1:核心层:大量数据快速交换:不要 ...
- Unittest框架之测试套件:TestSuite
前言 使用了unittest.main()方法执行当前模块里的测试用例. 除此之外,Unittest还可以通过测试套件构造测试用例集,再执行测试用例 将测试用例添加至TestSuite(测试套件) 方 ...