MOTR阅读笔记

  • (一) Title
  • (二) Summary
  • (三) Research Object
  • (四) Problem Statement
  • (五) Method
    • 5.1 构建MOTR的一些相关介绍
    • 5.2 MOTR
      • 5.2.1 模型框架
      • 5.2.2 QIM模块
      • 5.2.3 Collective Average Loss
  • (六) Experiments
    • 6.1 实验设置
    • 6.2 同SOTA比较
    • 6.3 消融实验
  • (七) Conclusion
  • (八) Notes
    • 8.1 MOT方法
    • 8.2 基于Transformer的架构
  • (九) TODO

(一) Title


论文地址:https://arxiv.org/abs/2105.03247
代码地址:https://github.com/megvii-model/MOTR
前言:最近有幸看了几篇MOT的工作,感觉目前MOT的工作有一些集中将循环神经网络引入来构建对轨迹的预测,从而实现对遮挡情况的处理,提升性能。然而我自己没有仔细研读过Transformer相关的论文,希望以此为契机,开启循环神经网络在视觉领域的研究,本文最显著的贡献就是将track trajectory当成隐状态,并且在细节上的有很多的考究。

(二) Summary

当前存在的问题:

多目标跟踪任务之前的做法中,往往是基于motion以及appearance相似性使用启发式方式来进行检测地关联,但是这种做法忽略了跟踪任务基于视频的属性,并且过多地信任检测和Re-ID的性能,同时对于遮挡和非线性运动的适应能力较差。不过在MOT性能上表现很好。基于FairMOT端到端学习detection和re-id的思想,如何将data association的过程也引入到端到端的过程中来呢?目前基于卷积+RNN的融合有一些实现方式,也取得了比较好的效果,那么基于Transformer的方式在处理上又能起到什么作用呢?基于Transformer的实现,往往是通过一种隐式的关联来构建

本文的方法:

本文提出了MOTR,一个端到端的MOT框架:

  • 学习model the long-range temporal variation of the objects,从而能够实现隐式地association。
  • 引入track query,每一个track query models the entire track of an object,track query is transferred and updated frame-by-frame to perform iterative predictions.
  • 提出Tracklet-aware label assignment在track queries和object tracks实现一对一的assignment。
  • Temporal aggregation network以及collective average loss用来平衡long-range temporal relation。

[注:关于方法这边有一些过于抽象,直接看表述不是很容易理解,Mark下来,等整篇看完回来重新梳理]

实验结果

MOTR取得了competitive performance,可以作为Transformer MOT任务中的一个baseline。

本文贡献

  • 提出了一个端到端的MOT框架,基于DETR,能够隐式地学习appearance以及position变化(通过隐状态来说能够学习appearance和position变化,很难get到。)
  • 将MOT看成是一个set of sequence prediction的问题,从DETR角度来看,只是将固定的检测框转换成track trajectory和检测框,并且track trajectory以及检测框的定义形式都相同,只不过检测框的id标签为-1,并且引入了QIM来实现对输出检测框(图3中的qtriˉ,qdetiˉ\bar{q_{tr}^i},\bar{q_{det}^i}qtriˉ,qdetiˉ)的编码,并且这里是将track trajectory看成是隐状态。
  • TALA用来一对一assignment预测和gt boxes,这里在代码中涉及到很多细节的地方(需要运行代码看下)
    引入CAL以及TAN来增强long-range temporal motion

(三) Research Object

本文希望能够构建一种端到端的MOT框架,就需要解决如何定义trajectory?如何处理new-born和death?如何进行轨迹状态的预测等问题,作者这里是将trajectory看成隐状态,使用class score来处理trajectory的生成和退出,并借助transformer的encoder架构来预测下一个时刻的trajectory隐状态。

(四) Problem Statement

本文基于Deformable DETR出发,希望能够使用端到端的方式来解决多目标跟踪任务,使用隐状态(track query)表示track trajectories,需要解决的主要问题包括:

  • 怎么根据这个track query跟踪一个目标?这里我觉得说的应该是怎么基于track query来预测下一个时刻的query?
    在训练期间使用tracklet-aware label assignment(TALA),也就是说通过具有相同id标签的box sequences来监督,马马虎虎不理解,问题也不是很理解
  • 怎么处理track query的new-born和dead objects?
    采用动态长度,对于当前的N个object queries(其中包括m个track querie以及N-m个detection queries,detection queries设置成zero,设置成zero是不是有问题呢?),同时在inference过程中不再使用IoU matching关联。

