[论文笔记]CVPR2017_Joint Detection and Identification Feature Learning for Person Search

Title: Joint Detection and Identification Feature Learning for Person Search;

  • aXiv上该论文的第一个版本题目是 End-to-End Deep Learning for Person Search

Authors: Tong Xiao1* ; Shuang Li1* ; Bochao Wang2 ; Liang Lin2;  Xiaogang Wang1

Affilations: 1.The Chinese University of Hong Kong; 2.Sun Yat-Sen University

Paper Code

第一遍看的时候看的是第一个版本,只简单地扫了一眼结构图,觉得就是对faster r-cnn做了小修,而且没有OIM loss,觉得创新性一般。然后发现好几篇后来的文章都用了OIM loss,回过头来再细看文章才发现文章有很多有意思的地方。惭愧!


Motivation

person re-id问题往往是用已经cropped的行人图像块进行检索,判断query和gallary中的图像是否是同一个identity。这里面存在几个问题:

  ①现实中检索都是直接从原始场景图像中实现,而不是利用detection之后的cropped image;

  ②很多数据集都是手动标注的框,实际上detector的检测精度以及是否存在漏检都会对行人重识别的结果造成影响。

因此,作者提出端到端的person search思想,将detection和re-id问题融在一起。

模型

  • 网络的输入是整张图像;
  • pedestrian proposal net:输入经过ResNet-50的第一个部分(conv1-conv4_3)之后输出1024d的feature maps(大小是原输入的1/16);类似于RPN,该feature map先经过一个$512\times3\times3$的卷积,得到的特征每个位置的9个anchors分别送入一个softmax classifier(person/non-person)和linear layer(bbox regression);bbox经过NMS,得到128个final proposals;
  • identification net:每个proposal经过ROI pooling得到$1024\times14\times14$的特征,然后送入ResNet-50的第二个部分(conv4_4-conv5_3),经过一个GAP(global average pooling)得到一个1024维的feature map;这个1024 feature map一分为三:①softmax二分类;②linear regression位置回归;③映射成一个256维、l2 normalized的子控件,实际上是一个FC层,得到256d的id-feat,inference阶段id-feat用来计算consine similarity,training阶段用来计算OIM loss。

Online Instance Matching Loss(OIM LOSS)

注意是用所有final proposals的256d id-feat计算OIM loss。

训练集中有$L$个labeled identities,赋予他们class-id(1到$L$);也有许多unlabeled identities;还有许多背景和错误信息。OIM只考虑前两种。

做法:

  • 对于labeled identities: 记mini-batch中的一个labeled identity为$x\in\mathbb{R}^D$,$D$是特征维度。线下计算和存储一个lookup table(LUT)$V\in\mathbb{R}^{D \times L}$,里面存储着所有labeled identities的id-feat。
    • 前向阶段,用$V^Tx$计算mini-batch中的样本和所有labeled identities之间的余弦相似性。
    • 后向阶段,如果目标的class-id是$t$,那么用$v_t \leftarrow \gamma v_t+(1-\gamma)x$更新LUT的第$t$列,其中$r\in[0,1]$不明白为什么这么更新
  • 对于unlabeled identities,由于数量不等,作者用了一个循环队列来存储$U\in\mathbb{R}^{D \times Q}$,$Q$是队列空间大小。同样用$U^Tx$来计算mini-batch中样本和队列中unlabeled identities的余弦相似性。每次循环,将新的feature vector push,pop一个旧的,保证队列大小不变。
  • 基于上述结构,$x$被认作class-id $i$的概率用softmax函数计算

  • 同样,被认作第$i$个unlabeled identity的概率是

  • OIM objective是最大化log似然的期望

  • 求导是

为什么不用softmax loss直接分类?

  • 一是类别太多,而每类的正样本太少,使得训练很难
  • 二是无法利用unlabeled identities,因为他们没有标签

Dataset

作者提出了新的person search的数据集,包含street view和视频截图,即CUHK-SYSY

Evaluation Protocols and Metrics

person search很自然地继承了detection和re-ID的评价指标,cumulative matching characteristics (CMC top-K) 和mean averaged precision (mAP)。这里要注意和person re-id中这两个指标的异同。

CMC

原文:a matching is counted if there is at least one of the top-K predicted bounding boxes overlaps with the ground truths with intersection-over-union (IoU) greater or equal to 0.5.

这里相对好理解,对于输出的bbox,与GT的IoU>0.5的算作candidates,然后和re-id一样计算top K中 是否包含,包含则算做匹配上。对于误检或者漏检不管。

mAP

原文:(MAP)is inspired from the object detection tasks. We follow the ILSVRC object detection criterion [29] to judge the correctness of predicted bounding boxes. An averaged precision (AP) is calculated for each query based on the precision-recall curve, and then we average the APs across all the queries to get the final result.

这个和reid的mAP应该有较大区别;应该是对每个query相当于一类,求detection的AP

转载于:https://www.cnblogs.com/xiaoaoran/p/11125791.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php下的原生ajax请求

浏览器中为我们提供了一个JS对象XMLHttpRequet,它可以帮助我们发送HTTP请求,并接受服务端的响应。 意味着我们的浏览器不提交,通过JS就可以请求服务器。ajax(Asynchronous Javascript And XML)其实就是通过XHR对象,执行HTTP请求。…

HBase性能优化总结

HBase性能优化方法总结(一):表的设计 1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据&#x…

