热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

多目标追踪——【Transformer】MOTR:EndtoEndMultipleObjectTrackingwithTRansformer

目录文章侧重点将ObjectObjectObjectQueryQueryQuery变成TrackTrackTrackQueryQueryQuery需要解决的问题总体网络结构——时序




目录


  • 文章侧重点





  • 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
    需要解决的问题
  • 总体网络结构——时序融合网络
    • QIM——Query交互模块

  • 训练逻辑
    • Tracklet-Aware Label Assignment
    • Collective Average Loss



论文链接: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
    。这个出发点也决定MOTR也是一个基于检测的追踪。
  2. 当前许多基于检测的追踪方法是外观建模+运动建模 (后置处理,如卡尔曼滤波等),而MOTR提出了时序融合网络,利用




    T


    r


    a


    c


    k



    Track


    Track





    Q


    u


    e


    r


    y



    Query


    Query
    的逐帧更新,同时对外观和运动建模。
  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为基本单位的损失。联合平均损失=(单帧的追踪损失+单帧的检测损失)之和 / 帧数。
在这里插入图片描述

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







推荐阅读
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 解决Element UI中Select组件创建条目为空时报错的问题
    本文介绍如何在Element UI的Select组件中使用allow-create属性创建新条目,并处理创建条目为空时出现的错误。我们将详细说明filterable属性的必要性,以及default-first-option属性的作用。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
author-avatar
淡淡木香coolgirl
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有