(五) Method

5.1 构建MOTR的一些相关介绍

  • 关于DETR中使用object query作为隐状态最终生成固定长度的object的描述
    DETR中引入的是object queries(在Decoder中使用的,对Transformer代码部分不是特别理解,先留下疑问吧)使用固定长度的embedding来表示目标,在decoder中image feature和object queries之间进行交互,来实现更新他们呢的表示。进一步采用Bipartite matching实现the updated queries和GTs之间的一一匹配,并且作者这里将这个query看成是object detection的query。
  • 本文是怎么构建track query的,如何实现track query和object query同GTs的一对一对应关系呢?
    首先介绍本文基于DETR的改动,本文中从DETR的detect query中增加了track query,文中指出这里的detect queries是固定长度的,track queries是可变长度的,并且track queries自动能够实现自动更新。

这里的疑问是:detect query中的固定长度跟DETR中是一样的呢,也就是说都指的是最大可以检测到的目标?还是说detect query和track query的总长度是DETR中detect query的长度呢?也就是可以同时使用detect query和track query来和GTs做one-by-one的对应呢?从论文的理解上来看,这里我更倾向于后面这种,需要回头代码中确认
回答:detect query的长度是固定的,相当于DETR中的固定长度,而track query的长度的不固定的,cat到一起输入到decoder中

这里的问题是TiT_iTi帧中的黄色框是不检测1和2目标了嘛?之前看代码好像是这样的,是将GTs分成两部分,一部分用于track query的回归,另一部分用于detect query的回归,回头再确认下是不是这个情况
是的,这里detect query只用于跟new-born的目标进行one-by-one 匹配,也就是说只负责预测除了tracklets中已经有的目标?
参考论文中的原话:While in MOTR, detect queries are only used to detect the new-born objects and track queries predict these tracked objects.

怎么将detect query,track query同GTs一对一对应上呢?本文采用的是tracklet-aware label assignment(TALA)这边应该是本文新起的一个名词,注意这里的detect queries仅仅用来检测new-born目标,并且track queries用来对应已经跟踪上的目标。具体的做法是(这里是博主自己的理解,代码只是粗略的看了下,可能会有问题):

现在有GTs,track queries,detect queries。Track queries不需要使用bipartite matching进行匹配,follow the same assignment of previous frames(这里说的比较抽象,实际上应该是当前已有的track queries中在之前已经将gt的label给到这儿了,接只需要确定当前track queries中和gt id对应上的那个就是要track queries需要对应的gt,如果GTs中没有能够同track queries对应上的,则将当前的track queries设置成无效,应该是将该track query删除),接着剩下的没有匹配上的就看成是detect queries,将detect queries同剩下的GTs做一次匈牙利匹配,也就是一一对应上。

