赞
踩
PS:好久没写csdn了,有点忙,但更多的是比较懒。
今天分享的论文是OSTrack:Joint Feature Learning and Relation Modeling for Tracking: A One-Stream Framework
论文网址:https://arxiv.org/pdf/2203.11991.pdf
GitHub网址:https://github.com/botaoye/OSTrack
单目标跟踪的相关背景就不详细展开。
开始前,先讲一下双流两阶段架构。
目前主流的跟踪器通常使用通用的双流和两阶段组件来区分目标与背景,这意味着模板和搜索区域的特征是分别提取的(双流),整个过程分为两个顺序步骤:特征提取和关系建模(两阶段)。这种从SiamFC延续而来的模型架构采用了“分而治之”的策略,在跟踪性能方面取得了显著的成功。(图源:MixFormer)
比如说SiamFC、SiamRPN、TransT等架构,都属于双流两阶段架构。
但是,OSTrack论文中说明了此架构的一些缺点:
另一种架构模型在近一年被提出—单流单阶段架构。比如说MixFormer及本文要分享的OSTrack。
它们的特点是:
将特征提取和特征融合统一在一个模块中,并将它们输入到标记的自注意层,生成的搜索区域特征可以直接用于目标分类和回归,而无需进一步匹配。
该架构具有以下优势(OSTrack中提及):
OSTrack模型相比于其他模型,独特的创新点:
如上图所示,OSTrack模型流程可简单分为以下几步:
(PS:这也是写这篇文章的主要原因,也看过很多的CSDN博客,但都草草略过这个关键点。本文的目的是详细的讲明这个关键点)
大致思想:
接着配合代码再来过一遍流程
核心代码来源:https://github.com/botaoye/OSTrack/blob/main/lib/models/layers/attn_blocks.py
PS:代码中的box_mask_z的具体实现来源于:https://github.com/botaoye/OSTrack/blob/main/lib/utils/ce_utils.py#L15
大致思想就是只保留attention的中心部分。通过对周围区域赋0,对中心区域赋1来达到掩码的效果。
Head部分的结构也比较简单,包括三个分支,分别预测分类得分 、为了补偿下采样量化误差而预测的偏移值 以及归一化的bounding box尺寸
损失函数方面:对于分类分支,采用了weighted focal loss即与GT中心距离越远的位置权重越低。对于回归分支,则使用了常用的IoU loss以及L1 loss的组合。
||||||||
消融实验:比较双流双级架构和单流单级架构
其中第三行结果是OSTrack在没有早期候选消除模块的情况下的结果。(为了防止候选消除模块对结果的影响)
PS:最后一行是添加了候选消除模块的OSTrack模型。
发现添加早期候选者消除模块后,效果下降不明显(略微提升),FPS还得到的较大提升,展现了单流单级架构的优势。
GOT-10K上与其他模型的比较
PS:由于OSTrack交稿期间MixFormer论文还没发表,因此作者没有与MixFormer论文进行比较,我在Table1中最后二行添加了MixFormer的两个模型的结果(具体的模型对应的信息可以看MixFormer相关论文)。
MixFormer论文:https://arxiv.org/pdf/2302.02814.pdf
因为本文主要是本人用来做的笔记,顺便进行知识巩固。如果本文对你有所帮助,那么本博客的目的就已经超额完成了。
本人英语水平、阅读论文能力、读写代码能力较为有限。有错误,恳请大佬指正,感谢。
欢迎交流
邮箱:refreshmentccoffee@gmail.com
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。