Multi-Object Tracking with Multiple Cues and Switcher-Aware Classification 论文笔记

2023-11-06

Multi-Object Tracking with Multiple Cues and Switcher-Aware Classification 似乎是商汤投 CVPR2019的论文。文中提出了一个统一的多目标跟踪(MOT)框架,学习充分利用长期和短期线索来处理 MOT 场景中的复杂情况。在现实系统中,可以认为每个组件都是不可靠的,所以作者联合多个模块交叠使用。现行方案中,检测器用于发现,ReID 进行识别。ReID 抠图依赖于检测,但尚未由模块能有效纠正检测器的疏漏,使得系统在入口处存在瓶颈。为此,框架中引入了商汤之前独步天下的单目标跟踪器 SiamRPN,具备部分发现和识别功能,弥合其他组件产生的纰漏。此外,为了更好地关联,论文提出了切换器感知分类(switcher-aware classification,SAC),它考虑了潜在的身份切换引起者(切换器)。比较诡异的是 SOT 和 ReID 均为方形输入,与行人抠图比例相去甚远。

系统组成:
Detector、SOT、IQA(Image Quality Assessment)、ReID、SAC、MCF、Kalman Filter。

  • Detector:MOT16中使用与 POI 相同的检测器,MOT17中使用更严格的 NMS 和质量过滤器调整结果。
  • SOT:SiamRPN,修改了 anchor,使用私有行人数据(100min)调整网络,根据匹配情况计算跟踪质量。方形输入导致图像拉伸?
  • IQA:Resnet-18,使用 MOT16中的7段视频训练。输入尺寸未提及。
  • ReID:修改版 Inception-v4,使用私有行人数据(100min),输入为224x224。
  • SAC:基于 XGBoost,使用 MOT16中的7段视频训练。
  • MCF:最小费用流算法。
  • Kalman Filter:平滑轨迹。

3. 所提框架

问题的形成
一个被跟踪目标的轨迹可以用 X = { X t } X = \{X_t\} X={Xt} 表示,其中 X t = [ X t x , X t y , X t w , X t h ] X_t = [X_t^x, X_t^y, X_t^w, X_t^h] Xt=[Xtx,Xty,Xtw,Xth] t t t 是帧索引 , X t x , X t y X_t^x, X_t^y Xtx,Xty 是边界框的左上角坐标, X t w , X t h X_t^w, X_t^h Xtw,Xth 是边界框的宽度和高度。 q X q_X qX 是目标 X X X 的整体跟踪质量, I t X I_t^X ItX 是目标 X X X 在帧 t t t 处的外观。

3.1 整体设计

Detector
SOT
IQA
ReID
SAC
SAC
MCF
frame
D_det
D_track
IoU score
K frames
history cosine similarity
matching scores
Bipartite Graph

