【论文笔记】Neural Person Search Machines (ICCV2017)

来源:互联网 发布:mac键盘按键错乱 编辑:程序博客网 时间:2024/05/21 22:36

摘要

作者调查了一下室外真实场景下的Person ReID工作,大部分相关工作都是detection+ReID分成两步来做的,这篇文章提出NPSM方法来实现一步到位。NPSM主要借助LSTM和attention的思想,逐步衰减原图中所应该关注的ROI区域,直到最后得到一个很精确的ROI区域,这个区域就是应该搜索的person目标。实验结果表明,在CUHK-SYSU和PWR数据集上都取得了State-of-the-arts的结果。

detection&ReID

图片

上图给出了目前Person ReID的主流做法和本文做法的对比。(a)是主流做法,先会用一个detection的模型检测图片中的行人图片,可能存在错误检测的bounding box,然后用一个训练好的ReID模型把所有bounding box的图片和带检索的Query图片进行相似度比较,之后按照相似度进行一个排序,排名最靠前的就是检索的结果。

而NPSM则把两个结合起来,每次输入ROI区域图片,然后根据Query图片生成attention map,然后选择attention比较大的区域作为新的ROI区域。所以新的ROI区域是之前输入ROI区域的子集,进过LSTM反复衰减这个ROI,最终就可以得到一个比较精确的搜索结果。

当然这里不负责任的吐槽一下,这个插图很可能是为了体现这篇工作的一个“摆拍”。因为提供原图的ReID数据集比较少,论文里使用了CUHK-SYSU和PWR两个数据集,但是这幅图根据我的经验应该不属于这两个数据集,也许是为了体现主流方法失效而本文方法有效的一个摆拍吧。因为在着装非常类似的情况下,比如都穿黄衣服的两个行人主流方法确实很难区分,所以不是很清楚这个是不是为了写论文自己去拍的或者从数据集里面特意挑选的。不过这都没关系,作为一副插图,很明白的展现自己工作的创新点,一图胜千言,所以这幅插图是非常合格的。

Neural Search Networks

图片
Neural Search Networks(NSN)主要的核心就是一个Conv-LSTM网络,CNN网络采用的是Resnet50。Resnet50被分成了两部分,前面几层浅层特征用来提取attention map,后面几层高层网络用来提取ReID所需要的feature。如上图所示,输入一张query图片,经过Resnet50(Primitive Memory)之后会输出两个,一个是ROI pooling得到的feature map,这个feature map用来输入到NSN里进行attention map的计算。另外一个就是输出的就行高层的ReID feature,这个feature将会输入到IDNet进行ReID的识别任务。

Query图片经过Primitive Memory网络的part1部分会得到一个attention map q,之后q将会输入到NSN的LSTM单元里进行计算,传统的LSTM的cell是考虑隐状态ht1和当前的输入xt,在NSN中进一步增加了query图片的特征q,最终改进后的LSTM的公示如下所示:
图片
可以看出就是把q引入到LSTM里面去计算三个门的值而已。LSTM单元的状态一直在变,但是输入的q是一直不变的,因为需要用新的ROI区域和Query图片比较来得到新的attention map。不过LSTM的时间步长论文没有提及。

Region Shrinkage with Primitive Memory

上一个小节介绍了如何更新attention map,但是得到attention map之后要如何得到ROI区域?首先作者使用一个无监督的object proposal模型(例如Edgeboxes)来产生很多个proposal,很多detection的任务都是这样做的。之后每个proposal我们都可以得到其矩形的中点,之后利用中点的坐标来对这些proposal进行聚类。而作者使用最简单的欧氏距离来进行距离的衡量,假设ab是两个proposal框的中点坐标,则它们的距离定义为:

d(a,b)=i=12(aibi)2

之后利用聚类算法可以将所有的proposal聚为C类,聚类细节论文没有提及。每一类的子区域由区域Rsub(C)覆盖,所有Rsub(C)区域的父区域定义为Rpar。这一块不是很看懂,可能Rpar也是覆盖所有Rsub(C)区域的意思。很明显第t时刻的Rsubt,(C)区域是从t1时刻的Rpart1中产生。

另外由于每次NSN输出的ROI区域大小都是不一样的,这对于后续计算ReID的feature是不好处理的,于是作者自己设计了一个ROI pooling,保证不管输出多大的ROI区域,进过ROI pooling之后都可以得到一个固定大小K×K×D的feature map输入到后面的网络。当然这个pooling的细节论文里也没透露。之后对于K×K的feature map,我们可以计算它们的attention得分,其实就是很简单的做了一个二维的softmax,公示如下:
图片
li,jt是每个像素点坐标的attention得分,加起来整幅图的总分就是1。前面我们通过聚类得到了一些proposal,现在我们就要计算每个proposal的重要性得分。实现方式就是计算每个proposal中所有像素重要性得分的平均值,那个proposal的平均值更高,就认为这个框的更重要,最终选择分最高的那个作为ROI区域输入到下一个时刻。

Training Strategy

LSTM最后一个时刻输出的ROI区域进过ROI pooling进入到网络的part2计算ReID feature,然后这个feature用来计算ReID的损失,作者在论文中使用IDNet,也就是说把ReID当做分类问题来看待,计算分类损失。

另外还有一部分损失时输出的bounding box的损失,计算方法就是grand truth的bounding box中的像素如果落在Rt中就认为ok,否则就算一个损失,就是一个很简单的0-1损失问题。这个损失会强迫grand truth落在网络的预测的ROI里面,并且随着ROI的衰减这个ROI会越来越接近grand truth。

结果

作者使用CUHK-SYSU和PWR两个数据集来验证算法的有效性,因为和一般detection+ReID的方法不同,所以计算mAP和top-1的方法有点不一样。mAP和标准的detection任务的计算方法一样,使计算bounding box的坐标,而top-1计算是认为网络预测的ROI和grand truth重合度超过50%就认为识别正确。因此本论文也只能和自己思路一样的方法进行比较,最后结果是本文方法比baseline高了两个点左右
图片

从展现出来的attention map来看,方法还是比较不错的:

图片

简评

这篇论文的工作和主流的ReID工作不大一样,把detection+ReID结合在一起做,方法还是比较新颖的,不过有太多论文细节没有透露,除非作者公布源码否则复现起来基本不可能。另外除了ReID任务,我觉得这篇文章扩展成tracking可能更加有意义。

阅读全文
1 0
原创粉丝点击