Pose-Guided Feature Alignment for Occluded ReID

Pose-Guided Feature Alignment for Occluded ReID

绪言:这篇是收录在ICCV2019的paper list里面的,一篇解决ReID任务中的遮挡问题的文章。由于在鹅厂实习时候恰好做过pose guided reid的工作,所以就拿这篇来读读。看文章之前就对其方法有预期,即利用pose做attention监督ReID训练,让模型更加关注能retrieval到key-points的区域。读文章之后发现方法主干确实是这样处理。

Introduction

Intro部分首先解释了在ReID问题中,为什么遮挡是一个影响识别准确率的重大障碍:大多数ReID方法都是利用global feature来识别,这就导致了不同人但有相同遮挡样式的会被误匹配成同一个人。由此这篇文章提出了主要指导思想:1. 让模型更加关注未被遮挡的部分;2. 将global feature map做horizontal partition使用。

此外introduction部分还区分了partial reid和occluded reid的区别:前者的query为partial的人图,而gallery中全都是没有遮挡以及切分的完整人图;后者的query为遮挡的人图,而gallery是遮挡与未遮挡的图都有。

读完introduction应该至少有两个预期,第一是如何让模型更加关注未被遮挡的部分,针对这个,自然而然会想到利用attention方法,那么pose可能是一个好的attention监督信息;第二是将global feature做horizontal partition,这个方法近两年关注reid问题的研究者可能会自然而然地联想到17年的PCB方法,也是将global feature map做horizontal partition,这篇文章的partition可能与之前的工作会有类似之处。PCB方法的文章链接在下方,感兴趣可以快速阅读。

https://arxiv.org/pdf/1711.09349.pdfarxiv.org

除此之外,这篇文章的工作还包含了构建专为测试reid模型在遮挡情况下的表现的数据集。通过manipulated从Duke benchmark挑选出来一个全为遮挡情况的query,并且从训练集剔除了和测试集中的遮挡情况类似的样本,以避免模型过拟合到遮挡的pattern。

Methodology

带着读完introduction的预期来看methodology,发现该文章的方法确实与预期差距不大,果然是一个two-branch的pipeline,下图为算法示意图:

看到这个算法示意图,相信熟悉Reid话题的研究伙伴应该会觉得十分熟悉,上半branch的pose guided attention以及下半与PCB几乎相同的分支,其实不用做过多解释就可以明白整个方法在做什么事。

首先看上半pose guided branch。当一张query输入网络时候,预训练好的pose estimator会给出一个key points预测结果。文中没有具体说pose estimator具体用了哪个方法,这里也不做推测。总之是在COCO上预训练好后拿到这里直接使用。对每个key point都生成一个heatmap。我们知道pose estimation对遮挡的敏感程度很高,而预测时除了返回点的坐标之外还会返回一个置信度,对于置信度较低的关键点,可以认为该部分是处于遮挡状态中的。因此最后返回的heatmap,对于置信度很低的点,该点的heatmap应该是置0的。

将所有的heat map叠加之后做max-pooling得到的feature vector和input经过resnet之后再max-pooling的feature vector 做concatenate,最后得到的feature vector即为该pose guided分支的representation结果。用这个feature vector会得到一个id预测结果。

再看partial feature branch,这个分支非常简单,将input经过renet之后的feature map直接做horizontal partition,再average pooling以及1*1 conv之后,将每一个part都预测一个id。

Loss function也非常直观,首先是partial feature branch部分的loss,上面提到了每一个part都会预测一个id,因此这里的id loss是cross entropy的和:yi是每个part的id预测结果,y是ground truth,CE代表cross entropy。

而对于pose guided branch来说,loss同样直观,通过最后的feature vector会预测一个id,因此这里还是id loss,计算cross entropy。

最后将两个loss按比例求和即为最后的loss function。

而衡量query与gallery之间的距离则是下图说明。一个query通过网络之后会得到pose guided feature vector和partial feature vectors,query和gallery的pose guided distance很简单,即为两个vector的euclidean distance。而对于partial vector来说呢,只计算未被遮挡部分的对应vector的距离和。判断是否被遮挡的条件是这个part里面是否有retrieved key-point。如果没有则判断是遮挡部分,不参与距离计算。

Experiment

实验结果就不加赘述,根据作者提供的数据,该模型无论是在传统benchmark例如Market还是Duke都是stoa的,在自己构建的专为测试遮挡问题的数据上也是最好表现。

在自己构建的遮挡数据集上的表现

在benchmark上面的表现

我个人比较关心的retrieved key points数以及判定遮挡点的threshold对reid的效果影响实验文中也有展示,和预期符合的是,并不是点数越多对reid的正面效果越好。

最后文章也对比了不同的pose estimator的对于reid表现的影响对比,是我熟悉的交大的卢策吾老师团队的Alpha Pose和CMU的开源open pose。

可以看出在pose estimation上表现更好的Alpha Pose对该算法的ReID正向效果更大。

Conclusion

我个人认为该文章的工作算是比较稳扎稳打,看作者是Yi Yang老师的组,也就是前文提到的PCB算法的提出团队,因此算是站在之前的工作上再往前推进一步。由于该方法算是two stage的pipeline,因此在工程上的处理时间需要考虑,至于算法本身不是很复杂,通过模型缩减应该可以做到较快的处理速度,值得一试。

编辑于 2019-11-08

文章被以下专栏收录