该框架在线模式使用以下步骤:

  • 步骤1. 最初,跟踪目标集 S \mathcal{S} S 设置为空, t = 1 t = 1 t=1
  • 步骤2. 在第 t t t 帧,对于目标 X X X,使用 SOT 子网络在下一帧 I t + 1 I_{t + 1} It+1 中搜索目标模板 E X E_X EX。SOT 子网络在 I t + 1 I_{t+1} It+1 中为模板输出最可能的位置 D t r a c k D_{track} Dtrack
  • 步骤3. 对于 I t + 1 I_{t+1} It+1 中的检测结果 D d e t D_{det} Ddet,ReID 子网络使用其对应的检测图像区域 I t + 1 , D d e t I_{t + 1,D_{det}} It+1Ddet 以及目标历史外观 { I t i X } , i = 1 , 2 , . . . , K \{I_{t_{i}}^X\}, i=1,2,...,K {ItiX},i=1,2,...,K 来提取长期 ReID 特征。
  • 步骤4. SOT 在步骤2中找到的目标 D t r a c k D_{track} Dtrack 的位置、检测器找到的位置 D d e t D_{det} Ddet 以及步骤3中获得的 ReID 特征组合为目标的匹配特征。
  • 步骤5. 找到目标 Λ \Lambda Λ 的潜在切换器,即最可能的身份切换引起者,并提取其 SOT 和 ReID 特征。
  • 步骤6. 借助切换器的匹配特征,切换器感知分类器(SAC)使用目标的匹配特征来生成关于检测结果是否与目标匹配的匹配分数。对于帧 I t + 1 I_{t+1} It+1 中的每个检测结果重复该步骤,以便获得它们与被跟踪目标的匹配分数。%SAC 由 Ω \Omega Ω 表示。
  • 步骤7. 利用跟踪到的目标与步骤6中找到的检测结果之间的匹配分数,构建已跟踪目标和检测结果的二分图。使用最小费用网络流查找图的匹配结果。
  • 步骤8.
    • 对于匹配的目标,使用匹配到的检测信息更新位置和模板。
    • 对于不匹配的目标,使用 SOT 结果更新跟踪器位置,并丢弃认为不可靠或丢失的目标。
    • 对于孤立的检测结果,如果它们的置信度分数满足新目标的条件,则将它们添加到跟踪目标集合中。
  • 步骤9.通过设置 t = t + 1 t = t + 1 t=t+1,重复下一帧的步骤2到8,直到不再有帧到达。

3.2 用于 SOT 的 Siamese-RPN 架构

基础跟踪器
我们在框架中使用 Siamese-RPN 跟踪器来提取短期线索。按照最初的模式,当前帧的模板 E X E_X EX 也被称为示例,调整为 127 × 127 127\times 127 127×127 大小。在下一帧中搜索目标,搜索区域 R R R 将根据 X X X 的位置从帧 I t + 1 I_{t+1} It+1 中裁剪,然后调整为 255 × 255 255\times 255 255×255。具体而言,搜索区域的图像比例与示例相同。如下图所示,搜索区域和示例通过共享权重的孪生 CNN 传递。然后,示例和搜索区域的 CNN 特征后接两个分支,每个分支由两个卷积层组成。一个分支用于获取分数图,另一个分支用于边界框回归。假定搜索区域中示例的正确位置对应于得分图上的分数最高。不同位置的边界框回归应指向此正确位置。
sot
图3. SOT 的 Siamese-RPN 架构。

