AlignedReID: Surpassing Human-Level Performance in Person Re-dentification
Introduction
这是旷视科技的一篇论文,提出的AlignedReID算法在Market-1501和CHUK-03数据集上rank-1的准确率达到94.4%和97.8%,即使没有re-rank,也达到了91.8%和92.4%的精确率;并且评估了人类在行人重识别问题上的表现,而论文的结果更是超过了人类表现。
论文地址:https://arxiv.org/pdf/1711.08184.pdf
github代码:huanghoujing/AlignedReID-Re-Production-Pytorch
行人重识别问题也受到行人姿态不同,摄像头之间视角的不同,光照遮挡等问题的影响,使得问题很难。现在主要是通过特征提取+距离度量的方式学习,实现行人的跨摄像头检索和匹配。
如上图,展示了行人重识别中的一些难点,(a)(b)中框出的同一行人不能对齐,(c)(d)中行人的姿态差异较大,(e)(f)中的行人出现了不同的遮挡,(g)(h)中的行人外观衣着非常相似,需要觉察他们之间局部的细小差别。
算法介绍
AlignedReid
上图是基本的网络框架图,backbone部分选用的是Resnet-50和Resnet50-Xception,来提取图像的特征,初始化为imagenet上预训练好的参数。输入224*224的图像,输出为2048*7*7大小的特征图。接下来,分为两个branch分别对global feature和local feature进行处理。
- 对于global feature分支,直接对2048个特征图进行池化处理(GAP or GMP?),对得到的一个batch中的N个特征向量计算L2距离,作为global distantce。
- 而对于loacl feature分支,将2048*7*7的特征图水平池化处理,得到2048*7*1的特征图。再经过一个kernal=1的全卷积层处理,得到128*7的特征。由于不同的bounding box中的行人没有完全对齐,直接进行块与块之间的距离计算求和会导致误差,所以,作者提出了对齐思想,把问题归结为一个动态规划问题的求解,具体见下图。
Image A和B都被分为七块区域,而A图的1号块对应的最相似的应该是B图中的4号块,而不能简单的计算为对应号块的向量距离。所以,作者先计算出两两之间的距离,形成上图中右边的距离矩阵,然后在这个距离矩阵中找到(1,1)到(7,7)的最短距离,作为局部特征之间匹配的距离。这样一定程度上,利用了相对应部位之间的特征去作比较。
Mutual Learning(协同学习)
协同学习是本文章中另一个比较创新的点。它是受知识蒸馏的启发,知识蒸馏是指创建一个学生网络去学习模仿老师网络,以较小的较简单的网络去模拟大型的复杂的网络,来学习网络中主要的知识。常用来作模型压缩。而本文中,创建了两个结构相同的学生网络,一起来学习优化同一个目标。所以最后的loss除了各自的Metric loss和classification loss之外,还定义了协同学习的loss。