Target-Aware Deep Tracking学习笔记
这篇文章的亮点就是他们提出的一个target-ware机制,他们认为对于同一个物体,他们对于最后分类的贡献应该是在相同的通道上的。因为跟踪目前都是将分类的网络迁移过来,然而分类的网络其实处理的是多类别的区分,而跟踪就只是处理前景和背景两类,所以直接迁移其实是浪费了很多类别资源,而同一类的物体所激活的通道应该是类似的,所以这篇文章就在通道上加了一个类似dropout的操作,只用到了属于当前跟踪目标所需要的通道。他们用了一个回归的loss去指导通道的选择。
1.现有的跟踪器存在的问题
a.来自普通图像的预先训练的CNN模型对感兴趣的目标对象是不可知的,并且将它们从背景中分离出来时效率较低。
b.即使预处理模型的训练集中出现了目标对象,从最后一个卷积层提取的深度特征通常只保留高层次的视觉信息,对精确定位或尺度估计效果较差。
c.最先进的深度跟踪器需要很高的计算负荷,因为来自训练模型的深度特征是高维的。
2.创新点
反向传播的梯度表示了不同目标的显著性,通过对梯度进行全局平均池化,能够选出代表目标物体的滤波器,从而选出重要特征。且不同的损失函数具有不同的梯度,从而选取不同滤波器和不同target-aware特征。
3.贡献
a.提出了回归损失和ranking loss来选择最有效的表示当前目标的特征。
b.将target-aware特征融入到Siamese框架下进行跟踪,并减少了跟踪时使用的特征,加快了速度。
4.网络框架
上图是这篇文章的网络结构,template分支和search分支都要经过上面橙色和蓝色的网络,得到的结果concentrate在一起,然后在用类似于SiamFC的方法来预测,上采样得到结果,下面讲两个分支之前,文章提到了,通过对最终的feature方向求导,得到特定层的每个通道的梯度值,这个梯度值就代表这个通道对最终分类的贡献,所以通过梯度来选择使用的通道就可以了,也就是对卷积核的一个加权过程:
其中KaTeX parse error: Expected group after '^' at position 2: x^̲'是基于通道重要性∆得到输出特征子空间,而x是输出特征空间, ϕ是一个选择重要通道的映射函数。
其中
Δ
i
Δ_i
Δi表示第i个通道的重要性,
G
A
P
(
.
)
G_AP(.)
GAP(.)指的是全局平均池化函数,L是损失函数,
z
i
z_i
zi指的是第i个过滤器输出特征。
4.1 Target-active features via regression
这里他们通过一个逐像素的loss来指导通道的选择,他们先是在ground truth上加了一个高斯的mask,然后将预测出来的结果与这个mask做逐像素的损失,然后再把这个loss反传回去去指导通道的选择,loss的定义如下:
其实也是一个最小二乘法的loss,下图4c展示了用这个loss的好处(空间上的attention):
4.2 scale-sensitive features via ranking
作者认为,不仅是不同类的物体在不同channel上的表现是不一样的,不同尺度的物体在不同channel上的响应也是不同的,所以他们搞了一个scale的选择机制,只激活与第一帧尺度一样的channel。训练的时候就是把标记的数据中,bbox尺度一样的放在一起训练,使得这两个之间的loss小,也就是下面这个公式:
他们为了适应只用这个尺度,就在跟踪的时候把找到的bbox resize成各个尺度。
5.Tracking
a.模型初始化:在初始化的时候,回归的loss和ranking的loss是分开训练的,分别用第一帧的ground truth训练,直到网络收敛;
b.在线跟踪:将回归分支和rank分支的特征concate一下,然后对比search region和template的相似度,找到最相似的就行了,为了适应尺度变化,他们还把search region做了不同的尺度变化,然后去找,文章里没有提到最终的bbox怎么来的,估计还是用到SiamFC中的上采样吧。
6.Experiment