行人重识别:Mask-guided Contrastive Attention Model for Person Re-Identification 论文学习

《Mask-guided Contrastive Attention Model for Person Re-Identification》(应用于行人重识别的Mask引导的对比注意力模型)是发表于CVPR2018的一篇Re-ID方向的论文。

image.png

由上图可以看出,作者将行人图片中的行人,通过一个Mask(蒙版/掩模),与图片背景分离开来,实现了将人体“抠出来”的操作。但其实该论文所讲述的并非如何生成这个Mask,而是在已有该技术的情况下,如何设计模型能够获得一个更好的识别结果。

1 FCN

Mask的生成,是通过这个叫做FCN(Fully Convolutional Networks,全部是卷积层的神经网络)的网络训练生成的。它实现了这样一个效果:

image.png

可以看到,该模型将图片中重要部分(如人体、狗、物体)的形状清晰地识别出来。

image.png

该模型的大致原理如上图,首先通过一个全是卷积层的神经网络进行一定的训练,再多次使用反卷积操作,最终达到提取出物体形状的结果。具体内容可参考论文《Fully Convolutional Networks for Semantic Segmentation》,这里不详述。

2 Binary Body Mask

将身体“抠出来”的二值化Mask拥有这样的优点:

  1. 去除环境噪声(无用的背景)
  2. 包含了人体形态特征

所以,将仅包含身体的Body层拿去训练,“应该”会有更好的效果。但事实却是,直接拿去训练相对效果却更差一些。论文分析说,Mask可能破坏了原本图像的纹理平整度、以及人体轮廓特征等等。因此作者另辟蹊径,将原图的RGB三通道与Mask通道合并起来,像这样:

image.png

3 MGCAM

最终,论文中使用这个名叫MGCAM(Mask-Guided Contrastiv Attention Model)的模型进行训练。

image.png

模型基于一个叫做“MSCAN”的网络模型,并将它拆分为4个阶段(stage)。

模型的大致思路是:

  • RGBM图片输入后,经过前两个stage,得到一个三维的张量作为特征f;
  • 其一,直接送入后两个stage,输出一个vector特征h,作为full图特征;
  • 其二,将f经过一番加权操作后,变身成为f+特征与f-特征,分别送入后两个stage,输出h+与h-;f+特征与f-特征,分别送入后两个stage,输出h+与h-
  • 通过Latt、Ltrip、Lid三个损失函数共同优化网络。

3.1 MSCAN

3.1.1 Why MSCAN?

为何使用MSCAN?文中提出几点原因:

  1. 普通预训练的模型(ResNet,CaffeNet)都是RGB三通道输入的,这与我们的RGB-Mask四通道输入不相容。
  2. 它可以从头训练(train from scratch),可能是说从头训练效果也很好。
  3. 2017年达到比较先进的表现(state-of-the-art),超越了预训练的CaffeNet。

3.1.2 MSCAN's Feature

MSCAN模型的特点是什么,解决的是什么样的问题?

image.png

如上图,我们说在一张行人图中,行人的帽子和衣服都是非常重要的识别特征。帽子较小,在较浅的卷积层中就能提取出它的特征;衣服较大,可能要在更深的层次中才能提取出来。这样,浅层的“帽子特征”在抵达深层的时候,可能面临一个特征消失的问题。

因此,在MSCAN中,通过每层使用多个卷积核的方式来解决这个问题,如下图:

image.png

例如,经过10次3*3卷积,可能得到小帽子特征;同样经过10次7*7卷积,可能得到大衣服特征,它们在同一层被提取出来,就解决了特征消失的问题。

但是,每层使用3*35*57*7的卷积核仍有以下不足:

  1. 参数过多,计算量过大;
  2. 三种卷积核之间有大量重叠部分,造成冗余。

经过改进后,得到下图三种卷积核:

image.png

同样增大了感受野,卷积核仍然很小,重叠部分也仅有中间一格。

3.1.3 MSCAN's Structure

image.png

MSCAN的结构很简单,由几层卷积层和池化层构成,其中最后四层卷积层使用了上述的多种缝隙间隔的卷积核,也对应了MGCAM中的4个stage。

