【论文阅读】Relation Network for Person Re-identification

299 阅读6分钟

导读

简介

最近的reID方法表明,利用描述身体部位的局部特征,加上人物图像本身的全局特征,即使在缺少身体部位的情况下也能给出健壮的特征表示。但是,如果直接使用个体的部分级特征,而不考虑身体各部分之间的关系,则会混淆具有相似的局部特征但是是不同人的身份鉴别。本文提出了一个人形关系网络来解决此问题,此模型单一的部分级特征同时包含了身体其他部位的部分信息,使其更具辨别力。同时引入了全局对比池(Global Contrastive Pooling)来获取人物图像的特征。全局对比池是最大池化和平均池化的补充。简单来说,全局对比池的作用就是以残差的方式提取全局池化和平均池化的互补信息。

引言

局部特征比全局特征提供了更好的人的特征表示,但是不考虑身体各部分之间的关系而将它们连接起来,只能有区别地表示一个人的身份。这并不能区分图像之间对应部分具有相似属性的不同人的身份,因为基于局部特征的方法是独立计算对应局部特征的相似度。本文提出让每个局部特征都包含身体其他局部的信息,从而获得有效人reID的表征。文章引入了一个关系模块来获取整体和局部的关系。它说明了身体各个部位与其他部位之间的关系,使每个局部特征都包含了对应局部本身和身体其他部位的信息,使其具有更强的辨别能力 。 主要有两个贡献:

  • 提出了一种关系网络,用于基于局部人体特征的reid,以获得经过判别的局部特征。
  • 我们提出了一种全局对比池的新的池化方法,GCP算法,提取人像的全局特征。

方法

  1. 以Resnet-50为骨架网络,从图像抽取 HWCH*W*C大小的特征图。
  2. 水平分割成六个特征图。
  3. 使用最大池化分别从六个特征图中获取大小为11C1*1*C的局部特征。
  4. 这六个特征都分别使用One-vs.-rest关系模型和全局对比池化来获取新的局部特征和全局特征。 image.png

第一个模块通过考虑身体各部分与其他部分的关系,使每个局部特征更具分辨力,当c<Cc < C时,输出尺寸为11c1*1*c的局部关系特征。 第二个模块提供了大小为11c1*1*c的全局对比特征,代表人物图像本身。

使用交叉熵损失函数和三元组损失函数进行端到端的模型训练。在测试时抽取损失图像的特征并且计算人物特征的欧式距离

基于局部的ReID的关系网络

局部特征

使用已经在ImageNet上进行过预训练的ResNet-50作为网络骨架来抽取输入的人体图片特征 。同时移除了网络的全连接层和平均池化层,将最后的卷积层步长改为1。将初始特征图分割成大小为H/6 × W × C的多个水平网格,对每个网格进行最大池化处理,得到大小为11C1*1*C的局部水平特征。

One-vs.-rest 关系模块

从水平网格中提取局部特征允许隐式地利用身体部分来表示不同的人。使用Pi(i=1,...,6)P_{i}(i=1,...,6)来表示每一个水平特征。对所有的水平特征使用平均池化层,除了一个特别的PiP_{i}。聚集将身体的其他部位的信息如下公式:ri=15jiPjr_{i}=\frac{1}{5}\sum_{j ≠ i}P_{j}简单来说,rir_{i}是除了本特征以外的其他五个特征的和的均值。 然后为每个pip_{i}rir_{i}分别添加一个111*1的卷积层来获得大小为11c1*1*cPiˉ\bar{P_{i}}riˉ\bar{r_{i}}。网络会连接并出然后为每个pip_{i}输出一个关系特征qiq_{i}。下图是提取q1q_{1}的示例图。

image.png

qi=piˉ+Rp(T(piˉ,riˉ)),(i=1,...,6)q_{i}=\bar{p_{i}}+R_{p}(T(\bar{p_{i}},\bar{r_{i}})), (i=1,...,6)

其中,RpR_{p}是由1×11\times1大小的卷积层、BN层和ReLU组成的子网络。用TT表示特征的串联,使用残差Rp(T(piˉ,riˉ))R_{p}(T(\bar{p_{i}},\bar{r_{i}}))来支撑局部特征piˉ\bar{p_{i}}。使得它更具有辨别能力。

