Re-ranking Person Re-identification with k-reciprocal Encoding
Re-ranking Person Re-identification with k-reciprocal Encoding
Abstract
In this paper, we propose a k-reciprocal encoding method to re-rank the re-ID results. Our hypothesis is that if a gallery image is similar to the probe in the k-reciprocal nearest neighbors, it is more likely to be a true match.Specifically, given an image, a k-reciprocal feature is calculated by encoding its k-reciprocal nearest neighbors into a single vector, which is used for re-ranking under the Jaccard distance. The final distance is computed as the combination of the original distance and the Jaccard distance.
这篇论文提出了k-reciprocal 编码方法去重排re-ID结果。论文假定底库图片和查询图片在 k-reciprocal近邻是相似的,则它们最有可能是匹配的。论文主要利用原始距离和杰卡德距离完成re-ranking。
Introduction

上图是使用KNN(k=10)聚类的结果,其中Probe为查询图片,P1~P4为正样本,N1~N6为负样本。P1~P4在相似排名上并不靠前,而N1~N6却比较靠前,这说明使用KNN算法得到初始排序结果具有很大噪声。

上图是使用KRNN(k-reciprocal nearest neighbor)算法的重排结果。首先我们需要求出一张图片的表征特征(appearance feature)和k-r特征(k-reciprocal feature)然后分别计算原始距离和杰卡德距离,最后计算最终距离,得出re-ranking列表。
这篇文章的主要工作:
- 提出了单一的k-r特征,有利于re-ranking
- 不需要人工操作和数据标注,采用的是一种自动的和非监督的方法。
- 在多个数据集上,rank-1和mAP性能指标提升。
Proposed Approach
1. Problem Definition
Mahalanobis distance:

M为半正定矩阵 ,\(d(p,{g_i})\) 为文中提到的原始距离。
2. K-reciprocal Nearest Neighbors
KNN:

KNN算法简介:给定测试实例,基于某种距离度量找出训练集中与其最靠近的k个实例点,然后基于这k个最近邻的信息来进行预测。
- 时间复杂度o(n*k):n为样本数量,k为单个样本特征的维度。如果不考虑特征维度的粒度为o(n)
- 空间复杂度o(n*k):n为样本数量,k为单个样本特征的维度。如果不考虑特征维度的粒度为o(n)
KRNN:

∧为合取联结词,叫做合取,比如r=q∧p,那么当且仅当p与q同时为真(或者说同时为1)时r为真(或1),也就是说\({g_i}\)是p的近邻,p也是\({g_i}\)的近邻。

有时候正样本不在K近邻中,也不在k-r近邻中。为了解决这个问题,本文增加了\(\frac{1}{2}\)k-r近邻,来获得更为鲁棒性的\({R^*}(p,k)\)。

3. Jaccard Distance

\(\left| \right|\)代表这个数据集的数量。如果\({g_i}\)和p是相似的,则\({R^*}(p,k)\)和\({R^*}(g_i,k)\)重合部分较多,则杰卡德距离\({d_J}(p,{g_i})\)就越小。
这步操作有3个缺点:
- 获得\({R^*}(g_i,k)\)和\({R^*}(p,k)\)数据非常费时。
- 计算所有近邻的权重都是相等的。
- 没有考虑到原始距离和杰卡德距离的联系。



4. Local Query Expansion
因为同一类别的图片具有相似的特征,我们使用KNN方法完成本地查询操作。

5. Final Distance

6. Complexity Analysis
假设底库图片集大小为N,一般情况下距离测量和重新排序的时间复杂度分别为\(O({N^2})\),\(O({N^2}\log N)\)。但是,我们提前在本地上计算距离和进行排序,故时间复杂度分别为\(O({N})\),\(O({N}\log N)\)。
Re-ranking Person Re-identification with k-reciprocal Encoding的更多相关文章
- 使用C#通过Thrift访问HBase
前言 因为项目需要要为客户程序提供C#.Net的HBase访问接口,而HBase并没有提供原生的.Net客户端接口,可以通过启动HBase的Thrift服务来提供多语言支持. Thrift介绍 环境 ...
- 支付宝app支付服务器签名代码(C#)
1,引入支付宝的sdk(AopSdk) 支付宝接口文档网站可下载,注意下载C#版本: 2,代码写的比较简单 public static string RSASign(string OrderNo,de ...
- 自定义Base16加密
自定义Base16加 ...
- 爬虫、请求库requests
阅读目录 一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,req ...
- request模块
一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 # 介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模 ...
- 爬虫 requests 模块
requests 模块 介绍 使用requests可以模拟浏览器的请求, 比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) ps: requests库发 ...
- 请求库之requests模块
本片导航: 介绍 基于GET请求 基于POST请求 响应Response 高级用法 一.介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的a ...
- 爬虫 之Requests库的详细使用
1.什么是Requests? Requests是用Python语言编写的,基于urllib3来改写的,采用Apache2 Licensed 来源协议的HTTP库. 它比urllib更加方便,可以节约我 ...
- 爬虫之requests请求库
介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内容下 ...
- django模型操作
Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表
随机推荐
- Vim键盘图-红色圈标记为重点
- Linux如何杀掉tty终端
今天工作中遇到了同事的终端登陆不上去的问题,尝试着如何解决,首先想到的就是先干掉tty终端. 下面是总结的如何杀掉tty终端: 1.使用w命令查看当前登陆的用户及使用的tty [root@host ~ ...
- Java集合--ArrayList出现同步问题的原因
1 fail-fast简介 fail-fast 机制是java集合(Collection)中的一种错误机制.当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件.例如:当某一个线 ...
- 模块讲解---numpymo模块,matplotlib模块,pandas模块
目录 numpy模块 matplotlib模块 pandas模块 numpy模块 numpy模块:用来做数据分析,对numpy数组(既有行又有列)--矩阵进行科学运算 在使用的时候,使用方法与其他的模 ...
- mysql group_concat长度限制
group_concat函数有长度限制 查找当前数据库长度 show variables like 'group_concat_max_len' 设置当前session的group_concat长度, ...
- 用IE滤镜实现多种常用的CSS3效果
CSS3是当下非常火的一个话题之一,很多浏览器都已经开始支持这一特性,然后IE这个拥有庞大用户群体的平台,却无法提供这样的支持,即便是IE9发布,也无法改变这一事实,然而,幸运的是,IE并非在这方面毫 ...
- Django—Ajax
Ajax-get url url(r'^ajax_add/', views.ajax_add), url(r'^ajax_demo1/', views.ajax_demo1), 视图 def ajax ...
- 使用python开发ansible自定义模块的简单案例
安装的版本ansible版本<=2.7,<=2.8是不行的哦 安装模块 pip install ansible==2.7 先导出环境变量 我们自定义模块的目录. 我存放的目录 export ...
- 2019.6.28 校内测试 T4 【音乐会】达拉崩吧·上
考试的一道附加题~ 一看题目描述:把区间[l,r]里每个数异或上x,求区间[l,r]里所有数的异或和,这明显的要用数据结构或RMQ吧. 恩,所以正解就是线段树啦,至于树状数组行与否,不知道~ wate ...
- sick 激光
sick10:TiM561-2050101https://www.sick.com/cn/zh/detection-and-ranging-solutions/2d-lidar-/tim5xx/tim ...