【目标跟踪】2、FairMOT | 平衡多目标跟踪中的目标检测和 Re-ID 任务 | IJCV2021

文章目录

    • 一、背景
    • 二、方法
      • [2.1 Backbone](#2.1 Backbone)
      • [2.2 检测分支](#2.2 检测分支)
      • [2.3 Re-ID 分支](#2.3 Re-ID 分支)
      • [2.4 训练 FairMOT](#2.4 训练 FairMOT)
      • [2.5 Online Inference](#2.5 Online Inference)
    • 三、效果
      • [3.1 数据集](#3.1 数据集)
      • [3.2 实现细节](#3.2 实现细节)
      • [3.3 消融实验](#3.3 消融实验)
      • [3.4 最终效果](#3.4 最终效果)

论文:FairMOT: On the Fairness of Detection and Re-Identification in Multiple Object Tracking

代码:https://github.com/ifzhang/FairMOT

出处:IJCV2021

一、背景

Multi-object tracking (MOT) 任务是什么:

  • 估计视频中感兴趣目标的运动轨迹

MOT 的重要性,在计算机视觉中是一个很重要的任务:

  • 有利于智能视频分析
  • 人机交互

当时的方法是怎么解决 MOT 任务的

  • 很多方法将 MOT 任务构建成了一个多任务学习的模型,包括:
    • 目标检测
    • reid

但作者认为,这两个任务是相互竞争的

之前的方法一般都是将 reid 作为检测后的第二个任务,其效果会被目标检测的效果影响,且网络一般都是偏向第一阶段的目标检测网络,对 reid 很不公平,而且两阶段的 MOT 方法难以实现实时推理,原因在于当目标数量很多时,这两个模型是不共享特征的,reid 模型需要对每个框都提取特征

所以,后面就出现了单阶段的追踪方法,使用一个模型来学习检测和 reid 的特征:

  • Voigtlaender(在 Mask RCNN 中增加了一个 reid 分支,给每个 proposal 都学习 reid 特征,虽然提升了速度,但效果远远比不上两阶段方法,一般都是检测效果很好,但追踪效果变差

所以本文作者首先探讨了上述问题出现的原因:

  • anchors:anchor 原本是为目标检测设计的,不适合用于对 reid 特征的学习
    • 基于 anchors 的方法需要为待检测的目标生成 anchors,然后基于检测结果来抽取 reid 特征,所以,模型在训练时候就会进入 "先检测,后 reid" 的模式,reid 特征就会差一些
    • 而且 anchor 会为 reid 特征的学习带来不确定性,尤其是在拥挤场景,一个 anchor 可能对应多个个体,多个 anchor 也可能对应一个个体
  • 特征共享:这两个任务所需要的特征是不同的,所以不能直接进行特征共享
    • reid 需要更 low-level 的特征来识别同一类别不同实例间的有区分力的特征
    • 目标检测需要高层和低层信息结合来学习类别和位置
    • 单阶段目标追踪方法会产生特征冲突,降低效果
  • 特征维度:(reid 需要更高维的特征,MOT 需要低维的特征即可)
    • reid 特征一般使用的特征维度为 512 或 1024,远远大于目标检测的维度(一般为 类别+定位),所以降低 reid 特征的维度有利于两个任务的平衡
    • MOT tracking 和 reid 是不同的,MOT 任务只需要对前后帧目标进行一对一的匹配,reid 需要更有区分力的高维特征来从大量的候选样本中匹配查询样本,MOT 是不需要高维特征的
    • 低维度的 reid 特征会提高推理速度

本文提出了公平的方法 FairMOT:基于 CenterNet

  • 将目标检测和 reid 同等对待,而不是先检测后 reid 的模式
  • 不是对 CenterNet 和 REID 的简单结合

FairMOT 的结构图如图 1 所示:

  • 由两个分支组成,分别来进行目标检测和抽取 reid 特征
  • 目标检测分支是 anchor-free 的,是基于特征图来预测特征的中心点和尺寸
  • reid 分支为每个目标中心位置预测 reid 特征
  • 这样的两个分支并列的而非串联的,能更好的平衡这两个任务

二、方法

2.1 Backbone

作者使用 ResNet-34 作为基础 backbone,能更好的平衡速度和精度

还可以使用 DLA 来实现更强版本

2.2 检测分支

检测分支使用 CenterNet,centerNet 包含一个 heatmap head,一个 wh head,一个 offset head

2.3 Re-ID 分支

作者在 backbone 输出特征的基础上,构建了 reid 分支:

  • reid 分支提取的特征,在不同目标上距离远,在相同目标上的距离近
  • 所以作者使用 128 kernel 为特征图上的每个位置来抽取 reid 特性,得到的特征为 128xHxW

Re-ID loss:

reid 特征的学习方式被规范为分类任务,同一个个体的不同实例都被认为是同一类别

对一张图中的所有 gt 框,会得到其中心点位置,然后会抽取 reid 特征,并使用全连接层和 softmax 操作来将其映射为分类特征

假设 gt 类别向量为 L,预测的为 p,则 reid loss 为:

  • K 是训练数据中所有个体的数量
  • 在训练中,只有在目标中心的个体特征会参与训练

2.4 训练 FairMOT

作者联合训练检测和 reid 分支,将所有 loss 加起来

注意:作者使用了 uncertainty loss 来自动平衡两个任务:

  • w 1 w_1 w1 和 w 2 w_2 w2 是可学习参数,用于平衡两个任务

此外,作者还提出了 single image training method 来在 image-level 目标检测数据集上训练了 FairMOT(如 COCO、CrowdHuman 等)

  • 作者每次只属于一个图片,将图像中每个目标都当做独立的个体,将每个 bbox 都当做一个单独的类别

2.5 Online Inference

1、网络推理

  • 输入 1088x608
  • 对预测的 heatmap,基于 heatmap score 来进行 NMS 过滤,来抽取峰值关键点(NMS 是 3x3 最大池化),保留大于阈值的 keypoint
  • 基于保留下来的关键点和 wh、offset 分支来计算 box 尺寸

2、Online Association

  • 首先,将第一帧检出的检测框建立为 tracklet(短轨迹)
  • 之后,在后面的每一帧,都会使用 two-stage 匹配策略来将检出的 bbox 和 tracklet 匹配
    • 匹配策略第一阶段:使用 Kalman 滤波和 reid 的特征来得到初始追踪结果,使用 Kalman 滤波是为了预测后面的帧的 tracklet 位置,并且计算预测框和检测框的 Mahalanobis distance ( D m D_m Dm)。然后将 D m D_m Dm 和余弦距离进行融合, D = λ D r + ( 1 − λ ) D m D=\lambda D_r + (1-\lambda) D_m D=λDr+(1−λ)Dm, λ = 0.98 \lambda=0.98 λ=0.98 是权重。当 D m D_m Dm 大于阈值 τ 1 = 0.4 \tau_1 = 0.4 τ1=0.4 时,被设置为无穷大
    • 匹配策略第二阶段:对没匹配上的检测结果和 tracklet,作者会使用 box 之间的重合率来进行匹配,阈值 τ 2 = 0.5 \tau_2 = 0.5 τ2=0.5,会更新 tracklets 的特征
  • 最后,会给没匹配上的检测结果重新初始化,并且对没有匹配上的 tracklets 保留 30 帧

三、效果

3.1 数据集

训练数据集:

  • ETH 和 CityPerson:只有 box 的标注信息,故被用于训练检测分支
  • CalTech、MOT17、CUHK-SYSU、PRW 有 box 和 identity 标注信息,可以训练两个分支

测试数据集:

  • 2DMOT15、MOT16、MOT17、MOT29

测评方式:

  • 检测效果:mAP
  • reid 特征:True Positive Rate, false accept rate =0.1(TPR@FAR=0.1)
  • 整个追踪效果:CLEAR、IDF1

3.2 实现细节

  • 使用 DLA-34 的变体作为 backbone,在 COCO 上预训练后的模型来作为初始模型
  • 优化器:Adam,初始学习率 1 0 − 4 10^{-4} 10−4
  • epoch:30,在 20 epochs 的时候学习率降低到 1 0 − 5 10^{-5} 10−5
  • batch size:12
  • 输入数据大小:1088x608(特征图的分辨率为 272x152)

3.3 消融实验

3.4 最终效果

相关推荐
小于小于大橙子2 小时前
视觉SLAM数学基础
人工智能·数码相机·自动化·自动驾驶·几何学
封步宇AIGC4 小时前
量化交易系统开发-实时行情自动化交易-3.4.2.Okex行情交易数据
人工智能·python·机器学习·数据挖掘
封步宇AIGC4 小时前
量化交易系统开发-实时行情自动化交易-2.技术栈
人工智能·python·机器学习·数据挖掘
陌上阳光4 小时前
动手学深度学习68 Transformer
人工智能·深度学习·transformer
OpenI启智社区4 小时前
共筑开源技术新篇章 | 2024 CCF中国开源大会盛大开幕
人工智能·开源·ccf中国开源大会·大湾区
AI服务老曹4 小时前
建立更及时、更有效的安全生产优化提升策略的智慧油站开源了
大数据·人工智能·物联网·开源·音视频
YRr YRr4 小时前
PyTorch:torchvision中的dataset的使用
人工智能
love_and_hope5 小时前
Pytorch学习--神经网络--完整的模型训练套路
人工智能·pytorch·python·深度学习·神经网络·学习
思通数据5 小时前
AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例
大数据·人工智能·目标检测·计算机视觉·自然语言处理·数据挖掘·ocr
兔老大的胡萝卜5 小时前
关于 3D Engine Design for Virtual Globes(三维数字地球引擎设计)
人工智能·3d