全局对比池化层

不对最初的特征图做最大池化或者平均池化,而是对已经分层完成的特征图做最大池化和平均池化。平均池化覆盖了图像的整个身体部分,但是容易受到背景和遮挡的干扰。而最大池化不容易受到干扰却难以获得整个身体部分的信息。分别用pavgp_{avg}pmaxp_{max}表示,pcontp_{cont}表示全局对比池化。pcontp_{cont}可以认为是pavgp_{avg}的特征减去pmaxp_{max}的特征。然后对pcontp_{cont}pmaxp_{max}分别使用一个瓶颈层将它们的通道数从CC减少到cc,获得pcontˉ\bar{p_{cont}}pmaxˉ\bar{p_{max}}(这里似乎缺了一段2c->c的网络层的描述) 然后将pcontˉ\bar{p_{cont}}的补充信息传递给pmaxˉ\bar{p_{max}}获得局对比特征。

image.png image.png

q0=Pmaxˉ+Rg(T(Pmaxˉ,Pcontˉ))q_{0}=\bar{P_{max}}+R_{g}(T(\bar{P_{max}},\bar{P_{cont}}))

其中,RpR_{p}是由1×11\times1大小的卷积层、BN层和ReLU组成的子网络。

训练损失

使用三元组和交叉熵作为损失函数:

L=Ltriplet+λLceL=L_{triplet}+\lambda L_{ce}

其中λ\lambda是权重参数。

LtripletL_{triplet}为:

Lce=n=1Nynlogy˘inL_{ce}=-\sum_{n=1}^{N}{\sum{y^{n}\log\breve{y}_{i}^{n}}}

其中NN是每个batch图片的数量,yny^{n} 表示其真实的标签。y˘in\breve{y}_{i}^{n}是每个特征qiq_{i}预测的标签。公式为:

y˘in=argmaxcKexp((wic)Tqi)k=1kexp((wik)Tqi\breve{y}_{i}^{n} =argmax_{c\in K}\frac{exp((w_{i}^{c})^{T}q_{i})}{\sum_{k=1}^{k}{exp((w_{i}^{k})^{T}q_{i}}}

其中KK是标签的数量,wikw_{i}^{k}qiq_{i}是特征qiq_{i}和标签kk的分类器。使用了完全连接层作为分类器。

本文使用了难样本的三元组损失。公式如下:

image.png

NKN_{K}是batch中的标签种类数量,NmN_{m}是每个标签的图片数量,(N=NmNKN=N_{m}N_{K}α\alpha是一个边缘参数,用于控制特征空间中正负对之间的距离。qi,jA,qi,jPqi,jNq_{i,j}^{A},q_{i,j}^{P}q_{i,j}^{N}分别为锚定图像、正面图像和负面图像的人表征。

扩展到不同规格

使用qPi,i=2,4,6q^{Pi},i=2,4,6来表示不同的划分,T(q0...q6)T(q_{0}...q{6}),表示这些特征的链接。

实验结果

数据集

使用了Market1501、CUHK03和DukeMTMC作为数据集。

训练

将训练图片扩大道384×128384\times 128。特征通道CC为2048,cc为256。使用水平反转,随机擦除来增强数据。使用SGD作为优化器。初始动量为0.9,每轮衰减 0.0005。batch为64,训练80轮。选择16个类别,每个类别选择4个图像(NK=16,NM=4N_{K}=16,N_{M}=4)。骨干网络和其他部分学习率分别设置为0.001和0.01,40轮之后每过10轮就除10。根据经验将权重参数λ\lambda设置为2。

方法对比

image.png

image.png

研讨

消融实验

image.png

在不同的数据集上进行消融实验,分别使用对全局特征和局部特征根使用不同的池化方法。结果现实在全局特征上使用全局类比池的同时在局部特征上使用全局最大池化效果最好。

one-vs.-rest 关系

image.png

图片展示了ovr模块的效果,他使得模型能关注连接的部分

局部特征的性能比较

image.png

用每个单独的特征进行预测的结果,左边是使用了关系模块的结果,右边是没有使用关系模块的结果 ,正确率大大提高。

全局特性的性能比较

image.png

在同一个数据集上分别使用不同的池化方法来进行实验,结果证明全局类比池化的效果最好。