Abstract
现在行人重识别(Person ReID)越来越火,一个比较大的挑战是首先跨摄像头目标重识别,其次是每一个行人patch中背景复杂、人体姿态不一和遮挡等情况增加了特征提取并学习的难度。目前有很多工作已经开始引入了额外的监督信息比如行人的关键点,通过一种part-base的方法去强约束模型对于行人特征的学习能力。关键点的引入可以使得行人的一些局部特征提取变得更加准确,过往有很多工作证明了这种工作的有效性。
作者在本篇文章主要提出了一种Person ReID的架构叫做Attention-Aware Compositional Network (AACN),这种结构主要由两个子结构构成。
- Pose-guided Part Attention (PPA)
- Attention-aware Feature Composition (AFC)
前者用于学习特征预测人体关键点、刚性结构和非刚性结构的特征图,同时对于不同结构所预测出来的特征图,还引入了一个概念叫做 pose-guided visibility scores,主要是用来对每个人体部件的可视程度进行打分加权。AFC结构用于将PPA得到的attention信息与全局的特征组合在一起,然后通过行人的ID作为标签进行分类训练(reid loss)。作者的这个方法在目前主流的Person ReID数据集比如Market-1501, CUHK03, CUHK01, SenseReID,CUHK03-NP and DukeMTMC-reID上都取得了最好的结果。
Introduction
近几年研究Person ReID的文章很多,这主要得益于其具备广泛而重要的应用,最常见的一个需求就是老人、小孩走丢了之后能快速分析将其找回。但是由于人体姿态、光照、背景和不同摄像机成像之间存在差异。跨摄像头的Person ReID即行人检索有较高的难度。part-base的方法可以使得CNN模型提取特征的过程中更加关心与重要人体区域的特征,但目前仍存在一定的问题。如下图(a),(b),(c)所示,画框类型的人体部件标注引入了额外的背景信息和其他部件的区域,在提取的特征中真正关心的部件特征只占了一部分。
同时观察上图的(d),(e),(f),交叉的部件和背包都会让目标人体部件的特征提取出现不准确的情况。所以在这篇文章中,作者引入了姿态也就是关键点来精细化行人部件的特征提取,称之为Pose-guided的方法。在说这部分之前作者对比了过往part-based方法中常用的手段,如下图所示。
RoI是我们刚才所说的对不同的部件使用box画框标注的方法,Patch和Strip分别设计了网格和横条去拆分一幅图,然后针对每一个part都提取特征进行学习。从图中可以很直观的看出,作者使用的这种Pose-guided的方法能更准确的学习人体部件区域的Attention Map。对于本文的贡献点总结如下:
- 提出了一个叫做Attention-Aware Compositional Network (AACN)的结构用来解决行人不对齐和遮挡的问题。
- Pose-guided的方法能更准确的排除掉背景等区域的干扰信息,并且基于该方法得到的行人刚性和非刚性Attention Map能被用于大部分基于Attention的方法中。
- 对于不同部件的Attention Map引入了visibility score主要解决了行人中一些部件出现遮挡的问题。
- 在目前的主流Person ReID数据集上取得了最好的性能结果。
Related Work
这部分感兴趣可以查看论文了解。
Attention-Aware Compositional Network
如同前文提到的一样,作者的AACN框架包含两个结构,分别是Pose-guided Part Attention(PPA)和Attention-aware Feature Composition (AFC)。前者对一张输入图像处理之后输出attention map和visibility scores,然后这部分的输出和AFC的第一个stage输出也就是Global Feature相结合之后作为AFC模块的后端输入。总体结构图如下图所示:
PPA结构主要包含了两个stage,每一个stage分别对应三个输出,为关键点的特征图、刚性结构的特征图和非刚性结构的特征图。使用2 stage级联的方式可以使得网络在学习过程中对于特征图的生成更为准确。结构如上图中(a)的上半部分。AFC模块主要是用GoogleNet作为stage1的backbone用于图像全局特征图的生成,然后在stage2和stage3中分别于PPA的attention map和visibility scores相结合计算。如上图中的(b)下半部分所示。
Pose-guided Part Attention
类似于下图(a),人的结构可以按照关键点的分布而分为刚性结构和非刚性结构。
刚性结构主要是人体的躯干,分别头部、上半身躯干和下半身躯干,非刚性结构的话主要是腿、胳膊等人体部件。PPA结构中使用了一个2stage的CNN模型,最终输出关键点K、刚性结构R和非刚性结构N三种attention map。这一部分对三种attention map分别计算loss,公式如下所示:
Loss for Keypoint Confidence Map
对于人体关键点的attention map,作者定义loss表达为,人体总共在这篇文章中归结为14个关键点,所以最终输出的attention map总共有14个,每一个attention map分别对应一个关键点的回归结果。在真值标签中,对于某个坐标位置上的关键点需要使用Gaussian kernel(高斯核函数)中心展开得到其对应的heatmap真值标签。然后计算损失的时候使用MSE Loss来衡量真值heatmap和预测出来的attention map之间的差异。公式如下:
Loss for Non-Rigid Part Attention
对于人体的非刚性结构,之前的方法都是使用box作为框定的标签,本文受 Part Affinity Field (PAF)方法的启发,对于某一个非刚性结构,使用两个关键点定位到这个结构的两端,然后连线以后以一定的宽度外扩得到一个矩形区域表示非刚性结构的attention map真值。最终使用MSE Loss来计算真值和预测值之间的差异:
Loss for Rigid Part Attention
上文提到的三个人体刚性部件,同样使用了关键点作为引导然后勾勒出几何区域来表示真值的heatmap,对于头肩部分选择关键点的组合为,对于上半身选择,对于下半身选择。同样的该部分也使用了MSE Loss,如下所示:
Part Visibility Score
attention map中attention区域的大小能直观的表示出一个部件在一幅图像中的成像大小,受这个思想的启发,作者对于每个attention map做一个累加计算,得到的值定义为visibility scores,如果这个值越大,那么就说明人体该部分的部件遮挡情况不是特别严重。公式如下所示:
分别表示了作者对人体的所有刚性结构和非刚性部件的在PPA结构的输出特征图中做了特征累加。
Attention-aware Feature Composition
如上面的结构图所示,AFC结构包含了三个stage,分别是一个Global Context Network(GCN)用于提取图像的全局特征, Attention-Aware Feature Alignment和 Weighted Feature Composition。后两个结构分别利用了PPA输出的attention map和visibility scores与全局的图像feature map结合计算。
Stage 1: Global Context Network (GCN)
GCN结构使用了GoogleNet作为backbone输出图像的全局特征,与原本的CNN结构不一样的是,作者将inception 5b/output部分后面的模块替换为了一个3x3,卷积核个数为256的卷积层,其中一个作用是降低了网络的性能开销,同时使用了这个结构结合448x192的输入(原版CNN输入为224x224),最终GCN的输出特征图从7x7变为14x6。对于这一部分,作者修改网络结构之后将改过的GCN模型在ImageNet网络上做了预训练。
Stage 2: Attention-Aware Feature Alignment
对比上述结构图中(a)的下半部分,AFC的stage2首先第一个输入时GCN的global feature,其次是PPA结构输出来的刚性结构和非刚性结构的attention map(假如有N个)。每一个attention map使用哈达玛乘积依次与global feature进行计算,最终可以得到N个global feature。对于每一个global feature首先使用GAP(global average pooling)计算之后将所有的feature vector拼接起来。基本上可以用以下公式表示这个过程。
表示所有从PPA结构中输出的人体部件attention map,是对做了一个减最小值除最大值的归一化操作结果。是GCN结构输出的256维的global feature,表示的是global feature和PPA的输出attention map做了点积之后的attention feature map,是GAP操作,得到feature vector。最后将所有的feature vector拼接到一起。得到P个1xN大小的vector,P是attention map的个数,N是feature vector的长度。
Stage 3: Weighted Feature Composition
PPA结构中的visibility score总共有P个,等于人体刚性和非刚性部件的总数。对于这个Px1的feature vector,在AFC的第三个stage中,首先将其与stage2中的输出feature vector拼接得到P个1x(N+1)的vector,然后使用1x1的卷积计算得到P个权值,将这个权值向量Px1与stage2中的输出feature vector(大小为P个1xN)做点积计算之后输出feature vector,同样再使用1x1的卷积核进行计算得到最终输出的人体特征,然后使用reid loss(其实就是ID的softmax loss)约束学习。
Experiments
这一部分主要是对主流Person ReID数据集做了测试,对于 CUHK03,CUHK01和SenseReID数据集使用CMC指标, Market-1501,CUHK03-NP和DukeMTMC-reID使用了rank-1和mAP作为检索指标。这里贴几个主要的实验结果,如下所示:
可以看出论文方法比目前的SOTA方法都有一定程度的提升,是个很有创新性和实用性的工作。
Ablation Analysis
在这一部分中作者阐述了一些能对AACN结构产生性能影响或者改进的方向,比如说base network,比如文中的GCN是GoogleNet,如果调整为其余网络,也是有效的,并且检索性能会因为CNN模型的特征学习能力而发生改变。如下图所示。
可以看出换了不同的base network之后AACN方法对比之前采用同样base network的Person ReID方法还是有比较显著的优越性,并且能够在检索性能上做到更少的参数。
Pose-guided Part Attention
下图的结果表示了使用PPA结构的attention map对比其他几种attention map生成方式比如RoI和Parsing方法的结果。同样体现了PPA结构的优越性。
Attention-aware Feature Composition
文章也讨论了在结合人体部件attention map和global feature过程中的定量分析,结果如下图所示。使用所有的刚性结构和非刚性结构可以取得最好的结果。
Visibility Score
Visibility Score同样能对最终的结果带来一定改进,因为从理论上来讲,这部分对于人体部件是否出现遮挡问题有较高的敏感性。结果如下所示。
Conclusion
总的来说,这篇文章提供了一个很好的思路,将attention机制应用于行人重识别任务中,摒除了背景等干扰因素带来的特征学习问题,对解决不同姿态、不同背景下的Person ReID问题提出了新的思路。PPA结构负责学习并输出人体部件的attention map,然后AFC结构负责将attention map和global feature相结合然后进行行人特征学习,最后,attention map强相关的visibility scores能对遮挡的部件进行最大程度的兼容。