3.2 Attention Map

image.png

再次回到我们这张模型图来。了解到什么是MSCAN后,我们需要分析模型中间这一部分做了什么事情。

首先,我们已有了中层特征f和中层Mask,需要利用这个Mask生成权值图Φ+与Φ-,他们分别与f做内积,就生成了body流和bkgd流特征。Φ+是这样计算的:

Φ^+=σ(W*f_{stage-2}+b)

其中σ是Sigmoid函数,它将Φ中的权值控制在0~1之间;W与b参数在网络训练过程中不断调整,它的调整过程不仅仅是由Latt损失函数控制的:

L_{att}=\sum_{i=1}^I\sum_{j=1}^J\parallel M_{(i,j)}-Φ_{(i,j)}\parallel

还包括整个模型最终的其他损失函数,因此并非简单地沿着Mask中人体的边缘将f抠出来,而是有注重性地、对人体个性特征权值高一些(多注意一些)、共性特征权值低一些(少注意一些)。Latt只是为Φ+提供一个参考性限定范围。

由于Φ+是人体的权值图,Φ-是背景的权值图,正好与Φ+互补,因此可以通过下式得到Φ-

Φ^-_{(i,j)}=1-Φ^+_{(i,j)}

它们分别与f做内积,就得到了身体特征与背景特征:

f^+_{att}=f_{stage-2}\otimesΦ^+

f^-_{att}=f_{stage-2}\otimesΦ^-

两特征分别送往stage-3和stage-4,就得到了h+和h-

3.3 Triplet Loss

image.png

在拥有了h、h+和h-后,我们可以理所当然地使用Triplet Loss,拉近h与h+之间的距离,拉远h与h-之间的距离。如果对Triplet Loss不了解,可以到9分钟triplet loss的意义和构造学习,讲得非常清楚。

在这里,他这样定义Triplet损失函数:

L_{trip}=\parallel h_{full}-h_{body}\parallel _2^2+max\lbrace (m-\parallel h_{full}-h_{bkgd}\parallel _2^2), 0\rbrace

而图中最后的Lid是指总的三条流的交叉熵损失。

最终,整个模型通过Latt、Ltrip、Lid三个损失的共同调整,使其能够被成功训练。

4 MGCAM - Siamese

在上述方法下,论文又提出了一个MGCAM的Plus版本:在经过以上训练后,再构建一个Siamese模型进行训练,二次训练后效果更佳。

blob

如上图,两个经第一次训练的MGCAM实际上共享参数,完全相同。两张RGBM四通道人像图经过MGCAM处理得到两个特征F(p)和F(g)。我们希望两个输入图属于同一人时,两个Feature能够相近;不属于同一人时,两个Feature能够疏远。因此提出如下损失函数:

L_{sia}= \begin{cases} \parallel h(p)-h(g)\parallel _2^2, &p=g\\\ max\lbrace(m-\parallel h(p)-h(g)\parallel _2^2),0\rbrace, &p≠g \end{cases}

它能够达到我们所说的拉近与疏远的效果。

最终,我们得到的MGCAM - Siamese模型的整体损失函数是这样:

L_{all}=L_{id(p,g)}+λ\cdot L_{sia}+α\cdot L_{trip(p,g)}+β\cdot L_{att(p,g)}

其中λ、α和β是超参数,在本实验中被设置为0.01、0.01和0.1。

5 Conclusion

MGCAM在实验中达到了较好的效果,对照表略去。值得注意的是,在3.2节中说到的注意力权值图Φ,在训练结束后有如下表现:

blob

Φ的attention并非完全按照mask那样简单地将人抠出来,而是对身体各部分有不同注重:对于衣服、头等个性特征上,权值会高一些;对于胳膊、腿等共性特征,权值会较少。这也能够从可视化上帮助人们理解神经网络这个黑盒子是如何理解图像的。

点赞
  1. ss说道:
    Internet Explorer Windows 7

    请问如何注册?和联系客服,好久没更新了,还在用3380

发表评论

电子邮件地址不会被公开。必填项已用 * 标注