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表
随机推荐
- C# DocumentCompleted事件多次条用解决方案
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { ...
- jaxb生成cdata块
1.需要添加一个适配器: import javax.xml.bind.annotation.adapters.XmlAdapter; public class AdapterCDATA extends ...
- 003-官网安装openstack之-keystone身份认证服务
以下操作均在控制节点进行 1.控制节点安装keystone服务 概念理解: Keystone是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, 它实现了OpenStack的Ident ...
- 用CSS实现定位DIV绝对位于网页底部
网上有一些解决方案,但会出现当改变窗口高度时,底部和正文重叠的BUG.尽管没有多少人会有事没事儿的去改变窗口高度,但设计嘛,追求的就是尽善尽美. 下面是我找到的一个比较完美的方法,来自国外的设计达人, ...
- Python 10.1.1
- 001_linux驱动之_驱动的加载和卸载
(一)驱动的安装: 1. 可以将驱动程序静态编译进内内核中 2. 也可以将它作为模块在使用的时候再加载 注:在配置内核时候,如果某个配置被设置为m,就表示它将会被编译成模块 (二)加载和卸载驱动使 ...
- Shell 06 awk
一.基本操作方法 ######################################### grep 按行进行查找 vim 编辑文档,交互式 ####################### ...
- Linq to JSON/Json.NET
Can I LINQ a JSON? http://stackoverflow.com/questions/18758361/can-i-linq-a-json Json.NET https://js ...
- [POI2015]LAS
洛谷题目链接 动态规划: 这里用一种我想不到的思想,我们以美食来转移,设计状态$f[i][S](S\in\{0\sim3\})$其中$S$为$0$时表示第$i$个食物没有被人选,$1$表示被左边的人选 ...
- php win/linux/mac 安装redis扩展或者扩展报错 zend_smart_str.h file not found
1 windows 安装reids 扩展 根据phpinfo 查看php信息.在pecl.php.net 下载对应的redis扩展版本,放如扩展目录,在php.ini 配置扩展信息,重启服务 2 li ...