[论文阅读] Beyond part models: Person retrieval with refined part pooling

Beyond part models: Person retrieval with refined part pooling

Introduction

在行人重识别这个问题上,从人的不同身体部位提取得到的特征比全局特征更加精细,这些细粒度的特征对于行人的判断往往是更具决定性的。有的方法采用已有的人体姿态估计的方法,识别出人的部位,进而去分别提取特征。 虽然这样的行人分割特征提取方法可行,但是效用并不高。首先是由于两个任务的数据集是不同的,也就意味着人体姿态估计的泛化效果未必理想。所以,构建一个这样的数据库(既有行人id,又有行人关节点)还是很有意义的一项工作。所以在目前的一些工作来看,一种水平分割的方式得到的结果更加优异。

本文展示了一种分割的baseline,即统一将人水平分割成6部分;并且针对这样统一的分割方式,采用一种refined part pooling 的方式优化每一部分,使每一部分之内更加相似,保证一致性,排除离群点。

算法介绍

基本框架

下图是模型的基本框架:

[论文阅读] Beyond part models: Person retrieval with refined part pooling

首先输入图片(规定的大小为384*128,长宽比3:1)经过一个backbone network提取特征。这个backbone network可以是Google Inception或者ResNet,得到一个C*M*N(2048*24*8)的特征图。将特征图水平分为6块,也就是每块4*8,对每一块单独进行average pooling,得到g,再通过一个核为1的全卷积层,将特征降维成256维,得到h,分别用这6组特征进行分类。

以上的算法流程有两个变体,一是对6组h特征取平均,再进行分类,二是六个分类器一同优化,分享参数。但这两个变体的效果都不佳。另外使用高维的g特征去分类比低维的h特征效果好一点,但计算成本更高。

上述基本流程,在Market-1501数据集上rank-1为92.3%(g)和92.4%(h)。而加上RPP的优化提高了1.5%和0.7%的,感觉优化地并无多大差。但是mAP从77.3%提升到81.6%,有了一个较大的提升。

Refined Part Pooling

在计算出g之后,作者计算了下每个g和得到g的各个区域的f的距离,观察是否每个g只和他们各自区域内的f相似。发现并不然。下图可以看出,每个区域内都有一定的离群点。这些离群点表示这个f和另一个区域更相似。部位划分不应该是个“hard”的,而是边界曲折的。

[论文阅读] Beyond part models: Person retrieval with refined part pooling

所以可以计算出每个f得到其属于part P的概率。

P(Pi|f)=softmax(WiTf)=exp(WiTf)j=1pexp(WjTf)

每个part P的则被重新划分。

Pi={P(Pi|×f)f,fF}

在原来算法流程的基础上加上了part classifier模块。

[论文阅读] Beyond part models: Person retrieval with refined part pooling

训练

这个模块的训练如下:

[论文阅读] Beyond part models: Person retrieval with refined part pooling

先训练一个基本的PCB模型,将其他参数固定,加入part classifier模块训练,单独训练这个模块的参数,模型收敛后,再将所有的参数一起训练。

总结

由于人体基本直立的经验先验,水平分割是可行的,但是是基于两个图片中的人对齐的前提。本文对于单个人的部位分割是有较好的约束的,即不必使用其他算法来进行精准的分割。由于检测人体的问题,人体对不齐,则分割后提取的特征不能对应,所以可以进一步思考一下人体对齐的问题。