【DAT NIPS2018】目标跟踪阅读笔记

Deep Attentive Tracking via Reciprocative Learning 论文地址 代码

写在前面

这篇论文其实从名字中也可以看出来,又是一篇引入attention的目标跟踪文章,但这篇文章跟以往的把attention map直接乘到指定层数据中的不一样,他是把attention map作为损失函数的一个正则化项,通过影响损失函数来优化网络。整个网络是基于MDNet的,就是修改了损失函数,所以速度也很慢,也需要在线的fine-tune,大概1FPS。

Motivation

注意力机制近几年陆陆续续被应用在目标跟踪里,目前的attention方法就是在潜在目标处设置大的权重,或者是使用channel attention的方法,这些方法对数据做了一些过滤,同时肯定会造成一些数据的损失。再者,只通过一帧学习到的attention不够具有区分度,而且一个小的特征权重可能就会导致分类错误。

Contribution

  • 利用了一个循环学习的算法在通过检测跟踪的框架中发现attention;
  • 将attention map作为损失函数的正则化项,这样可以得到鲁邦的特征;
  • 很多对比实验表明这篇文章在很多benchmark上表现很好。

Algorithm

在这里插入图片描述
如上图,对于每个输入,需要提取一定个数的正样本和负样本。对于每个样本,通过前向传播得到分类score,然后通过反向传播得到attention map,然后使用这些map加入到损失函数中,当成正则化项,用来训练这个分类器。在测试阶段,不需要去生成attention map,直接通过网络来预测目标位置就可以了。

Attention Exploitation

由于神经网络从第一层到最后一层,通过不断的激活与各层的映射,每个输入的样本最后都会得到一个分类的向量,这个向量的每一个值代表该分类的score。我们其实不知道样本和最后这个值的关系,这里就用一阶泰勒展开来近似整个网络前向的过程:

f c ( I ) ≈ A c T I + B f_c(I) \approx{A_c}^TI + B fc(I)AcTI+B

这里一阶泰勒展开其实也就是把网络的前向传播过程近似为一次函数,其实 A c T {A_c}^T AcT就是这个函数的梯度。这里 A c {A_c} Ac是通过反向传播计算出来的,把网络第一层的梯度当成是 A c {A_c} Ac。值得注意的是,在这次梯度下降不改变网络参数,然后这个网络只取梯度为正的,所以整个 A c {A_c} Ac都是正数。这边不需要太纠结这个 A c {A_c} Ac的正负,因为在实际实现中 A c {A_c} Ac并没有乘到输入的proposal中,而是将正则化之后的 A c {A_c} Ac用在损失函数中,只用到了它的均值和方差,和 A c {A_c} Ac中具体某位置的值没关系了~

Attention Regularization

由于tracking-by-detection的网络是把输入分为前景和背景两类,所以对于一个样本,这篇文章会生成两个attention map,一个是positive的,一个是negative的。对于一个正样本,要尽量使得目标所在区域的attention值比较大,相应的,负样本中对应目标区域的attention值要比较小。下面是正负样本的正则化项, y = 1 y=1 y=1 表示正样本:
R ( y = 1 ) = σ A p μ A p + μ A n σ A n R_{(y=1)}=\frac{\sigma_{A_p}}{\mu_{A_p}} + \frac{\mu_{A_n}}{\sigma_{A_n}} R(y=1)=μApσAp+σAnμAn
y = 0 y=0 y=0 表示负样本:
R ( y = 0 ) = σ A n μ A n + μ A p σ A n R_{(y=0)}=\frac{\sigma_{A_n}}{\mu_{A_n}} + \frac{\mu_{A_p}}{\sigma_{A_n}} R(y=0)=μAnσAn+σAnμAp

把他们加入到损失函数中:

L = L C E + λ ⋅ [ y ⋅ R ( y = 1 ) + ( 1 − y ) ⋅ R ( y = 1 ) ] L = L_{CE}+\lambda \cdot[ y\cdot R_{(y=1)}+(1-y) \cdot R_{(y=1)}] L=LCE+λ[yR(y=1)+(1y)R(y=1)]
从以上的公式可以看出,通过不断减小损失函数,对于正样本,其实是增加了其TP减少了FN的值,对于负样本,增加了TN,减少了FP。也就是宁愿少检测出正样本,也要放弃一些错误率。通过这个机制,可以大大提高网络的精度。

Tracking Process

这篇文章的网络与MDNet一样,三个卷积层+三个全连接层,其中卷积层参数与VGG-M一样的,全连接层参数是随机初始化的,而且这个网络不需要线下的预训练。

1、模型初始化

在第一帧中,随机提取 N 1 N_1 N1个样本,把其中与目标框的IoU来确定其为正样本还是负样本。然后使用这个样本来训练网络,这边只更新全连接层参数。

2、在线检测

根据上一帧检测出来的位置来提取 N 2 N_2 N2个样本,然后将这些样本输入网络,对得分最高的样本进行bbox回归,得到最终的框。

3、模型更新

每帧提取出的 N 2 N_2 N2个样本,根据其与最终框的IoU分为正样本和负样本,每个T帧就用这些样本来更新网络全连接层参数。

Experiments

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Conclusion

这篇文章最大的贡献与创新点就是提出将attention当成损失函数的正则项,并不影响网络中特征提取的过程。

优点:
  • 引入注意力机制,并介绍了注意力机制一种新的用法,给后面的优化提供了很多可能性;
  • 只是简单的加入了正则化项,就能将精度比MDNet提升这么多;
  • 不需要offline的预训练。
缺点:
  • 其实精度不是很高,精度比CCOT低一些,但是比ECO低挺多的,比18年CVPR和ECCV的论文精度还差,而且速度很慢;
  • 还是需要在跟踪的时候做梯度下降来更新模型,速度很慢;
  • 没有完善的理论解释为什么这么做管用,只是通过对比实验得到。

把代码扒下来跑了一下,精度一直上不去,还没有MDNet好,不知道是不是我的锅,不过我没动代码,如果不是代码的问题,那可能是我环境的问题吧

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值