基于上述做法的思考,论文中将TiT_iTi时刻的predictions记作Yi={Ytri,Ydeti}Y_{i}=\left\{Y_{t r}^{i}, Y_{d e t}^{i}\right\}Yi={Ytri,Ydeti},其中YtriY_{t r}^{i}Ytri表示track queries对应的预测边界框,YdetiY_{d e t}^{i}Ydeti表示detect queries对应的预测框。同时将GTs记作Y^i={Y^tri,Y^deti}\hat{Y}_{i}=\left\{\hat{Y}_{t r}^{i}, \hat{Y}_{d e t}^{i}\right\}Y^i={Y^tri,Y^deti},Y^tri\hat{Y}_{t r}^{i}Y^tri表示同track queries对应的gt边界框,Y^deti\hat{Y}_{d e t}^{i}Y^deti表示同detect queries对应的gt边界框。track queries+detect queries同ground truth之间的对应关系使用ωi={ωtri,ωdeti}\omega_{i}=\left\{\omega_{t r}^{i}, \omega_{d e t}^{i}\right\}ωi={ωtri,ωdeti}表示。其中
ωdeti=arg⁡min⁡ω^deti∈ΩiL(Ydeti∣ω^deti,Y^deti))ωtri={∅i=1ωtri−1∪ωdeti−12≤i≤N\begin{array}{c} \left.{\omega}_{d e t}^{i}=\underset{\hat\omega_{d e t}^{i} \in \Omega_{i}}{\arg \min } \mathcal{L}\left(\left.Y_{d e t}^{i}\right|_{\hat\omega_{d e t}^{i}}, \hat{Y}_{d e t}^{i}\right)\right) \\ \omega_{t r}^{i}=\left\{\begin{array}{ll} \emptyset & i=1 \\ \omega_{t r}^{i-1} \cup \omega_{d e t}^{i-1} & 2 \leq i \leq N \end{array}\right. \end{array} ωdeti=ω^detiΩiargminL(Ydetiω^deti,Y^deti))ωtri={ωtri1ωdeti1i=12iN
这里的符号相对于原文进行了调整,其中NNN表示视频序列的长度,L\mathcal{L}L表示pair-wise matching cost,这里就是匈牙利匹配,主要解决YdetiY_{d e t}^{i}YdetiY^deti\hat{Y}_{d e t}^{i}Y^deti的一一对应关系,在初始时刻T1T_1T1,ωtr1\omega_{tr}^{1}ωtr1没有任何目标,而ωdet1\omega_{det}^{1}ωdet1则是通过YdetiY_{d e t}^{i}YdetiY^deti\hat{Y}_{d e t}^{i}Y^deti的匹配得到,接着ωtri\omega_{tr}^{i}ωtri则是由上一个时刻的跟踪queries对应的ωtri−1\omega_{tr}^{i-1}ωtri1以及上一个时刻的检测目标ωdeti−1\omega_{det}^{i-1}ωdeti1表示,对于在Ti−1T_{i-1}Ti1时刻出现的new-born目标,会加入到TiT_{i}Ti时刻的query中

这里的疑问是为什么不使用当前时刻的检测目标呢?

最后就是DETR框架中重复框的置信度非常低,这应该是使用bipartite matching的作用,不再使用一对多的情况。

5.2 MOTR

5.2.1 模型框架

上图以及相关的描述中已经将MOTR的整体框架介绍很清楚了。其中骨干采用CNN实现(ResNet50),接着引入transformer的encoder来提取图像序列特征:f={f1,f2,…,fN}f=\left\{f_{1}, f_{2}, \ldots, f_{N}\right\}f={f1,f2,,fN},对于第一帧T1T_1T1来说,将经过encoder的图像featuref1f_1f1以及固定长度的detected queriesqdq_dqd输入到Transformer decoder中来生成track queries qot1q^1_{ot}qot1,后面跟FFN来生成预测Y1Y_1Y1,同时qot1q^1_{ot}qot1通过QIM(Query Interaction Module)来得到下一个时刻的track queries,这里其实类似track任务中基于当前的track trajectory来预测未来的track trajectory,得到qt2q_t^2qt2用作第二帧的decoder输入,并且此时detect queries同第一帧输入的detect queries是相同的都是qdq_dqd,

问题:图中提到的Predictions of the video clip are aggregated together and used to calculate the collective average loss with ground-truths难道是整个视频序列的输出同gt序列的输出进行比对嘛?
回答:在CAL中指出不是使用frame-by-frame计算损失,而是通过collect 多个预测。

5.2.2 QIM模块

本文的核心内容就是Query Interaction Module,主要包括两个内容:目标的进入和退出机制以及TAN(temporal aggregation network):

首先就是目标的进入和退出机制
TiT_iTi帧时,track queries qitq_i^tqit以及detect queries qdq_dqd输入到Transformer的Decoder中,得到original track queries qotiq^i_{ot}qoti(说实话,我觉得这里起名字交track queries不合适),并将track queries分成两个sets:qoti={qtri,qdet i}q_{o t}^{i}=\left\{q_{t r}^{i}, q_{\text {det }}^{i}\right\}qoti={qtri,qdeti},这里原文说qtriq_{t r}^{i}qtri中同时包含了tracked以及dead目标,需要在接下来的处理中将dead目标去除掉,qdet iq_{\text {det }}^{i}qdeti中是new-born的目标。
这里如图4(a)中所示,qotiq_{o t}^{i}qoti中包含1,2两个目标,2是dead目标,

问题:怎么将dead目标去除掉?
回答:训练过程和推理过程是分开来处理的
训练过程通过在ground-truthY^i\hat Y_iY^i和当前的track trajectories的匹配结果ωtri\omega_{t r}^{i}ωtri进行comparison。对应代码在motr matching的step1中:

将没能够和gt idx匹配上的目标看成是dead目标,并将没有dead的track queries保留下来,得到qˉtri\bar{q}_{t r}^{i}qˉtri,并且det queries表示的是new-born的目标,也就是图中所示的qˉdeti\bar{q}_{det}^{i}qˉdeti,通过wdetiw^i_{det}wdeti来获取。此时还没有将new born目标添加到track query(也就是所谓的track轨迹)当中。
推理过程中使用预测YiY_iYi的类别分数来判断一个track query的增加和删除,注意这里是同训练过程不一样的,并且这个地方同时说明了track query的增加和删除,文中的classification分数是目标所有类别分数中的最大值(比如说coco一共有91个类别,然后每一个类别有一个置信度分数,取所有类别中置信度最高的那个作为当前query的类别分数),此外这里图4中关于inference表述有问题,实际上在inference过程中,没有再对qdetiq^i_{det}qdeti做track query和detect query做划分,对应的公式表示相比于原论文进行了调整
文中所提到的sks_ksk表示qotiq^i_{ot}qoti中的第k个query的分类分数,判断分数sks_ksk是否超过设置的阈值τn\tau_{n}τn,超过当前阈值的话则加入到track轨迹中。
qˉtri={qk∈qoti∣sk>τn}\bar{q}_{t r}^{i}=\left\{q_{k} \in q_{ot}^{i} \mid s_{k}>\tau_{n}\right\} qˉtri={qkqotisk>τn}
对于从当前轨迹中删除的话,也就是基于分类分数sks_ksk以及退出阈值τex\tau_{ex}τex,并且设置成当连续MMM帧小于这个阈值时退出,对应的公式表述为:
qˉtri={qk∈qoti∣max⁡{ski,…,ski−M}>τex}\bar{q}_{t r}^{i}=\left\{q_{k} \in q_{ot}^{i} \mid \max \left\{s_{k}^{i}, \ldots, s_{k}^{i-M}\right\}>\tau_{e x}\right\} qˉtri={qkqotimax{ski,,skiM}>τex}
对应到代码上的表述为:

接着就是TAN模块
这里引入TAN的主要目的在于给tracked目标提供contextual relation,增强temporal relation,TAN的输入是filtered track queries qˉtri\bar{q}_{t r}^{i}qˉtri以及qˉdeti\bar{q}_{d e t}^{i}qˉdeti分别表示已经跟踪上的和new-borned,同时将上一个时刻的tracked queries qˉtri−1\bar{q}_{t r}^{i-1}qˉtri1也作为输入。TAN实际上就是一个Transformer的encoder,Multi-Head Self-Attention的输出记作tgttgttgt表示成:
tgt=σs((qˉtri+qˉtri−1)⋅(qˉtri+qˉtri−1)Td)⋅qˉtrit g t=\sigma_{s}\left(\frac{\left(\bar{q}_{t r}^{i}+\bar{q}_{t r}^{i-1}\right) \cdot\left(\bar{q}_{t r}^{i}+\bar{q}_{t r}^{i-1}\right)^{\mathrm{T}}}{\sqrt{d}}\right) \cdot \bar{q}_{t r}^{i} tgt=σs(d

(qˉtri+qˉtri1)(qˉtri+qˉtri1)T)qˉtri
这里TTT表示转置,σs\sigma_{s}σs表示sigmoid函数,ddd表示track queries的维度,经过通过FFN refine tgttgttgt最终同qˉdeti\bar{q}_{d e t}^{i}qˉdeti做cat得到下一个时刻的track queries qti+1{q}_{t }^{i+1}qti+1

5.2.3 Collective Average Loss

这里作者提出通过在视频序列上的multiple predictions计算损失,来学习temporal variances。使用序列上的损失,相比于frame-by-frame的损失有什么差异呢?
符号表述:这里假定视频序列的长度为NNN,对应的预测boxes分别为Y={Yi}i=1NY=\left\{Y_{i}\right\}_{i=1}^{N}Y={Yi}i=1N,并且视频序列对应的真实boxes为Y^={Y^i}i=1N\hat Y=\left\{\hat Y_{i}\right\}_{i=1}^{N}Y^={Y^i}i=1N,使用ω={ωi}i=1N\omega=\left\{\omega_{i}\right\}_{i=1}^{N}ω={ωi}i=1N表示一对一的对应关系。此时整个序列的损失为:
Lo(Y∣ω,Y^)=∑n=1N(L(Ytri∣ωtri,Y^tri)+L(Ydeti∣ωdeti,Y^deti))∑n=1N(Vi)\mathcal{L}_{o}\left(\left.Y\right|_{\omega}, \hat{Y}\right)=\frac{\sum_{n=1}^{N}\left(\mathcal{L}\left(\left.Y_{t r}^{i}\right|_{\omega_{t r}^{i}}, \hat{Y}_{t r}^{i}\right)+\mathcal{L}\left(Y_{d e t}^{i} \mid \omega_{d e t}^{i}, \hat{Y}_{d e t}^{i}\right)\right)}{\sum_{n=1}^{N}\left(V_{i}\right)} Lo(Yω,Y^)=n=1N(Vi)n=1N(L(Ytriωtri,Y^tri)+L(Ydetiωdeti,Y^deti))
上式中Vi=Vtri+VdetiV_{i}=V_{t r}^{i}+V_{d e t}^{i}Vi=Vtri+Vdeti表示TiT_iTi帧的GTs的总数,VtriV_{t r}^{i}Vtri表示tracked objects的数量,VdetiV_{d e t}^{i}Vdeti表示new-born的目标的数量,L\mathcal{L}L表示损失函数,这里的损失函数同DETR中相似。对于单帧的损失L\mathcal{L}L可以表示成:
L(Yi∣ωi,Y^i)=λclsLcls+λl1Ll1+λgiou Lgiou \mathcal{L}\left(\left.Y_{i}\right|_{\omega_{i}}, \hat{Y}_{i}\right)=\lambda_{c l s} \mathcal{L}_{c l s}+\lambda_{l_{1}} \mathcal{L}_{l_{1}}+\lambda_{\text {giou }} \mathcal{L}_{\text {giou }} L(Yiωi,Y^i)=λclsLcls+λl1Ll1+λgiouLgiou
这里Lcls\mathcal{L}_{c l s}Lcls为类别损失,使用focal loss;Ll1\mathcal{L}_{l_{1}}Ll1损失表示的是L1损失这里是边界框参数的l1loss,Lgiou \mathcal{L}_{\text {giou }}Lgiou是GIoU损失。L1损失和GIoU损失对应到代码上为:

(六) Experiments

6.1 实验设置

  • 数据集
    MOT16,MOT17
  • 评价指标
    MOTA,MT,ML,IDS,IDF1.其中IDF1用来表示轨迹标签的准确性,MOTA用来描述整体的detection和tracking性能。
  • 训练设置
    同CenterTrack相同,使用了random flip和random crop等增强方式
    短边resize到800,最大size限制到1536.
    randomly sample key frames from video sequences来解决不同帧率的问题.
    pdropp_{drop}pdrop的概率erase掉tracked queries来为new-born生成更多的样本,同时还要以pinsertp_{insert}pinsert的概率模拟dead objects这是咋想到的,这样处理是不是相当于调整了gt,对性能会有影响吗
    在COCO检测数据集上预训练,采用AdamW训练200epochs,使用初始学习率2e−42e-42e4,学习率在第150个epoch衰减到2e−52e-52e5,batch设置成1,并且每一个batch包括了一个视频clip的5帧。在SOTA中,在联合数据集上训练(MOT17 train以及CrowdHuman),视频的initial clips为2,接着在50,90和150个epoch时变成了3,4,5,在消融实验中,基于MOT17数据集进行训练,不使用CrowdHuman。

6.2 同SOTA比较


讲道理这种端到端的训练方式效果上应该要比detection+association要好很多吧,主要还是目前Tracking方面端到端模型的研究比较少,应该还有很大的改进空间。

6.3 消融实验

消融实验使用不同的数据集来fast training。

(a)图表示TAN和CAL对模型性能的影响,两个结合起来用性能提升好多啊~
(b)图表示视频序列长度对于CAL性能的影响,多帧计算损失能够提升跟踪性能,帮助网络处理一些遮挡问题。
©(d)图表示在训练过程中增加的pdropp_{drop}pdroppinsertp_{insert}pinsert的影响。
(e)表示QIM的两个阈值对模型性能的影响。

(七) Conclusion

本文提出的MOTR是一个真正的端到端的多目标跟踪框架,将track query看成是隐状态来迭代更新。同时引入了TAN和CAL来增强帧间的long-term关系,取得了有竞争力的结果。achieves competitive performance

(八) Notes

8.1 MOT方法

当前tracking-by-detection的方式,实际上将MOT任务分成了两个阶段,detection和data association。目前的association还是采用基于appearance和location差异来构建的不同frame之间的联系。appearance差异主要体现在Re-ID来度量不同frame上boxes的相似性,位置上的相似性度量主要体现在利用kalman实现的下一帧位置预测同当前检测结果的相似性。然而这种方式中learning of temporal motion not end-to-end.每一个检测box分配一个轨迹,整个pipeline并不是端到端的。
从上述来看,目前tracking-by-detection的方式主要存在的问题是:

  • 没有考虑temporal motion
  • 没有考虑整个pipeline的端到端学习

从这种情况来看,目前tracking-by-detection方式中还是存在着较多的不足之处的。
在DETR中是将目标检测问题描述成一个set prediction problem

如图中(a)所示,object queries(可以看成是decoupled representation of objects,从代码上来看的话,nn.Embedding(num_queries, hidden_dim).weight)输入到Transformer的decoder中,然后跟图像feature进行interact。同时采用Bipartite matching来试先one-to-one的assignment(在object queries和ground-truths之间),从而消除了NMS。
而图(b)表示的是利用,隐状态同sentence feature交互从而进行序列预测。而MOT问题也可以看成是序列 预测问题,因为最终MOT是要得到一组object sequences,这里作者是将每一个sequence对应到一个轨迹上,并且track queries是作为一个隐状态对应到图3中的qtiq^i_{t}qti,相比于DETR中的做法这里是将检测query和track的query放到一起会不会有问题呢?有没有可能是做一个2N的query查询呢?一个用于查询detections,另一个用于查询track trajectories?,接着在Decorder中进行update得到图3中qotiq^i_{ot}qoti,将qotiq^i_{ot}qoti通过FFN(Feed Forword Network)得到类别分数以及边界框的预测值,这里跟One-Stage的方式不同了,主要是通过全连接层来得到最终的预测,而不是feature map得到最终的预测输出。。

疑问:既然在输出qotiq^i_{ot}qoti时已经进行了query的更新,为什么还有引入QIM这个模块呢?
这里的话我觉得应该是decoder对query解码得到对应的预测边界框,接着再通过QIM中的TAN编码成隐状态。并且TAN中引入了一个shortcut来集成历史信息。

其他的一些基于Transformer框架的MOT比如TransTrack以及TrackFormer。这里本文提出的方法同其他的方法存在的差异是:

8.2 基于Transformer的架构

DETR中结合了CNN,Transformer以及bipartite matching来进行端到端的目标检测,在Deformable DETR中引入了deformable attention module到Transformer中。
VIT中构建了一个pure Transformer架构用于图像分类,在swin transformer中引入了shifted windowing scheme来进行self-attention

(九) TODO

  • 1. detect query中的固定长度跟DETR中是一样的呢,也就是说都指的是最大可以检测到的目标?还是说detect query和track query的总长度是DETR中detect query的长度呢?也就是可以同时使用detect query和track query来和GTs做one-by-one的对应呢?从论文的理解上来看,这里我更倾向于后面这种,需要回头代码中确认
  • 2. 5.1小节中 问题是TiT_iTi帧中的黄色框是不检测1和2目标了嘛?之前看代码好像是这样的,是将GTs分成两部分,一部分用于track query的回归,另一部分用于detect query的回归,回头再确认下是不是这个情况

MOTR: End-to-End Multiple-Object Tracking with TRansformer阅读笔记相关推荐

  1. TransTrack: Multiple Object Tracking with Transformer

    摘要 TransTrack利用transformer架构,这是一种基于query-key机制多目标跟踪方法,就是通过前一帧的对象特征来跟踪当前帧的目标,并对当前帧进行对象检测,以检测新的对象.通过在一 ...

  2. 多目标跟踪综述、论文、数据集大汇总 Awesome Multiple object Tracking

    Awesome Multiple object Tracking(持续更新) 综述 论文 2022 2021 2020 2019 2018 2017 2016 数据集 综述 Multiple Obje ...

  3. 跟踪算法基准--Tracking the Trackers: An Analysis of the State of the Art in Multiple Object Tracking

    Tracking the Trackers: An Analysis of the State of the Art in Multiple Object Tracking https://arxiv ...

  4. Multiple Object Tracking:多目标跟踪综述

    Multiple Object Tracking:多目标跟踪综述 多目标跟踪综述 多目标跟踪综述 摘要 1. 介绍 2. 算法知识 3. 总结 4. 可学习的资源及代码 摘要 本篇博客是多目标跟踪最综 ...

  5. FairMOT: On the Fairness of Detection and Re-Identification in Multiple Object Tracking 效果展示

    FairMOT: On the Fairness of Detection and Re-Identification in Multiple Object Tracking 效果展示 公开数据集指标 ...

  6. Quasi-Dense Similarity Learning for Multiple Object Tracking

    QDTrack 论文标题:Quasi-Dense Similarity Learning for Multiple Object Tracking 论文地址:https://arxiv.org/pdf ...

  7. Quasi-Dense Similarity Learning for Multiple Object Tracking(用于多目标跟踪的拟密集相似度学习)

    Quasi-Dense Similarity Learning for Multiple Object Tracking 论文:下载地址 代码:下载地址 QDTrack: 一. 介绍 二. 方法 1. ...

  8. 多目标跟踪(MOT,Multiple Object Tracking)评价指标

    简述 在事先不知道目标数量的情况下,对视频中的行人.轿车.卡车.自行车等多个目标进行检测并赋予ID进行轨迹跟踪.不同的目标拥有不同的ID,以便实现后续的轨迹预测.精准查找等工作. 多目标跟踪中即要面对 ...

  9. Multiple Object Tracking with Mixture Density Networks for Trajectory Estimation 详细解读

    文章目录 简介(abstract) 介绍(introduction) 相关工作(Related Work) 轨迹预测(Trajectory Estimation) Mixture Density Ne ...

最新文章

  1. 不讲码德!坏味道偷袭我这个老码农
  2. Placement new
  3. 专访1药网技术副总裁黄哲铿:揭秘技术跨界管理之道
  4. 关于release后retainCount还是1的问题
  5. Python-装饰器-案例-获取文件列表
  6. python soup findall_Python之BeautifulSoup常用详细使用
  7. C语言基础篇(零)gcc编译和预处理
  8. linux 内核源码学习
  9. 让VB6 IDE“认识”鼠标滚轮
  10. 快速判断一个数能否被 2 ,3 ,4 ,5, 7,9,11 整除
  11. ESP8266开发——安信可IDE环境搭建
  12. 声明$(function(){})的含义
  13. 程序员去哪里找靠谱的兼职?(附项目库)
  14. 【云计算学习教程】云计算架构参考模型
  15. 计算机网课自我鉴定,计算机实习自我鉴定
  16. E-puck2机器人系列教程-7.机器人本体STM32固件更新
  17. oracle中的modify,数据库Oracle modify
  18. 该内存不能为written或read的解决方案
  19. 12.bacnet mst/tp 报文 解析
  20. Python字典dict

热门文章

  1. PDF to Word 转换工具
  2. Laravel核心解读 -- Response 1
  3. 所做一切, 只为验证自己的想法
  4. VB(视频缓冲区)配置
  5. 将讲解如何利用WinNTSetup安装win10
  6. video 元素自定义 controls 控件以及常用事件、方法
  7. 软件测试(六)自动化测试
  8. 如何爬取微信公众号文章(二)
  9. 嵌入式Linux下屏幕校准文件损坏问题
  10. POJ 3580 SuperMemo(伸展树的基本操作)