短期特征生成
SOT 子网络输出 SOT 分数和预测的边界框,称为 SOT 框。要匹配的检测边界框称为检测框。我们将 SOT 分数表示为 p p p,SOT 框表示为 D t r a c k D_{track} Dtrack,检测框表示为 D d e t D_{det} Ddet,然后短期特征 f s f_s fs 计算如下:
f s ( D t r a c k , D d e t ) = I o U ( D t r a c k , D d e t ) f_s(D_{track}, D_{det}) = IoU(D_{track}, D_{det}) fs(Dtrack,Ddet)=IoU(Dtrack,Ddet)
用于 MOT 跟踪的干扰者感知 SOT 跟踪器
为了最大化 Siamese-RPN 的效果。我们修改锚点以适应行人的目标尺度。此外,我们使用行人数据改进网络。SOT 跟踪器的另一个问题是,如果目标丢失,很难判断何时停止跟踪。 当跟踪器漂移到背景干扰者时,跟踪器可能无法停止跟踪干扰者。为了使跟踪器得分能够感知干扰者,我们设计了跟踪得分优化策略。 我们使用在3.1节中步骤7找到的匹配结果来细化跟踪器得分。对于目标 X X X,精确的整体跟踪质量 q X q_X qX 如下:
q X , t + 1 = { q X , t + I o U ( D t r a c k , D d e t ) ⋅ p 2 , i f   m a t c h e d , q X , t ⋅ d e c a y ⋅ p k , o t h e r w i s e , q_{X, t+1} = \left\{ \begin{array}{rcl} \frac{q_{X, t} + IoU(D_{track}, D_{det})\cdot p}{2}, \mathrm{if\ matched,}\\ q_{X, t} \cdot decay \cdot p^k, \mathrm{otherwise,} \end{array} \right. qX,t+1={2qX,t+IoU(Dtrack,Ddet)p,if matched,qX,tdecaypk,otherwise,

其中 d e c a y decay decay k k k 是用于处理不一致目标的超参数, D d e t D_{det} Ddet 是检测框。这样,如果跟踪质量 q X q_X qX 低于阈值 ζ t \zeta_{t} ζt,我们就会丢弃不可靠的目标。

3.3 使用 ReID 网络获得长期线索

我们使用 GoogLeNet Inception-v4的修改版本作为 ReID 子网的主干 CNN。ReID 特征从分类之前的最后一个FC层中提取。Table 1和 Table 2展示了主干 CNN 的详细信息。为从目标的 tracklet 历史记录中选择 K K K 张图像,我们设计了一种质量感知机制。
Table 1Table 2
为了获得高质量的长期线索,我们使用质量过滤器在过去的 K K K 段时期内选择 K K K 张最佳图像,以确保质量和鲁棒性。所选 K K K 帧图像构成目标跟踪历史记录,其索引为 H = { t 1 … , t K } \mathcal{H}=\{t_1 \ldots, t_K\} H={t1,tK}。我们选择的 K K K 帧定义如下:
t i = arg ⁡ max ⁡ t − i δ < t ^ ≤ t − ( i − 1 ) δ Q ( I t ^ X ) , i = 1 , 2 , . . . , K t_i = \mathop{\arg\max}_{t - i\delta < \hat{t} \leq t - (i-1)\delta} \mathop{Q}(I_{\hat{t}}^X) , i = 1, 2, ..., K ti=argmaxtiδ<t^t(i1)δQ(It^X),i=1,2,...,K

其中 Q Q Q 网络输出质量得分,使用 Resnet-18模型实现。 I t X I_{t}^X ItX 是帧 t t t 上目标 X X X 的图像区域。超参数 δ \delta δ 决定选择间隔。

例如,当 i = 1 i=1 i=1 时,从帧 t , t − 1 , . . . , t − δ + 1 t, t-1, ..., t-\delta+1 t,t1,...,tδ+1 中选择质量得分最高的作为 t 1 t_1 t1。当 i = 2 i=2 i=2 时, t 2 t_2 t2 t − δ , t − δ − 1 , . . . , t − 2 δ + 1 t-\delta, t-\delta-1, ..., t-2\delta+1 tδ,tδ1,...,t2δ+1 中选择。因此, t i t_i ti 中的 i i i 对应于不同的步幅和搜索范围。

长期特征生成
选择 K K K 张图像后,将所有这些图像和需匹配的检测结果馈送到 ReID 子网络并输出其 ReID 特征。然后我们可以获得目标 K K K 条长期特征,如下所示:
F l X = { f l ( A t i X , A d e t ) ∣ i = 1 , … , K } , where  f l ( A t i X , A d e t ) = A t i X T ⋅ A d e t ∣ A t i X ∣ ∣ A d e t ∣ , \mathcal{F}^X_l = \{f_l(A_{t_i}^X, A_{det})| i=1, \ldots, K\}, \\ \textrm{where } f_l(A_{t_i}^X, A_{det}) = \frac{{A_{t_i}^X} ^\textrm{T} \cdot A_{det}}{\left | A_{t_i}^X \right | \left | A_{det} \right |}, FlX={fl(AtiX,Adet)i=1,,K},where fl(AtiX,Adet)= AtiX AdetAtiXTAdet,
A t i X A_{t_i}^X AtiX 是从目标 X X X 的跟踪记录中选择的第 i i i 张图像的 ReID 特征向量, A d e t A_{det} Adet 是检测结果的 ReID 特征。为了减少计算,对于 tracklet 中的每个图像,ReID 网络提取一次特征。 保存后以备后续使用。

3.4 切换器感知分类器

切换者检索
我们通过观察大量的身份转换(IDS),发现大多数 IDS 发生在当两个目标彼此相遇并发生较大重叠时。它启发我们将与当前目标最大重叠的另一个目标标记为最可能的潜在切换者。数学上,对于帧 t t t 中的每个 tracklet X X X,其位置用 X t X_t Xt 表示,并且可能的切换者如下获得

Λ = arg ⁡ max ⁡ Y ∈ S s . t . Y ≠ X I o U ( X t , Y t ) . \Lambda = \mathop{\arg\max}_{Y \in \mathcal{S} \mathop{s.t.} Y \neq X} \mathop{IoU}(X_t, Y_t). Λ=argmaxYSs.t.Y=XIoU(Xt,Yt).
其中 S \mathcal{S} S 是跟踪目标的集合。

输入特征
这里我们将两个子网络视为特征提取运算符 ϕ \phi ϕ,并将二者的输入——目标 X X X 和检测结果 D D D 表示为 Γ X , D \Gamma_{X,D} ΓX,D,切换者与之类似。分类器的输入特征由两部分组成:

  • 首要考虑目标的特征,由 ϕ ( Γ X , D ) \phi(\Gamma_{X,D}) ϕ(ΓX,D) 表示,
  • 以及切换者的特征 ϕ ( Γ Λ , D ) ) \phi(\Gamma_{\Lambda,D})) ϕ(ΓΛ,D))

