ECCV 2018 DSLT:《Deep Regression Tracking with Shrinkage Loss》论文笔记
理解出错之处望不吝指正。
本文模型叫做DSLT,将跟踪任务视为回归问题去解决。主要贡献包括:①.提出一种收缩损失函数,降低背景信息中的那些简单负样本对损失函数的贡献;②.使用残差连接,融合多个卷积层和特征图。具体的网络结构如下图所示:
在上图中,红色虚线左侧是特征提取层,文中采用的是VGG-16。右侧是回归网络,使用第一帧进行训练,并逐帧更新。
-
收缩损失函数
传统的回归跟踪问题可视为下式所示的优化问题:
其中代表卷积操作,
代表卷积的权重,
是使用高斯函数生成的样本的软标签。将其写成损失函数的形式如下:
观察上图我们可以看出,对于一个输入的patch,输出的响应图和软标签
中,其实背景信息的差别并不大,但是由于这种简单的背景信息(负样本)较多,导致对于整张图的损失函数来说,简单负样本的贡献较大,这就是文中所说的数据不平衡问题。
我们使用表示每次迭代得到的响应图,
代表响应图中的一个位置的值(区间[0,1]中的一个值),
代表该位置的标签(1或者0),可以定义“不相似度”为
,写成均方误差形式,可定义损失函数:
最近有一篇文献中指出,在损失函数中增加一个调节项可以减轻数据不平衡的问题。构造出如下所示的损失函数:
为啥上式可以减轻数据不平衡问题?说说个人理解,不知道对不对。比如现在有两个位置,,
(我们将
视为简单样本,
视为困难样本),使用
损失时,前者的损失是0.09,后者的损失是0.64。若使用
损失,前者的损失是0.027,后者的损失是0.512。而我们可以算出0.64/0.09大约为7.1,0.512/0.027约为19。这样,从比例上看,使用
损失时,简单负样本的贡献程度变得较小。
为了简便,文中使用的情况举例。作者的意思是,我们使用
损失,既使简单样本的损失变小了,但同时也使困难样本的损失变小了,这样不好。于是,作者提出了一个函数来代替
,形如下式:
式中和
分别是超参数,而这个函数绘制出来如下图所示:
我们可以看出,当的时候,函数的输出接近1,而
的时候,函数的输出小于1。这样就可以只对简单样本添加惩罚,使其损失变小,而对困难样本不造成影响。于是,损失函数就变成了:
使用其重写损失函数:
文中设置。
作者说,这个损失函数可以提高跟踪效果,加速训练,加快收敛。
-
残差连接
文中说,ECO是基于多个卷积层独立学习了一个CF,CREST是基于一个单独的卷积层学习一个基础的残差连接网络,而本文的模型先使用残差连接融合多个卷积层,然后再进行回归学习。作者说,本文的模型对不同层级的语义信息进行了充分的利用,而不是像ECO和CREST仅仅用于响应图的融合。
-
实验
OTB
Temple Color 128
VOT2016
不同的损失函数