当前位置: 首页 > news >正文

【论文阅读】CiteTracker: Correlating Image and Text for Visual Tracking

paper:[2308.11322] CiteTracker: Correlating Image and Text for Visual Tracking (arxiv.org)

code:NorahGreen/CiteTracker: [ICCV'23] CiteTracker: Correlating Image and Text for Visual Tracking (github.com)

简介

现有的视觉跟踪方法通常以图像块作为目标来跟踪。变化剧烈的目标跟踪困难。 CiteTracker 通过连接图像和文本来增强视觉跟踪中的目标建模和推理。文本生成模块将目标图像块转换为包含其类别和属性信息的描述性文本,为目标提供全面的参考点。动态描述模块来适应目标变化,以实现更有效的目标表示。使用基于注意力的关联模块将目标描述和搜索图像关联起来,以生成相关特征以供目标状态参考。

 

图 1. CiteTracker与现有跟踪方法在目标建模和关联方面的比较。左右部分分别描述了典型的视觉跟踪框架和CiteTracker:首先生成目标对象的文本描述,然后利用文本的特征来估计测试图像中的目标状态,从而实现更全面的目标建模和关联。

  • 特点:使用目标的自适应文本描述作为参考点,并将其与测试图像特征相关联进行跟踪。
  • 开发了一个文本生成模型,该模型具有预定义的开放词汇表,包括类和属性标签,能够基于目标图像块,生成目标的文本描述。以 CLIP 模型为基线构建,将文本与丰富的图像特征连接起来。
  • 为了适应目标随时间的变化,开发了一个动态文本特征模型,会随着目标的变化生成自适应文本特征。最后将目标文本描述的特征与测试图像特征相关联,以生成相关特征,以便进一步估计目标状态。
  • 实验数据集: GOT-10K、LaSOT、TrackingNet、OTB100 和 TNL2K。

方法

目标:给定目标图像片段与跟踪序列中的搜索图像,通过将其表述为图像-文本关联,构建它们之间的稳健关联,从而对目标状态有更全面的理解,应对目标对象的外观变化。为此,CiteTracker首先通过图像-文本转换模块,根据给定的目标图像片段,生成目标的文本特征,然后根据目标的最新状态调整文本特征,最后将文本特征与搜索图像的特征关联起来,实现稳健跟踪。

输入:一个样本图像和一个搜索图像,分别通过文本分支(图2上半)和视觉分支(图2下半)处理。

文本分支:首先使用图像编码器提取给定样本图像的视觉特征,并从测试图像中裁剪出目标位置的目标图像片段(取自前一帧)。然后,通过图像-文本转换模块将目标的视觉特征转换为文本特征,并根据初始目标状态和当前目标状态的文本特征差异,利用文本特征自适应模块调整文本特征。

视觉分支:将样本图像和搜索图像作为输入,并输出测试图像的特征图。最后,图像-文本关联组件将文本分支和视觉分支的输出进行关联,生成用于目标状态预测的关联特征。

图2. CiteTracking算法的总框架,包含三个模块:1)图文转换模块,基于图像样本生成目标对象的文本特征;2)文本特征适配模块,根据当前目标状态调整属性描述的权重;3)图文关联模块,将目标描述特征与测试图像的特征进行关联,生成用于目标状态估计的相关特征。 

图像-文本转换

 

图 3. 图文转换模块结构。以目标图像和预定义的类属性文本词汇作为输入,并输出目标的文本描述(特征)。

目标图像由CLIP模型的图像编码器处理生成图像特征 x,然后将 x 输入到轻量神经网络 hθ(⋅)(Meta-Net)中,生成包含目标信息的目标tokens hθ​(x)。输入的词汇通过text embbeding模块处理,生成word embbeding ci​。

引入 K 个可学习向量 υ1,υ2,...,υK​ 作为针对特定预测任务的提示tokens。给定目标tokens hθ(x) 和提示tokens υ1,υ2,...,υK​,获得每个基于上下文优化的token:υk(x)=υk+hθ(x)。表示提示tokens 被图像特征调节,使其包含与特定图像相关的信息。

第 i 类标签的提示基于图像特征,即 mi(x)={υ1(x),υ2(x),...,υK(x),ci}。这里每个类别标签的提示结合了图像特征和词汇嵌入,捕捉图像和类别之间的关联。

令 t(⋅) 表示原始CLIP文本编码器,第 i 类标签的预测概率计算为:

Sim(⋅,⋅) 计算余弦相似度得分,τ 是一个可学习的温度参数,N 为类标签的数量。目标描述被预测为通过公式(1)计算出最大概率对应的标签。 本文使用一个两层Linear-ReLU-Linear结构实现了Meta-Net,隐藏层将输入维度减少了16倍。

 跟踪相关词汇构建。为了准确描述跟踪目标,我们选择了 MS COCO [25] 数据集中的 80 个类别标签作为类别词汇,其中包含日常生活中最常出现的物体。从 OVAD [4] 数据集中选择了颜色、纹理和材质三种物体属性来描述详细的目标状态。在 GOT-10k 数据集上评估了类别和属性标签预测描述的一致性。

图 4(a) 显示了预测结果一致的情况比例,图 4(b) 显示了视频帧中目标物体的预测值。表明在视频序列中,跟踪物体在类别和属性值方面的预测文本描述是一致的,可以用作目标定位的特征。

动态文本特征生成

在视频中,跟踪目标的状态可能会发生变化。因此将文本特征生成分为类别特征生成和属性特征生成

类别特征 (Tc​):设 Ti​ 是由 CLIP 文本编码器生成的第 i 类标签的文本特征,Tc​ 可以计算为:

pi 是公式 (1) 计算出的每个类别标签的预测概率。将每个类别标签的文本特征 Ti​ 按其预测概率 pi​ 加权并求和,得到类别特征 Tc​。这样可以综合考虑各个类别标签的可能性,使得类别特征能够更好地代表跟踪目标的类别信息。

属性特征 (Ta​):

  • argmax(p_i) 确定了预测概率最高的属性类别索引,表明该属性在当前目标的状态下最具代表性。Ta​ 取该索引对应的文本特征,作为当前跟踪目标的属性特征。

根据目标的变化,调整不同属性特征的权重。颜色、材料和纹理的变化分别表示为 Dcolor、Dmaterial​ 和 Dtexture:

其中 Rattribute 和 Sattribute​ 代表参考目标和当前测试目标具有某一特定属性值的概率(用公式 (1) 计算)。属性变化的绝对值差表示属性在两个目标之间的差异程度。绝对值差越低,目标和搜索图像在该属性上的相似性越高。因此,注意力权重 Watt 可表示为:

  • 用负变化值 −Dattribute 作为 Softmax 函数的输入,是为了使得变化小(差异小)的属性获得更高的权重。Softmax 函数将这些负变化值转换为一个概率分布,即注意力权重 WattWatt​。

最后,根据不同属性的注意力权重,调整属性特征生成动态文本特征:

 Ta​ 是通过公式 (3) 生成的文本特征。

  • 使用权重 Watt 对属性特征 Ta​ 进行加权,得到动态调整后的文本特征 Tatt。
  • 这种方法确保了在目标跟踪过程中,能够根据目标属性的变化对特征进行自适应调整,以提升跟踪的鲁棒性和准确性。

图像-文本关联

用ViT-base提取目标和搜索图像的联合视觉特征 V∈RH×W×C。文本特征 T∈R1×1×CT通过线性层进行调整,使其与视觉特征在通道维度上对齐。然后,通过卷积,用文本特征 T′∈R1×1×C 作为卷积核权重,实现两种特征的关联。

最终的关联特征:

⊙ 表示卷积操作,Latt 是用于通道自适应的线性投影层,Tc​ 表示类别特征,Tco、Tm​ 和 Tt​ 分别代表动态的颜色、材料和纹理特征。

状态估计和训练目标

状态估计:基于图像-文本关联生成的特征,CiteTracker 通过预测头 [Joint feature learning and relation modeling for tracking: A one-stream framework.] 来估计目标状态。该预测头由4个堆叠的 Conv-BN-ReLU 层组成。 输出一个分类得分图 C、用于补偿分辨率下降的偏移图 O 和尺寸图 B。然后,目标状态计算如下:

其中 (xc,yc) 是通过 (xc,yc)=arg⁡max⁡(x,y)Cxy​ 计算的目标中心,(Ox,Oy) 表示从 O 到 (xc,yc) 的偏移,(Bw,Bh) 是从 B 预测出的框尺寸。

训练目标:采用与 OSTrack 类似的训练流程,对三个任务进行联合训练。用加权焦点损失 [24]、L1​ 损失和 GIoU 损失 [32] 分别训练分类、偏移和框尺寸分支。总的损失函数:

其中 λiou=2,λL1=5 是实验中使用的参数。

实验

实验在4个NVIDIA Tesla V100 GPUs上进行。

视觉特征提取:用通过MAE方法[17]预训练的Vision Transformer (ViT-base) [34]模型作为主干网络。用微调后的CLIP模型[30]作为主干来构建所提出的图像-文本转换模型。从测试帧中裁剪目标框面积4倍的搜索图像,并调整为384 × 384像素的分辨率;从参考帧中裁剪目标框面积2倍的图像,并调整为192 × 192像素。

开放词汇类别标签和属性标签来源于MS COCO[25]和OVAD[4]数据集。

CiteTracker在TrackingNet[29]、COCO2017[25]、LaSOT[13]和GOT-10K[18]的训练集上进行训练。

