本文主要是介绍Learning Discriminative Features with Multiple Granularities for Person Re-Identification 论文学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Abstract
将全局和局部特征结合已经成为提高行人重识别任务表现的关键方案。以前的基于局部特征的方法主要是利用预先定义的语义信息来定位区域,学习局部表征,这增加了学习难度,且对复杂场景来说其鲁棒性和效率都差一些。本文提出了一个端到端的特征学习策略,用多样化的细粒度来集成判别信息。作者仔细设计了 Multiple Granularity Network,它是一个多分支的深度网络结构,一个分支用于全局特征,另两个分支用于局部特征。本文的方法没去学习语义区域,而是将图像拆分成多个条纹,改变不同的局部分支中的 parts 个数,以获取不同细粒度的局部特征。作者在 Market1501、DukeMTMC-reid 和 CUHK03 数据集上进行了大量实验,证明该方法可取得 SOTA 成绩,大幅度领先于现有方法。对于 Market1501 数据集,在查询模式下,re-ranking 后,本文方法取得了 Rank-1/mAP = 96.6 % / 94.2 =96.6\%/94.2 =96.6%/94.2的成绩。
1. Introduction
行人重识别是一个极具挑战性的任务,它要在不同的安防摄像头拍摄到的行人图像库中检索出某个人。因为安防视频的图像场景很复杂,行人重识别的主要挑战包括人体姿态变化大、遮挡严重、服装差异、背景杂乱、检测失败等。深度神经网络为行人图像带来了更加强大的、更具判别力的、鲁棒的表征,推动了重识别算法的表现提升。在过去几个月,一些深度重识别算法就取得了突破性的进步,取得了非常高的识别率和平均精度。
行人表征方法就是从画面中人的全身提取出判别特征。全局特征学习的目的是从所有不同的人中,提取出最显著的信息来代表行人的身份,比如衣服颜色。但是,监控场景的画面都很复杂,限制了大规模重识别场景下特征学习的准确度。对于规模有限、多样性低的行人重识别训练集来说,一些不显著的或低频细节信息就可能被轻易地忽略,它们在全局特征学习过程中对判别能力来说没有什么帮助,而且让全局特征很难适应某些条件,如较大的内部差异或相似的外部常见属性。
为了缓和这个困境,人们发现从图像中定位出重要的身体部分,以此来表示某个人的局部信息,这个方法比较有效,能实现更高的重识别准确率。每个定位到的身体部分只包含全身很小的一部分局部信息,而该区域外相关或不相关的信息则会被定位操作过滤掉,学习到的局部特征能更加关注于身份信息,作为全局特征的重要组成使用。根据局部定位方式不同,基于局部信息的方法可被分为3种:1) 通过强结构信息来定位局部区域,比如关于人体的经验知识或基于学习的姿态预测。2)通过候选区域方法定位局部区域。3)通过对显著区域做中间注意力来增强特征。但是,一些因素制约了这些方法的有效性。首先,姿态或遮挡变化可能会影响局部表征的可靠性。其次,这些方法通过固定的语义信息,仅关注在某些局部区域,不能涵盖所有判别的局部区域。最后,这些方法都不是端到端的,增加了学习难度。
图1. 由粗粒度到细粒度的身体局部图像。在左边一列,我们将全身的行人图片作为粗粒度。中间和右边列分别将原始的行人图像切分为2个和3个条带。图像切分的条带越多,局部细粒度就越高。
本文提出了一个特征学习策略,结合了不同细粒度的全局和局部信息。如图1所示,局部条带的个数不同,细粒度多样性就高:作者定义全局分支只包含全局信息的整个分割,粒度最粗。随着分割个数的增加,局部特征就能关注在每个条带中更细致的判别信息,过滤掉其它条带的信息。深度学习能在图像中找到人体,它也就能从不同的局部区域中找到局部特征的注意点。基于此想法,作者设计了一个多分支网络结构,MGN,包括一个全局分支和两个局部分支。在 MGN 的每个局部分支中,作者将全局池化的特征图拆分为不同个数的条带,作为局部区域来学习局部特征表示。与之前基于局部信息的方法比较,本文方法只使用了等分的条带来进行局部表示,但表现优于所有以前的方法。大量实验表明,该方法能够在多个重识别数据集上取得 SOTA 的成绩,无需任何外部数据或 re-ranking 操作。此外,该方法是完全端到端的,很容易学习和实现。作者发现 MGN 的多分支结构能够提升任意单分支的性能。
2. Related Work
深度学习的兴起推动了重识别系统的发展。[20,39]首先在重识别任务上应用了深度 siamese 网络,将身体局部特征结合起来,与之前的人工特征相比取得了更优的成绩。[45]提出了 ID-discriminative Embedding (IDE),用 ResNet-50 主干网络作为基线模型。在[1,35],计算了图像对的中间层特征,通过一定的机制来表示各局部区域间的关系。[37] 介绍了 Domain Guided Dropout ,在不同的行人场景之间增强泛化性。[8] 从多个通道中结合全局、局部特征,利用改良的 triplet loss 学习判别表示。[24,25,38,43,19,22] 在 embedding 中利用注意力信息,提升身体局部的表征判别能力。[42,32] 利用身体的结构信息来给出准确的语义局部区域。
最近几个月,一些深度重识别方法将模型的性能推到了一个新的水平。[40]介绍了一个在训练阶段的、基于局部的对齐匹配方法,它通过最短路径和互学习提升度量学习的表现。[3,34] 在垂直方向,将输入图像的特征图等分为多个条带。[3] 利用 LSTM 网络来融合局部特征分割,将分类度量学习得到的全局特征结合起来。[34] 直接将局部特征组合,得到最终的表征,使用局部池化来调整局部特征的映射。但是,根据[40]的观点,这些系统都只实现了与人类相似的表现。
3. Multiple Granularity Network
3.1 Network Architecture
MGN 的结构如图2所示。其主干网络是 ResNet50,帮助在重识别系统中取得优异表现。它与原版最明显的差异就是,作者将res_conv4_1模块后的部分拆分为了3个独立分支,与原来的 ResNet50 有着相似的结构。
图2. MGN 结构。在res_conv4_1残差模块后,ResNet-50 主干网络分为了3个部分:全局分支、Part-2 分支、Part-3 分支。测试时,将所有降维的特征组合起来,得到行人图像最终的特征表示。注意在每个分支中,用于降维的 1 × 1 1\times 1 1×1卷积和用于身份预测的全连接层彼此不共享权重。特征到每个具体损失函数的路径都代表了一个独立的监督信号。
表1 比较了这些分支的设定。在上面的分支的res_conv5_1模块,我们通过步长为2的卷积层进行下采样,对相应的输出特征图做全局最大池化,然后是一个 1 × 1 1\times 1 1×1卷积层和 BN、ReLU 操作,将 2048 2048 2048维的特征 z g G \mathbf{z}_g^G zgG降低到 256 256 256维的 f g G \mathbf{f}_g^G fgG。这个分支不需要任何的分割信息,学习全局特征表示,这样作者将这个分支叫做全局分支。
中间和下面的分支有着与全局分支相似的网络结构。不同点就是在res_conv5_1模块中没有用下采样操作,每个分支输出的特征图可水平分割为多个条带,对于每个条带独立地进行和全局分支后续一样的操作,学习局部特征表示。作者将这些分支称作Part-N 分支, N N N表示分割的个数,比如图2中,中间和下面分支叫做 Part-2 和 Part-3 分支。
表1. MGN 中三个分支的比较。这里输入图像的尺寸是 384 × 128 384\times 128 384×128。
在测试阶段,为了得到最强大的判别力,将降维后的特征组合起来,得到最终的特征,它包含了局部和全局信息,使学到的特征更完备。
3.2 Loss Function
为了释放网络结构表征的判别能力,作者在训练阶段使用了 softmax 损失用于分类,triplet loss 用于度量学习,这两个方法在深度重识别模型中都大量应用。
对于基本的判别学习,作者将识别任务看作为一个多类别分类问题。对于第 i i i个特征 f i \mathbf{f}_i fi,softmax loss 形式如下:
L s o f t m a x = − ∑ i = 1 N log e W y i T f i + b y i ∑ k = 1 C e W k T f i + b k (1) L_{softmax} = - \sum_{i=1}^N \log \frac{e^{\mathbf{W}_{y_i}^T \mathbf{f}_i + b_{y_i}}}{\sum_{k=1}^C e^{\mathbf{W}_{k}^T \mathbf{f}_i + b_{k}}} \tag{1} Lsoftmax=−i=1∑Nlog∑k=1CeWkTfi+bkeWyiTfi+byi(1)
其中 N N N是mini-batch 的大小, C C C是训练集中类别的个数。在所有的 embeddings 中,在 1 × 1 1\times 1 1×1卷积降维前,作者对全局特征使用了 softmax loss { z g G , z g P 2 , z g P 3 } \{\mathbf{z}_g^G, \mathbf{z}_g^{P_2}, \mathbf{z}_g^{P_3}\} {zgG,zgP2,zgP3},并在降维后对局部特征使用了 softmax loss { f p i P 2 ∣ i = 1 2 , f p i P 3 ∣ i = 1 3 } \{\mathbf{f}_{p_i}^{P_2} |_{i=1}^2, \mathbf{f}_{p_i}^{P_3} |_{i=1}^3\} {fpiP2∣i=12,fpiP3∣i=13}。
{ f g G , f g P 2 , f g P 3 } \{\mathbf{f}_g^G, \mathbf{f}_g^{P_2}, \mathbf{f}_g^{P_3}\} {fgG,fgP2,fgP3}降维后的所有全局特征都通过 triplet loss 训练,增强其排序能力。作者使用了 batch-hard triplet loss 来训练,它是基于原始的 semi-hard triplet loss 改进而来。该损失函数的形式为:
L t r i p l e t = − ∑ i = 1 P ∑ a = 1 K [ α + max p = 1 , . . . , K ∥ f a ( i ) − f p ( i ) ∥ 2 − min n = 1... K j = 1... P , j ≠ i ∥ f a ( i ) − f n ( i ) ∥ 2 ] + (2) L_{triplet} = - \sum_{i=1}^P \sum_{a=1}^K [\alpha + \max_{p=1,...,K} \left \| \mathbf{f}_a^{(i)} - \mathbf{f}_p^{(i)} \right \|_2 - \min_{n=1...K \atop{j=1...P,j\neq i}} \left \| \mathbf{f}_{a}^{(i)} - \mathbf{f}_{n}^{(i)} \right \|_2]_+ \tag{2} Ltriplet=−i=1∑Pa=1∑K[α+p=1,...,Kmax∥∥∥fa(i)−fp(i)∥∥∥2−j=1...P,j=in=1...Kmin∥∥∥fa(i)−fn(i)∥∥∥2]+(2)
其中 f a ( i ) , f p ( i ) , f n ( i ) \mathbf{f}_{a}^{(i)}, \mathbf{f}_{p}^{(i)}, \mathbf{f}_{n}^{(i)} fa(i),fp(i),fn(i) 是从 anchor、正样本、负样本中提取的特征。这里正负样本分别是与 anchor 身份相同或不同的行人图像。选取最远的正样本和最近的负样本来构建候选三元组,即mini-batch中最难的正负样本对。这个改进的版本增强了度量学习的鲁棒性,进一步提升模型表现。
3.3 Discussion
多分支结构。全局和局部特征用单个分支学习好像是合理的。我们直接将相同的最终特征图分割为不同的条带,然后施加对应的监督信号。但是作者发现这样做无法提升性能。作者猜测,有着相似网络结构的分支只会对图像的细节信息做响应。将多种细粒度的特征混合在一个网络中学习,可能会稀释掉细节信息的作用。此外,作者尝试将主干网络拆分开,但这样做也无益。
细粒度多样化。网络结构中的三个分支各自学习,会有不同的侧重点。全局分支的感受野更大,全局最大池化能从行人图像中获取完整但粗粒度的特征,而 Part-2 和 Part-3 分支没有用 strided 卷积,将特征图分割为条带,学到的特征会更细致、局部。分割越多的分支,学到的特征就越细致。带有不同倾向性的分支能补充低层级判别信息,提升任意单个的分支的性能。
这篇关于Learning Discriminative Features with Multiple Granularities for Person Re-Identification 论文学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!