当前位置:   article > 正文

单目标追踪——【Transformer】Learning Spatio-Temporal Transformer for Visual Tracking

learning spatio-temporal transformer for visual tracking


Transformer这个香饽饽怎么能不用来迁移到目标追踪里呢。
本篇博客分析STARK。文中若有错误敬请指出。

Learning Spatio-Temporal Transformer for Visual Tracking

文章侧重

这篇文章提出了一个端到端的Transformer架构,一共有两个具体实现的网络结构——Baseline网络【仅考虑空间特征】+ST网络【同时考虑时序和空间特征】
几个值得注意的点:

  1. 由于Encoder的输入是Search Region和Template的Feature按channel连接,那么Ecoder自注意力机制进行特征增强时,已经相当于对Search Feature和Template Feature进行交叉注意力处理了。
  2. Decoder的输入是Encoded Feature和目标query,学习一个与目标有关query来预测目标位置,作为边界框预测Head的输入。
  3. 将目标跟踪建模成一个直接的边界框预测问题。用一个全卷积网络预测左上与右下角点响应图,每帧直接得到一个最优的边界框,彻底摆脱了之前复杂且对超参敏感的后处理操作【如余弦窗口、边界框平滑】。

网络结构

STARK-S网络——仅空间建模

在这里插入图片描述
网络组成部分:

  • Backbone网络:针对Search Region和Template分别生成特征图。这里采用了ResNet的前四个stage的网络。
  • Encoder:首先对传入的特征预处理——利用一个bottleneck层降低channel数1024→256;然后Search特征和Template特征按空间维度展平如下所示。相当于d个一维向量,向量长度为 H x ∗ W x + H z ∗ W z H_x*W_x+H_z*W_z HxWx+HzWz。x表示Search特征,z表示template特征。最后就是Sin位置嵌入、多头注意力、前馈网络。
    注意: 这里可以看到,Enoder的自注意力机制是对传入的特征全局性的计算相似度矩阵,这里传入的特征有Search特征和Template特征,所以这里自注意力已经相当于在交叉注意力了,但是和真正的交叉注意力有区别,因为自注意力机制中QKV都是自己。】
    在这里插入图片描述
  • Decoder:输入是一个与目标有关的query和Encoder的输出特征。这个query作者在文中并没有细说,只说和DERT中的目标query作用一样,与Template特征和Search特征的所有位置都有交互【通过交互注意力】学习一个关于最终目标边界框预测的一维向量。
  • 预测头:预测头的输入是从Encoder解离出的Search特征和Decoder输出的embedding【猜测之前Encoder特征不是有256个一维向量吗?这个目标query的embedding是一个1 * 1 * 256的向量,针对Encoder的每一个特征都有一个权重分数,来对Search特征进行调整,使其更容易找到预测目标】。然后就是用点乘计算Search特征和Decoder输出的embedding相似度,元素维度的乘法是为了增强重点区域,说白了还是一个加权,跟点乘计算方法不太一样但是目的是一样的。最后对一维的 1 ∗ 1 ∗ H x × W x 1* 1* H_x \times W_x 11Hx×Wxreshape成 H x ∗ W x H_x * W_x HxWx的特征图,输入到一个全卷积网络中,输出预测的目标坐标点(左上和右下)的概率图,用期望计算得到最后的坐标值【这样的坐标值包括了坐标点位置预测和尺度预测】
    在这里插入图片描述

STARK-ST网络——同时对时空建模

在这里插入图片描述
上图是同时考虑时空的STARK网络结构。蓝色部分是与对空间建模的STARK一样的结构,粉色部分是对时间建模。
这个网络结构的输入加入了一个动态模板,就相当于同时考虑到目标外观的变化。这部分实现主要就是一个Score Head。

  • Score Head:这是一个带Sigmoid激活函数的三层感知机。它的输入是Decoder的输出。这里设置了一个阈值,来判断是不是要更新动态模板。这个设置是为了当有的帧存在遮挡或追踪器漂移等问题,就不更新。保护动态模板不被污染。【有一说一,我感觉目标的query更像是对目标位置信息预测,这里其实更应该是判断当前帧的目标预测有没有很准,目标预测的置信度高不高。所以加上Encoder的特征来设计这个Score Head会更好,个人以为】

可视化和失败案例分析

Encoder 的可视化

在这里插入图片描述
从左到右分别是 【动态模板, 初始模板, 搜索区域】组成的输入三元组、最后一层Encoder输出。 最右边是用初始模板作为query,三元组作为keyvalue生成的注意力可视化结果。从右边图可以看出感兴趣区域很好地集中在目标上,和镜子里那个干扰物也的判别力很强。【如果能把Backbone生成的特征也可视化作为对比,这样才更能说明Encoder的增强作用吧。】
左下角的两张图是对应模板

Decoder的可视化

在这里插入图片描述
从左到右分别是 【动态模板, 初始模板, 搜索区域】组成的输入三元组。最后一层Decoder输出。 可以看到两个Tempalte上的注意力(左下角)在牛的尾巴那,而右边图Search区域上的注意力在牛的边界。作者得出的结论是Tempalte上的注意力(左下角)在目标左上区域,而Search区域上的注意力在目标的边界。

失败案例分析

在这里插入图片描述

该图摘自作者CVPR汇报ppt。又图左知,STARK无法处理外观突然变化,而作者做了对比实验,当STARK与DiMP集成,加入DiMP在线更新机制后性能改善了。如图右边。所以说白了STARK的时序关系没有用好,或许是Template太少了或许是更新Template机制不是很有效。

今天西安下大雨了,强强落汤鸡~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/327605
推荐阅读
相关标签
  

闽ICP备14008679号