度量学习之“局部特征+注意力”
Sun Y, Zheng L, Yang Y, et al. Beyond part models: Person retrieval with refined part pooling (and a strong convolutional baseline)[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 480-496.
该论文主要的贡献:
- 提出一种名为PCB(Part-based Convolutional Baseline)的网络结构,对行人特征进行统一的均匀划分得到局部级别的卷积特征。
- 提出一种RPP(Refined Part Pooling)的方法,微调每个独立局部部分。
在传统手工提取特征用于行人重识别时期,Gray和Tao等人就提出了基于局部特征的方法,简单来说就是把行人在水平方向上平均分割,然后分别提取颜色和纹理特征。而采用深度局部特征的方法与手工提取特征方法的不同之处在于深度局部特征是对提取后的深度特征进行水平分割,而手工方法是先对输入图像进行水平分割后再计算特征,相比之下深度局部特征的感受野更广。在水平方向上平均分割虽然简单,但是却容易出现划分的区域与预期不一致的现象,比如原本属于肩膀的部分却包含了部分下巴。而本文提出的方法最大的贡献是对于划分的局部区域进行微调,让划分好区域的每个像素都重新选择一个与预期最近的区域来重新分配,从而减少了错误分配导致的干扰,提高了模型的性能。
PCB的结构不局限于任何一个骨干网络,任意骨干网络只要经过改造就能变为PCB。将骨干网络的全局平均池化(Global Average Pooling,GAP)层去掉,此时前向传播得到的3D张量我们称为,将按照水平线平均分割为部分分别进行GAP,得到局部级别的单个列向量,之后PCB采用卷积层来减少的维度,减少维度后的列向量维度为256。最后,将每个输入到一个分类器中,该分类器由一个FC层和一个的Softmax函数实现,以预测输入图像的ID,如上图所示。
RPP基于这样一个假设:相同部分的T应该与该部分的其余列向量相似而与其他部分的列向量不相似,否则就会出现划分区域与预期不一致的现象。因此当PCB训练拟合后,就把列向量与计算余弦距离来得到相似度,如果 与更接近,就把划分到第个区域否则就视作异常值 ,接下来就和PCB的内容一样了,就是将重新分配好区域的列向量进行GAP,然后降维、分类。关于如何将异常值重新定位,作者的做法是将中的列向量单独拿出来训练一个分类器,训练器就直接采用一个全连接层加上softmax函数,如下:
局部分类器的训练方式如下:
- 先将基础PCB模型训练至拟合
- 移除原本后的平均池化层,并在后面加上类的局部分类器
- 将原本PCB的权重冻结,单独训练分类器至拟合
- 将整个模型训练至拟合
PCB+RPP的组合提高了模型不少的性能,如下图: