CVPR2022--使用Transformer在跟踪框架中当做目标模型预测模块。
ToMP是使用pytracking实现的,而本来pytracking整个项目库的复现是要在STARK之前的,但是由于上次在复现的时候没有系统记录,并且上次复现出现了一些问题,本次主要借着重新验证上次复现的结果,重新从头记录一遍,但是本文不包括环境配置哈哈哈。
摘要:
简要介绍一下,包括部分个人思考
基于优化的跟踪方法通过整合目标模型预测模块已被广泛成功,通过最小化目标函数来提供有效的全局推理。虽然这种归纳偏差整合了有价值的领域知识,但它限制了跟踪网络的表达能力。
这里描述的基于优化的跟踪方法,作者在下文解释中主要针对基于判别相关滤波的跟踪模型,即判别相关滤波方法的目标函数在previous frames 上继承前景背景的知识。在这个过程(学习模型)是包括了有效的全局推理的,但是这里对预测目标模型施加了严重的归纳偏差。归纳偏差是卷积带来的问题,而这些方法使用卷积核(或者说目标模型通常设置为卷积核)那这个时候施加了的严重的归纳偏差也就是从卷积中带来的咯。但是现在也有是使用纯transformer来做跟踪,也就是会完全避免了归纳偏差,但是纯transformer跟踪架构的参数量和计算量也是一个很大的问题。
并且这里的目标模型是通过仅最小化先前帧的目标获得的,因此模型预测的灵活性有限。
因此,在这项工作中,我们提出了一种使用基于 Transformer 的模型预测模块的跟踪器架构。
这里比较一下区别就是使用transformer架构实现的模型预测器替换原先的模型优化器。
ToMP方法不是最小化目标,而是通过端到端训练来学习直接从数据中预测目标模型。
这允许模型预测器将目标特定先验集成到预测模型中,以便除了允许将目标与所见背景区分开来的特征之外,它还可以专注于目标的特征特征。(如图:Target State Encoding)
此外,ToMP模型预测器还利用当前的测试帧特征,以及之前的训练特征,以转导方式预测目标模型。(如图:Test Frame Encoding)
两个Encoding都适用于目标定位。
因此,模型预测器可以利用当前帧信息来预测更合适的目标模型。
最后,ToMP方法不是将目标模型应用于由预训练特征提取器定义的固定特征空间,而是可以利用目标信息为每一帧动态构建更具区分性的特征空间。
Transformers 以很少的归纳偏差捕获全局关系,使其能够学习更强大的目标模型的预测。
我们进一步扩展模型预测器以估计第二组权重,这些权重用于准确的边界框回归。生成的跟踪器依赖于训练和测试帧信息,以便转导地预测所有权重。
我们端到端训练所提出的跟踪器,并通过对多个跟踪数据集进行综合实验来验证其性能。(具体数据见原论文)
复现(测试)
---上次在测试时,出现了跟踪目标框不动的问题,这次用源码试一下,看看是不是我之前改了模型的原因。
下载预训练模型pytracking/MODEL_ZOO.md at master · visionml/pytracking · GitHub
将下载好的预训练模型放在.\pytracking\networks\中,不需要解压,也不需要去后缀。
在运行run_tracker.py脚本之前,在终端输入python -m visdom.server,然后点击网址
PS D:\Desktop\tracking_transformer\pytracking-master> python -m visdom.server
E:\Anaconda3\envs\pytorch-gpu\lib\site-packages\visdom\server.py:39: DeprecationWarning: zmq.eventloop.ioloop is deprecated in pyzmq 17. pyzmq now works with
default tornado and asyncio eventloops.
ioloop.install() # Needs to happen before any tornado imports!
Checking for scripts.
It's Alive!
INFO:root:Application Started
You can navigate to http://localhost:8097 点击这个网址
然后运行run_tracker.py脚本,参数设置为:
tomp
tomp50
--dataset_name
otb # 我这里是在otb整个数据集上进行初始化,如果是单个视频可以指定序列
# 制定序列
--sequence
Soccer
--debug
1
--threads
0
然后就可以看可视化结果了,可视化效果如下:
这里出现了标签的漂移
简单的单目标,没有背景和其他目标的干扰,分数很高,也很稳定
这里出现了目标的完全消失,然后再出现,直接就跟踪错误了。
上次的复现出现问题应该是改了模型的原因,导致搜索区域和模板都不会更新了。
pytracking系列代码的复现还是有很多问题的,还需要不断学习。