ϕ \phi ϕ 定义如下:

ϕ ( Γ X , D ) = { f s ( D t r a c k , D d e t ) } ∪ F l X . \phi(\Gamma_{X,D})= \{f_s(D_{track}, D_{det})\} \cup \mathcal{F}^X_l. ϕ(ΓX,D)={fs(Dtrack,Ddet)}FlX.

ϕ ( X , t ) \phi(X, t) ϕ(X,t) 的维度是 K + 1 K+1 K+1,切换者与之类似。然后我们通过连接这两个部分来获得分类器的输入。

分类
我们利用带加权分位数草图的正则化牛顿提升决策树,由 XGBoost 在分类步骤中提出。
如果分类结果 y y y 大于阈值 ζ m \zeta_{m} ζm,那么将成本为 1 − y 1 - y 1y 的相应边添加到图中。

3.5 训练

3.5.1 训练数据生成

SOT 子网络和 ReID 子网络是独立训练的。对于 SOT 子网络,我们根据视频的标注生成一些目标图像对,并根据 SiamRPN 的训练模式扩展图像对以包含一部分背景。为了更好的训练,我们只考虑与真实目标 IoU 大于0.65的框作为正样本且小于0.45的作为负样本。对于 ReID 子网络,将每个目标都视为一个类,我们训练网络来预测输入目标的类别。ReID 子网络的输入是目标图像区域,标签是其类号。

我们需要先得到两个子网络的输入,从而为切换者感知分类器生成训练样本和相应的被标注。

  • 首先,我们运行基线 MOT 算法并生成所有假设的训练视频轨迹。
  • 然后,我们使用 IoU 阈值 0.6 0.6 0.6 将它们与真实目标联系起来,即只考虑 IoU 大于 0.6 0.6 0.6 的对。用匈牙利算法最大化 IoU 值的总和。对于帧 t t t 的目标 X X X,如果 X t , X t − δ , . . . , X t − ( K − 1 ) δ X_{t}, X_{t-\delta}, ..., X_{t-(K-1)\delta} Xt,Xtδ,...,Xt(K1)δ 的标注为同一目标或至多其中一个与标注无关,那么我们将其视为有效的跟踪。
  • 对于每个有效的 tracklet,我们在帧 t + 1 t+1 t+1 中随机采样检测结果,辅以公式5定义的潜在切换者,组成 MOT 框架的输入。根据公式1、4、6生成分类器的输入。根据检测的标注信息获得切换者感知分类器的标签。
  • 此外,对于正样本,我们可以交换切换者和主要考虑的目标,以生成用于切换者感知分类器的另一个训练负样本。

