加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~
首发:知乎专栏Person Re-id Sharing
链接:https://zhuanlan.zhihu.com/p/90796970
绪言:这篇是收录在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方法的文章链接在下方,感兴趣可以快速阅读。
PCB方法链接:https://arxiv.org/pdf/1711.09349.pdf
除此之外,这篇文章的工作还包含了构建专为测试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的,在自己构建的专为测试遮挡问题的数据上也是最好表现。
我个人比较关心的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,因此在工程上的处理时间需要考虑,至于算法本身不是很复杂,通过模型缩减应该可以做到较快的处理速度,值得一试。
PS:点击阅读原文进入极市社区,直接跳转文中链接~
-End-
CV细分方向交流群
添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群(已经添加小助手的好友直接私信),更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~
△长按添加极市小助手
△长按关注极市平台
觉得有用麻烦给个在看啦~