.NetCore如何使用ImageSharp进行图片的生成

ImageSharp是对NetCore平台扩展的一个图像处理方案,以往网上的案例多以生成文字及画出简单图形、验证码等方式进行探讨和实践。 今天我分享一下所在公司项目的实际应用案例,导出微信二维码图片,圆形头像等等。 一、源码获取 Git项目地址&…

vue2工程

vue当然可以使用script标签引入,不需任何依赖即可按照vue的语法进行使用。但中大型商用项目中,还是建议使用工程化方式使用vue,vue提供了官方脚手架vue-cli,可以快速构建vue项目,脚手架会帮助开发者创建好建议的工程目…

flutte的第一个hello world程序

用命令行创建项目: flutter create flutterdemo VSCode或者AS连接手机后 输入 flutter run 编译后就可以将默认的代码显示在手机上了 开始写hello world 代码,这段代码写在根目录\lib\main.dart文件中,也是Flutter主文件。 整个代码如下 impo…

Ajax 设置Access-Control-Allow-Origin实现跨域访问

之前遇到的问题整理 ajax跨域访问是一个老问题了,解决方法很多,比较常用的是JSONP方法,JSONP方法是一种非官方方法,而且这种方法只支持GET方式,不如POST方式安全。 即使使用jquery的jsonp方法,type设为POST…

vue工程webpack模板配置说明

vue工程webpack模板下的配置文件非常多,只能在实际开发过程中反复熟悉,才能渐渐体会官方将配置文件拆分细化的合理性。 主要配置文件中代码的作用从网上摘录了比较全的一份注释,做下记录。 dev-server.js 开发服务端配置 require(./check-v…

目录的拼接

找到被拼接文件所在的目录,然后进行拼接 import os 获取当前目录: os.path.dirname(__file__) 如下,被拼接文件所在目录与当前目录的上级目录在同一文件夹下: os.path.join(os.path.dirname(os.path.dirname(__file__)),‘文件夹路…

vue-resource 拦截器(interceptor)的使用

拦截器-interceptor 在现代的一些前端框架上,拦截器基本上是很基础但很重要的一环,比如Angular原生就支持拦截器配置,VUE的Axios模块也给我们提供了拦截器配置,那么拦截器到底是什么,它有什么用?拦截器能帮…

【GamePlay】入门篇

【GamePlay】入门篇 游戏性编程是指通过一系列游戏系统将游戏想法变成现实的过程。 本次的简例以NPC设计为主。 通常在进行脚本设计前,对NPC的属性进行基本的添加和设定,诸如动画系统、物理系统等等。 1.动画系统 添加Animator组件,绑定骨骼。…

vue axios POST请求中参数以form data和request payload形式的原因

HTTP请求中,如果是get请求,那么表单参数以namevalue&name1value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以namevalue&name1value1的形式在请求体中。通过chrome的开发者工具可以看…

vue-resource使用

vue-resource是一个http请求插件,遵循promise,类似jquery中ajax操作。 vue-resource已不被官方推荐,官方推荐axios插件来操作http协议。 vue-resource中提供的方法 get(url, [options]) head(url, [options]) delete(url, [options]) jso…

HttpHttps

http协议与https Http 客户端发送一个HTTP请求到服务器的请求消息包括以下格式: **请求行(request line)、请求头部(header)、空行 和请求数据四个部分组成。** Get请求例子,使用Charles抓取的request&…

vue2使用axios post跳坑,封装成模块

终于将vue-resource替换成axios了,其中像application/x-www-form-urlencoded发送的头信息以及返回的response结果这两点都需要注意一下。 其实https://github.com/mzabriskie/axios也有说明的。因为我在vue-resource中使用了Vue.http.options.emulateJSON true;&am…

axios使用

axios和vue-resource一样,是一个vue中操作http的插件,遵循promise,vue官方也推荐使用axios。 安装axios npm i axios -S axios也是在运行时需要的,所以要保存在dependencies中。 引入axios import axios from axios Vue.proto…

jQuery length 和 size()区别

jQuery length和size()区别总结如下: 1.length是属性,size()是方法。 2.如果你只是想获取元素的个数,两者效果一样既 $("img").length 和 $("img").size() 获取的值是一样的;但是如果是获取字符串的长…

一些关于自己的未来的东西

2019.7.4 自己大一建立对编程的基础认识,确实培养了一些兴趣,入了个门,不过没有接触到本质。大二加入到了学校的网站开发团队,对网站开发后端进行了学习,对后台开发也有了基础的学习吧,哈哈可能以后就是要走…

Javascript面向对象编程:构造函数的继承

今天要介绍的是,对象之间的"继承"的五种方法。 比如,现在有一个"动物"对象的构造函数。 function Animal(){ this.species "动物"; } 还有一个"猫"对象的构造函数。 function Cat(name,color){ this.name nam…

并发与多线程

并发 并发(concurrency)是指CPU在某个时间段内交替处理多任务的能力。每个CPU不可能只顾着执行某个进程,而让其他进程一直等待被执行。所以,CPU把可执行时间均分成若干份,每个进程执行一份或多份时间后,记录…

有没有朋友可以帮我解释一下贴水是什么意思?

通俗易懂的讲:贴水便宜,升水贵 当前,螺纹钢05合约就是贴水01合约 翻译,螺纹钢05合约就是比01合约便宜 升水同理 转载于:https://www.cnblogs.com/luoluo-123/p/11142229.html