Learning Discriminative Features with Multiple Granularities for Person Re-Identification 论文学习

本文主要是介绍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=1Nlogk=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\} {fpiP2i=12,fpiP3i=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=1Pa=1K[α+p=1,...,Kmaxfa(i)fp(i)2j=1...P,j=in=1...Kminfa(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 论文学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/805318

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个