• 多目标追踪——【Transformer】MOTR: End-to-End Multiple-Object Tracking with TRansformer


    论文链接:https://arxiv.org/abs/2105.03247

    文章侧重点

    1. 受到DERT启发,将目标检测中的 O b j e c t Object Object Q u e r y Query Query迁移到多目标追踪中,构造了 T r a c k Track Track Q u e r y Query Query。沿用DERT中的检测网络,使得 O b j e c t Object Object Q u e r y Query Query对目标的特征提取能力极具增强。
    2. 当前许多基于检测的追踪方法是先获得检测结果,跟踪检测结果去提取外观和运动,再去数据关联。本方法是一个端到端的追踪模型,
    3. MOTR为了保证时序建模的有效性,提出了基于轨迹的标签构造【tracklet-aware label assignment】训练策略+联合平均损失【collective average loss】增强模型的时序建模。

    O b j e c t Object Object Q u e r y Query Query 变成 T r a c k Track Track Q u e r y Query Query需要解决的问题

    通常来讲,虽然目标检测与目标跟踪都是CV领域,但由于下端的根本任务不同,所以直接套用肯定有问题,所以要仔细设计。

    1. 用一个 T r a c k Track Track Q u e r y Query Query追踪同一个目标。 因为DERT中的 O b j e c t Object Object Q u e r y Query Query是基于每一帧识别,每一个目标和 O b j e c t Object Object Q u e r y Query Query并不存在对应关系,如下图(a)。但多目标追踪需要对序列中每个目标生成追踪轨迹,这必然要求目标轨迹的一致性,不能发生ID Switch的问题。 这就意味着目标检测+目标轨迹匹配都要用 T r a c k Track Track Q u e r y Query Query来实现,这也是端到端的精髓了,取消后置处理。本文引入基于轨迹的标签构造【tracklet-aware label assignment】训练策略,使得用同一个ID的边界框去监督训练检测+匹配的过程。
      在这里插入图片描述
    2. 对新出现目标和消失目标的处理。 因为多目标追踪中会面临某个目标突然消失或突然出现等情况,所以固定长度的 T r a c k Track Track Q u e r y Query Query并无法满足实际的需求。故本文提出了两个变量集合—— T r a c k Track Track Q u e r y Query Query(可变长度)和 D e t e c t Detect Detect Q u e r y Query Query(固定长度)来处理目标出现和消失等情况。 如上图(b),对于每一帧都要迭代式更新 T r a c k Track Track Q u e r y Query Query,将消失的目标将其对应的 T r a c k Track Track Q u e r y Query Query删去,并且每一帧用 D e t e c t Detect Detect Q u e r y Query Query检测该帧有多少目标,新目标通过 D e t e c t Detect Detect Q u e r y Query Query检测出来加入 T r a c k Track Track Q u e r y Query Query的集合中。具体过程如下图所示:
      在这里插入图片描述

    总体网络结构——时序融合网络

    在这里插入图片描述
    可以看到,上图的结构解析如下:

    1. Enc 表示特征提取阶段:Backbone网络+Deformable DERT的Encoder;
    2. Dec 表示Deformable DERT的Decoder。
      • 在第一帧由于追踪目标还未出现,故输入是固定长度的 q d q_d qd和为空集的 q t r q_{tr} qtr,而后续帧的输入就是 q d q_d qd和上一帧传递的 q t r q_{tr} qtr
      • 输出是中间态特征,用于生成追踪预测结果和QIM的输入。

    QIM——Query交互模块

    在这里插入图片描述
    此模块的作用是处理目标的出现和消失等情况。图中的分数表示Head预测追踪目标的分类得分。

    • 输入:Decoder输出的中间态特征,如上图最左侧输入。黄色部分表示 q d q_d qd,橙色为 q t r q_{tr} qtr
    • 第一步:将其和Head预测追踪目标的分类得分,分别输入到处理(a)目标出现、(b)目标消失两个分支中。这里分别设定了两个阈值作为filter,筛选有效的query。
    • 第二步:对于 (a)目标出现分支中,将分类分数大于阈值的检测目标视为新增目标。
    • 第三步:对于 (b)目标消失分支中,当筛选出新的 T r a c k Track Track Q u e r y Query Query之前,要经过 【时序增强网络】TAN ,该网络本质是一个self-attention机制。输入是本帧的目标query q t r i q_{tr}^i qtri、第一步(b)分支输出的中间态特征。该输出是下一帧的追踪目标。
    • 输出:第二步与第三步的输出拼接起来为下一帧的追踪目标 q t r i + 1 q_{tr}^{i+1} qtri+1

    训练逻辑

    Tracklet-Aware Label Assignment

    【目的是为 T r a c k Track Track Q u e r y Query Query 对轨迹与目标的一对一关系建模。】
    TALA 有两种策略,分别对应着 D e t e c t Detect Detect Q u e r y Query Query T r a c k Track Track Q u e r y Query Query的训练策略

    • 针对 D e t e c t Detect Detect Q u e r y Query Query :沿用DERT中的检测策略专门来检测追踪序列中每一帧出现的新目标。训练策略是对于 D e t e c t Detect Detect Q u e r y Query Query与新增目标的GroundTruth进行双向匹配。
      在这里插入图片描述

    • 针对 T r a c k Track Track Q u e r y Query Query :本文设计一个目标一致的训练策略。本帧的 T r a c k Track Track Q u e r y Query Query由上一帧的 T r a c k Track Track Q u e r y Query Query+ D e t e c t Detect Detect Q u e r y Query Query。对于第一帧, T r a c k Track Track Q u e r y Query Query为空集。
      在这里插入图片描述

    Collective Average Loss

    【目的是为 T r a c k Track Track Q u e r y Query Query 对时序信息的传递进行前后帧建模。】
    通常的训练策略是计算帧的loss,如此策略忽略了序列中存在的关于目标的运动信息。故本文设计了一个联合平均损失预测以video clip为基本单位的损失。联合平均损失=(单帧的追踪损失+单帧的检测损失)之和 / 帧数。
    在这里插入图片描述

    与强同学。
    在这里插入图片描述

  • 相关阅读:
    html 菜单点击切换样式,菜单<a> 控制iframe
    直击永悦科技半年报:双轮驱动下的“增长曲线”
    eslint如何支持uniapp的全局对象uni 和 H5+的plus 以及浏览器的全家对象 windows等...
    Qt QSVG使用详解
    JVM基础
    vue 编程式导航
    【Python】构建一个智能图书管理系统
    访问控制列表ACL讲解——想偷偷访问数据,我ACL可不同意
    2022年9月19日--9月25日(ue4热更新视频教程为主,)
    leetcode第509题python版斐波那契数列动态规划法
  • 原文地址:https://blog.csdn.net/qq_42312574/article/details/127625903