在四个不同的数据集(TNL2K、LaSOT、TrackingNet和GOT-10K)上评估。

  • TNL2K :一个用于评估基于自然语言的跟踪算法的基准。该基准引入了两个新挑战,即对抗样本和模态切换,使其成为评估跟踪算法的稳健基准。
  • LaSOT :一个高质量的长期单目标跟踪基准,平均视频长度超过2500帧。尽管我们的方法没有采用在长期跟踪中起关键作用的更新机制,但它仍然达到了接近最佳方法SwinTrack的结果。CiteTracker重点通过制定稳健的图像-文本关联来处理目标的大幅变化。

  • TrackingNet:用于野外物体短期跟踪的大规模基准,包含511个测试视频,且真实标注被隔离。表1展示了在TrackingNet数据集上的表现。我们的跟踪器在曲线下面积(AUC)上达到84.4%,超越了所有此前发布的跟踪器。这表明我们的跟踪器在应对野外各种变化的短期场景跟踪中具有很强的竞争力。

  • GOT-10k:GOT-10k是一个大规模跟踪数据集,包含超过560类运动物体和87种运动模式,强调在测试集中类不相关性。测试集的真实标注被保留,我们使用作者提供的测试平台来评估我们的结果。我们遵循一次性训练规则,即跟踪器只在GOT-10k的训练集上进行训练。

图5。提出的算法和OSTrack方法在4个变化剧烈的挑战性序列上的可视化结果。CiteTracker在生成的文本描述的帮助下表现良好(在每一行图片的上方显示),而仅使用视觉线索的OStrack方法在处理这些序列时表现不太好。

总结:CiteTracker通过关联图像和文本以更稳健和准确的方式执行目标建模和目标状态推断。所提出的算法首先构建一个图像-文本转换模型,从给定的目标图像生成目标的文本描述特征,从而实现更抽象和准确的目标表示。此外,我们开发了一个文本特征自适应模型来生成动态文本特征和图像-文本相关性,以关联目标文本和搜索图像,以进一步预测目标状态。

评估表明将语言信号纳入视觉跟踪对提高跟踪性能有显著的影响。

复现

处理数据

下载lasot数据集:LaSOT Dataset | Papers With Code

共200多G 

GOT-10K数据集:GOT-10k: Generic Object Tracking Benchmark (aitestunion.com)

共66G 

训练

准备数据

Set project paths

Run the following command to set paths for this project

python tracking/create_default_local_file.py --workspace_dir . --data_dir ./data --save_dir ./output

报错1:ModuleNotFoundError: No module named 'lib'

Traceback (most recent call last):File "tracking/create_default_local_file.py", line 9, in <module>from lib.train.admin import create_default_local_file_ITP_train
ModuleNotFoundError: No module named 'lib'

解决:

在终端输入:export PYTHONPATH=$PYTHONPATH:/data/CiteTracker-main/lib/train/admin

手动添加环境变量,解决。运行后得到如下两个文件:

报错2:ImportError: libGL.so.1: cannot open shared object file: No such file or directory

解决:pip install opencv-python-headless

测试

输入:

python tracking/test.py citetrack vitb_384_mae_ce_32x4_ep300 --dataset lasot --threads 16 --num_gpus 4

报错:

相关文章:

  • 输送线相机拍照信号触发(博途PLC高速计数器中断立即输出应用)
  • 解决npm i 安装报npm ERR! code E401
  • 2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)
  • mybatis框架基础以及自定义插件开发
  • 极米科技:走出舒适圈,推动数据架构现代化升级 | OceanBase 《DB大咖说》
  • JavaScript 根据关键字匹配数组项
  • 算法练习题17——leetcode54螺旋矩阵
  • Go语言设计与实现 学习笔记 第六章 并发编程(3)
  • python基础语法十一-赋值、浅拷贝、深拷贝
  • 零知识证明在BSV网络上的应用
  • YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)
  • Flask中实现WebSocket需要什么组件
  • 如何在mac上玩使命召唤手游?苹果电脑好玩的第一人称射击游戏推荐
  • 面对Redis数据量庞大时的应对策略
  • 【Linux 内核构建】如何查看 Linux 系统中可以选择的内核有哪一些?如何切换 Linux kernel 版本?
  • 深入了解以太坊
  • [PHP内核探索]PHP中的哈希表
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Angular2开发踩坑系列-生产环境编译
  • Angular4 模板式表单用法以及验证
  • django开发-定时任务的使用
  • ECS应用管理最佳实践
  • extract-text-webpack-plugin用法
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript类型识别
  • java第三方包学习之lombok
  • js对象的深浅拷贝
  • python 装饰器(一)
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 成为一名优秀的Developer的书单
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端临床手札——文件上传
  • 我与Jetbrains的这些年
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​卜东波研究员:高观点下的少儿计算思维
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # Maven错误Error executing Maven
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #pragma once与条件编译
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (C++)八皇后问题
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (MATLAB)第五章-矩阵运算
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)利用ant在Mac 下自动化打包签名Android程序