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行人重识别算法论文解读的更多相关文章

  1. 行人重识别(ReID) ——基于深度学习的行人重识别研究综述

    转自:https://zhuanlan.zhihu.com/p/31921944 前言:行人重识别(Person Re-identification)也称行人再识别,本文简称为ReID,是利用计算机视 ...

  2. 行人重识别(ReID) ——数据集描述 Market-1501

    数据集简介 Market-1501 数据集在清华大学校园中采集,夏天拍摄,在 2015 年构建并公开.它包括由6个摄像头(其中5个高清摄像头和1个低清摄像头)拍摄到的 1501 个行人.32668 个 ...

  3. 行人重识别(ReID) ——概述

    什么是Re-ID? 行人重识别(Person re-identification,简称Re-ID)也称行人再识别,是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术.广泛被认为是一个图像 ...

  4. 行人重识别(ReID) ——数据集描述 CUHK03

    数据集简介 CUHK03是第一个足以进行深度学习的大规模行人重识别数据集,该数据集的图像采集于香港中文大学(CUHK)校园.数据以"cuhk-03.mat"的 MAT 文件格式存储 ...

  5. 行人重识别(ReID) ——数据集描述 DukeMTMC-reID

    数据集简介 DukeMTMC 数据集是一个大规模标记的多目标多摄像机行人跟踪数据集.它提供了一个由 8 个同步摄像机记录的新型大型高清视频数据集,具有 7,000 多个单摄像机轨迹和超过 2,700 ...

  6. 行人重识别(ReID) ——技术实现及应用场景

    导读 跨镜追踪(Person Re-Identification,简称 ReID)技术是现在计算机视觉研究的热门方向,主要解决跨摄像头跨场景下行人的识别与检索.该技术能够根据行人的穿着.体态.发型等信 ...

  7. 端到端文本识别CRNN论文解读

    CRNN 论文: An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Applica ...

  8. 行人重识别和车辆重识别(ReID)中的评测指标——mAP和Rank-k

    1.mAP mAP的全称是mean Average Precision,意为平均精度均值(如果按照原来的顺利翻译就是平均均值精度).这个指标是多目标检测和多标签图像分类中长常用的评测指标,因为这类任务 ...

  9. 行人重识别(ReID) ——基于Person_reID_baseline_pytorch修改业务流程

    下载Person_reID_baseline_pytorch地址:https://github.com/layumi/Person_reID_baseline_pytorch/tree/master/ ...

随机推荐

  1. 【日志】MySQL中有多少种日志

    redo 重做日志 作用:确保事务的持久性,防止在发生故障,脏页未写入磁盘.重启数据库会进行redo log执行重做,到达事务一致性 undo 回滚日志 作用:保证数据的原子性,记录事务发生之前的数据 ...

  2. 编译Android 4.4.4 r1的源码刷Nexus 5手机详细教程

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/54562606 网上关于编译Android源码的教程已经很多了,但是讲怎么编译And ...

  3. Andrew Ng机器学习算法入门((六):多变量线性回归方程求解

    多变量线性回归 之前讨论的都是单变量的情况.例如房价与房屋面积之前的关系,但是实际上,房价除了房屋面积之外,还要房间数,楼层等因素相关.那么此时就变成了一个多变量线性回归的问题.在实际问题中,多变量的 ...

  4. 【python】Leetcode每日一题-位1的个数

    [python]Leetcode每日一题-位1的个数 [题目描述] 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例1 ...

  5. Linux查看进程和查看端口占用

    查看进程 ps -ef|grep ****.jar 查看端口占用(如果出现命令找不到,安装一下工具即可) netstat -lnp|grep 端口号 (命令找不到解决办法) yum install n ...

  6. mongodb 在PHP中常见问题及解决方法

    1.$in needs an array 解决:查询用到in操作的时候,说in操作对应的不是我一个数组,或者数组索引不是以0开始的 方法:array_values重新生成一个索引为0开始的数组即可 $ ...

  7. 初步了解web

    ------------------------1.Web应用程序的main方法在哪里------------------------Tomcat:从启动到运行首先,我们是通过执行 Tomcat 的s ...

  8. 从effective C++中窥探C++11特性

    这几天在看effective C++3rd,这本书算是比较经典的一本入门C++的书了.虽然年代比较久远书中讲的好多模式已经被的新特性取代了,但是从这些旧的模式中可以了解到一些C++新特性设计的初衷,也 ...

  9. 29.Map,可变参数

    1.Map集合 1.1Map集合概述和特点[理解] 单列集合一次存一个元素 双列集合一次存两个元素 键:不能重复的        值:可以重复的 Map集合概述 interface Map<K, ...

  10. 通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格

    多运行时是一个非常新的概念.在 2020 年,Bilgin Ibryam 提出了 Multi-Runtime(多运行时)的理念,对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华.那到 ...