对于质量滤波器,我们将与真实目标 IoU 大于0.6的图像区域作为正样本,其余作为负样本。

3.6 预处理和离线聚类

检测得分过滤策略
有时检测器给出的检测结果噪声很多,带有奇怪的误报并且置信度不可靠。我们提出了两种解决方案来改进这些检测结果:

  • 第一个是更严格的 NMS 方法。
  • 第二个是训练一个置信度得分提炼器。

在这里,我们使用长期线索选择中的质量过滤器作为置信提炼器。

长期跟踪聚类
基于在线模式的输出结果,我们设计了一个简单的批量聚类后处理程序。

  • 第一步是由轨迹构建子图。对于每个 tracklet,

    • 首先,我们将每个帧视为一个孤立节点;
    • 然后如果有两个节点具有相似 ReID 特征,即它们之间的余弦距离小于阈值,我们将在两个节点之间添加一条边;
    • 最后我们可以获得一些切片,每个切片是一个连接的子图。
  • 第二步是将这些切片合并到不同的目标之间。

    • 如果两个切片的帧索引重叠小、空间距离小且 ReID 特征类似(我们计算两个切片的平均特征距离),就合并二者;
    • 如果合并了两个切片,则原始位置中的切片将成为新的标识;
    • 此外,在拆分和合并操作之后,我们在每个 tracklet 中进行插值,以便修复更多的漏报。

参考资料:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Multi-Object Tracking with Multiple Cues and Switcher-Aware Classification 论文笔记 的相关文章

