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、图像的分块和信息的利用:

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

看模型图中绿色的部分,将三维的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不会被取到,所以需要两种采样结合使用。

具体做法如下:

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

Pyramidal Person Re-Identification via Multi-Loss Dynamic Training相关推荐

  1. 1、non-finite loss, ending training tensor(nan, device=‘cuda:0‘,2、‘LogSoftmaxBackward3、Function ‘MulB

    WARNING: non-finite loss, ending training tensor(nan, device='cuda:0', grad_ 错误1:WARNING: non-finite ...

  2. 论文阅读|训练过程中动态改变训练方案的Dynamic R-CNN

    目录 论文相关信息 Abstract. 1 Introduction 2 Related Work 3 Dynamic Quality in the Training Procedure 3.1 Pr ...

  3. Dynamic Few-Shot Visual Learning without Forgetting

    摘要 人类视觉系统有显著的能力去毫不费力的从零样本示例中学习新颖概念.机器学习视觉系统上模仿相同的行为是一个有趣的非常具有挑战性的研究问题,这些研究问题有许多实际的优势在真实世界视觉应用上.在这篇文章 ...

  4. 目标检测-损失函数Loss

    文章目录 前言 范数损失函数 IOU损失函数 IOU loss (2016) GIOU loss (2019) DIOU loss (2020) CIOU loss (2020) EIOU loss ...

  5. 目标检测 | RetinaNet:Focal Loss for Dense Object Detection

    论文分析了 one-stage 网络训练存在的类别不平衡问题,提出能根据 loss 大小自动调节权重的 focal loss,使得模型的训练更专注于困难样本.同时,基于 FPN 设计了 RetinaN ...

  6. Center Loss的Pytorch实现

    Center Loss的Pytorch实现 开始 结果 在自己的项目中使用中心损失函数 Center Loss的Pytorch实现: Wen et al. A Discriminative Featu ...

  7. 【翻译】Focal Loss for Dense Object Detection(RetinaNet)

    [翻译]Focal Loss for Dense Object Detection(RetinaNet) 目录 摘要 1.介绍 2.相关工作 3.Focal Loss 3.1 平衡的交叉熵损失 3.2 ...

  8. 【CV】RetinaNet:使用二分类类别不平衡损失 Focal Loss 实现更好的目标检测

    论文名称:Focal Loss for Dense Object Detection 论文下载:https://arxiv.org/abs/1610.02357 论文年份:ICCV 2017 论文被引 ...

  9. 深度学习:可视化-结果loss acc可视化及测试数据显示

    文章预览: 1.可视化train,test的loss acc 1.1 案例:交通指示牌识别案例-history数组 1.2 一张图两条曲线loss 写法总结 step1 定义数组 step2 添加数据 ...

最新文章

  1. MySQL 备份和恢复策略
  2. android 回调函数二:应用实例
  3. 深入分析 Redis Lua 脚本运行原理
  4. oracle 优化之批量处理bulk correct 和 forall
  5. 车辆管理系统之开始自己的任务(三)
  6. C/C++常见报错问题描述及解决方案
  7. Jetty在win10上的配置,IDEA中配置Jetty,Maven中配置Jetty插件,Eclipse中配置Jetty插件及其使用,通过java代码内嵌Jetty Server
  8. 全国计算机等级考试题库二级C操作题100套(第42套)
  9. a.hashCode() 有什么用?与 a.equals(b)有什么关系?
  10. Ajax之跨域访问与JSONP
  11. 第五周作业:瀑布模型
  12. abb机器人指令手册_ABB机器人常见故障
  13. 计算机二级的图片尺寸,2021计算机二级照片是几寸 大小千万要记住咯
  14. 通过qmh启动qt应用
  15. 计算机网络第七版笔记--第一章
  16. android 清理工具,安卓清理君深度清理软件/真心强
  17. 【2011集训队出题】跳跳棋
  18. Java逐行读取fasta文件
  19. 兰州交通大学php,航拍兰州交通大学校园∣让我再看你一遍 从南到北
  20. Kafka-Eagle中的ke数据库创建

热门文章

  1. 登录重放攻击_重放攻击(Replay Attacks)
  2. Delegate使用方法
  3. win7系统IE11浏览器导致页面无法点选日期解决方法:
  4. 《layui宇宙版教程》:轮播组件carousel
  5. 最小方差无偏估计和有效估计
  6. 关于微信公众平台的服务器配置和token验证接口
  7. 107. 进程间通信 - 信号灯集信号量实现进程间同步通信
  8. Java项目:JSP在线宁夏葡萄酒销售商城
  9. 服务器相关的指标解释
  10. 如何通过AI性格分析填补虚拟试用市场的空缺?