Pyramidal Person Re-Identification via Multi-Loss Dynamic Training

Pyramidal Person Re-Identification via Multi-Loss Dynamic Training

论文:Pyramidal Person Re-IDentification via Multi-Loss Dynamic Training,cvpr,2019.

链接:paper

代码:github

摘要

论文指出基于特征图水平切块(part-based)的行人重识别很大程度上依赖于目标检测算法的优劣。差的目标检测算法由于无法精确的框出行人,导致在进行局部特征相似度计算和分类时不准确。 论文提出特征图金字塔由粗到细的整合全局和局部特征,并逐渐集成二者之间的线索,从而缓解了精确Box和不对齐的情况。论文同时指出,多任务训练可以提升模型的泛化能力,但是在具体的训练过程中,损失函数的训练目标往往不一致。在行人重识别中,经常使用交叉熵损失和困难三元组损失同时优化模型参数,根据先验知识理解,交叉熵损失函数通过优化模型参数,寻找优异的高维分类平面;triplet loss适合在自由的欧式空间里约束。而且对于这两个损失函数,在训练刚开始的时候,主要依靠交叉熵损失,等到后期难以识别的样本出现,现在三元组损失才真正发挥作用。如果简单地对两个损失函数赋予固定的权重,就不合适了,因此论文提出动态权重损失函数。

引言

由于基于部件的模型存在问题,且在培训中存在困难,现有方法的性能改进空间有限. 众所周知,在许多计算机视觉任务中,基于部分的模型通常可以获得很好的性能,因为这些模型对一些不可避免的挑战(如遮挡和部分变化)具有潜在的健壮性。实际上,person Re-ID在实际应用中的性能受到这些挑战的严重影响。因此,最近提出的基于部件的卷积基线(PCB)[24]可以达到最先进的结果。PCB是简单但非常有效,甚至可以超越其他学习零件模型。然而,在PCB中,直接将骨干网映射成固定数量的部件,严格限制了进一步提高性能的能力。它至少有两个主要的缺点,但不限于:1)整体性能严重依赖于一个强大而健壮的行人检测模型输出一个精确的边界框,否则零件不能很好的对齐。然而,在大多数具有挑战性的场景中,现有的检测模型不足以做到这一点。2)全局信息作为识别和识别的重要线索,在该模型中被完全忽略,而全局特征通常对细微的视图变化和内部变化具有很强的鲁棒性。

最近的研究[10,9]表明,多任务学习能够通过提取任务之间适当的共享信息来实现高级性能。在不损失一般性的情况下,术语“损失”和“任务”将交替使用。事实上,许多现有的reid方法[26]也受益于多损失方案来提高性能。通常情况下,大多数多任务方法选择在整个训练过程中使用固定的平衡参数来权衡损失。1)性能高度依赖于合适的参数,而选择合适的参数无疑是一项劳动密集型、技巧性强的工作。2)当模型逐步更新时,不同任务的难度实际上是变化的,导致不同迭代的适当参数确实存在差异。3)更重要的是,由于具体的考虑,不同损失的抽样策略通常是不同的。例如,对三重态损耗的硬采样会抑制识别损耗的另一任务的作用。 针对上述问题,本文提出了一种基于骨干网提取的特征图的coarse-to-fine pyramidal modle,用于人的再识别。首先,金字塔实际上是一组三维的子地图,具有特定的由粗到精的架构,其中每个成员捕获不同空间尺度的区别信息。然后,使用卷积层来减少金字塔中每个分支的特征维数。其次,对于每个分支,将一个softmax函数的识别损失独立地应用于一个将特征作为输入的全连接层。此外,所有分支的特征将被连接起来形成一个身份表示,定义一个三重损失来学习更多的鉴别特征。为了使这两种损失能够平滑地融合在一起,研究了一种具有两种采样策略的动态训练方案来优化深度神经网络的参数。最后,将该方法应用于人脸图像的匹配、检索和再识别。

本文的主要贡献:

  • 1)为了放宽对强检测模型的要求,我们提出了一种新颖的由粗到细的金字塔模型,该模型不仅融合了局部和全局信息,而且融合了局部和全局信息之间的渐进线索。
  • 2)为了最大限度地利用不同的损失,我们探索了一种动态训练方案,将两个损失无缝地统一起来,提取它们之间适当的共享信息,以学习区别身份表示。
  • 3)所提出的方法在三个数据集上都达到了最新的结果,最重要的是,我们的方法在CUHK03数据集上超过了目前最好的方法9.5%

文中主要提出了两个思想:(1)图像局部和整体的信息都很重要,要联合使用。(2)在训练的过程中,损失函数的权重应该是动态变化的。

模型结构

1、图像的分块和信息的利用:

对于行人重识别中图像的分块重要性我们已经熟知,但是通常是块与块之间的匹配,这样的做法不够严谨,于是作者使用了如下的分块方法。

img

看模型图中绿色的部分,将三维的feature map 分块(图中为了简便,将三维画成了二维),将其分成了6块。分为6层,21个独立的feature map。

第一层:123456

第二层:12345、23456

第三次:1234、2345、3456

第四层:123、234、345、456

第五层:12、23、34、45、56

第六层:1、2、3、4、5、6

对21个feature map 分别进一步提取特征向量,并使用交叉熵损失(ID loss),再将21 个特征向量连接,使用三元组损失。

很简单的方式,不需要额外的进行语义分割,但是实验效果非常好。

损失函数权重的动态变化

通常的做法是根据实验结果选择固定的损失函数权重。但是,在实际的训练过程中,损失函数的地位是动态变化的。比如,最开始的时候,模型还是懵懂阶段,对于它来说,所有的样本都很难识别。那么这个时候三元组损失就没什么意义。在最后的阶段,一些难以识别的样本渐渐浮出水面,那么三元组损失就变得重要起来。
注意:并不是说,交叉熵损失越来越不重要,三元组损失越来越重要,这是一个复杂的动态变化过程。
进一步,作者认为不同的损失函数应该对应不同的采样方法

比如,使用随机采样(下文的random sampling),行人身份众多,同一个label的图像很难采到两个及以上。举个例子,batchsize是8,用数字代表图像的label,那么一个batch的样本很可能是这样的:341,700,123,561,336,59,291,665。这样的话,三元组损失就没什么意义了,因为要存在正样本对。所以作者使用了ID-balanced hard triplet sampling,batchsize为64,每次取8个label,一个label取8张图。但是这种采样方式使得不足8张图的label不会被取到,所以需要两种采样结合使用。

具体做法如下:

img

FL(tp)和FL(id)可以分别理解为三元组损失和交叉熵损失在当前迭代中的重要程度。当交叉熵更重要时,使用random sampling+交叉熵损失。当三元组更重要时,使用ID-balanced hard triplet sampling+两个损失函数的加权组合。这就是一个权重动态变化的过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值