随机推荐

  • 彻底卸载VMware虚拟机

    开始 gt 运行 gt regedit gt 找到HKEY LOCAL MACHINE gt Software gt VMware inc 把这个整个删除 关闭注册表后 重新运行VMware的安装文件 问题即可解决
  • 前端基础面试题(js、vue、react)

    文章目录 vue2面试题 js面试题 react面试题 vue2面试题 vue的双向绑定原理 双向绑定的原理也叫响应式原理 Vue它是采用数据劫持结合发布者 订阅者模式的方式 通过Object defineProperty 属性的sette
  • 【Redis】Centos7 如何正确的手动安装Redis,简单式安装

    安装包 手动官网下载 redis 4 0 1 tar gz 演示redis的版本 使用wget下载 centos 自带了wget wget http download redis io releases redis 4 0 1 tar gz
  • Acwing-870. 约数个数

    N的任何一个约数都是d的形式 而且d每一项的指数都不同 所以N的约数与 1 k的取法是一致的 N的每一个约数都对应了 1 k的一种取法 不同的取法对应不同的约数 由算数基本定理 每一个数的因式分解是唯一的 只要因式分解不一样 那么这两个数就
  • MySQL内置函数ifnull()

    ifnull mysql的一个内置函数 用于处理空值 NULL 如果不为 NULL ifnull 函数会返回第一个参数 否则返回第二个参数 例子 select ifnull select salary from Employee order
  • H5页面唤起关注公众号页面

    一 H5页面唤起关注公众号页面 上面已经说明如何判断用户是否已经关注公众号 那如何唤起关注页面 也就是如何跳转到关注页面引导用户关注呢 主要分为以下几个步骤 1 登录微信公众平台 2 点击微信号头像右击查看源代码 3 找到源代码中以下代码
  • 二极管详解

    一 基本概念 二极管由管芯 管壳和两个电极构成 管芯就是一个PN结 在PN结的两端各引出一个引线 并用塑料 玻璃或金属材料作为封装外壳 就构成了晶体二极管 如下图所示 P区的引出电极称为正极或阳极 N区引出的电极称为负极或阴极 1 二极管的
  • 【LVGL 学习】加入内部字体

    使用到的软件 LvglFontTool exe 字符转换工具 链接 http www lfly xyz forum php mod viewthread tid 24 extra page 3D1 软件界面 按照软件界面配置 1 打开lvg
  • 【卷积神经网络】卷积层,池化层,全连接层

    转于 入门PyTorch 卷积层是卷积神经网络的核心 大多数计算都是在卷积层中进行的 1 卷积层 1 1 概述 首先介绍卷积神经网络的参数 这些参数是由一些可学习的滤波器集合构成的 每个滤波器在空间上 宽度和高度 都比较小 但是深度和输入数
  • Spring Boot + Vue 开发网易云,QQ音乐(附源码)!

    来源 segmentfault com a 1190000021376934 前言 虽然 B S 是目前开发的主流 但是 C S 仍然有很大的市场需求 受限于浏览器的沙盒限制 网页应用无法满足某些场景下的使用需求 而桌面应用可以读写本地文件
  • Markdown嵌入视频

    博客 安卓之家 微博 追风917 CSDN 蒋朋的家 简书 追风917 博客园 追风917 操作 今天看到别人github里可以看youtube视频 小白表示惊呆了有木有 于是乎 于是乎 查看了下人家的代码 表示不懂 然后搜索了下 瞬间正能
  • 职场篇—从网络安全行业人才需求讲个人规划

    如果你是一名正在找工作的网络安全方向大学生 或者是刚刚踏入网络安全领域的新手 这篇文章很适合你 如果你是一名老网安人 看看有哪些你中招了 当你打开BOSS直聘 拉钩等招聘类网站后 在首页的快速导航页面很难找到关于网络安全岗位招聘的引导信息
  • unity 监测UI EventTrigger事件

    如果想控制 只是监听点击一次 设置Image的 Raycast Target 的bool值 这样子就不用反复的注销 注册监听了 注销只在销毁的时候 EventTrigger的所有事件类型 PointerEnter 0 鼠标进入 Pointe
  • DAY10栈与队列:232 用栈实现队列

    一 232 用栈实现队列 class MyQueue public stack
  • Java JDK1.8中类常量池、运行时常量池、字符串常量池所处区域

    类常量池 诞生时间 编译时 所处区域 方法区 类常量池存在Class文件中 一个Class文件对应一个类常量池 储存内容 符号引用和字面量 字符串常量池 诞生时间 编译时 所处区域 堆 储存内容 堆内的字符串对象的引用和字符串常量 运行时常
  • untiy AVProVideo 判断视频是否加载完成,可以播放

    我的插件版本是5 3 不同版本API可能会不同 如果一开就跳转视频 会因为视频没有加载完 导致跳转失败 因此必须等待视频加载完再进行跳转 可以直接等一小会再跳转 但是如果固定等待时间的话 一是每个视频加载耗时不一样 不能精确控制 而是由明显
  • 线性表的顺序结构,C语言实现

    线性表的顺序结构 C语言实现 include
  • C++中operator关键字(重载操作符)

    C 中operator关键字 重载操作符 C 编程语言中重载运算符 operator 介绍 C 编程语言中赋值运算符重载函数 operator 介绍 operator operator operator 操作符重载 参考 C 编程语言中赋值
  • 后端即服务BaaS

    Bmob LeanCloud 腾讯TAB APICloud 作为移动开发者 你应该了解Baas 后端即服务 移动端免费可用的BaaS接入方案 通过Bmob Android轻松制作一个APP Android高效率编码 第三方SDK详解系列 二
  • Multi-Object Tracking with Multiple Cues and Switcher-Aware Classification 论文笔记

    Multi Object Tracking with Multiple Cues and Switcher Aware Classification 似乎是商汤投 CVPR2019的论文 文中提出了一个统一的多目标跟踪 MOT 框架 学习充