《Learning Dynamic Memory Networks for Object Tracking》 论文地址
作者自己提供的github源代码,没有VOT接口 代码地址
Motivation
近几年来,基于模板匹配的目标跟踪方法被大量提出来,然而基于模板匹配的方法存在的通病是模板的自适应能力比较差,无法适应目标在视频序列中发生的一些变化。为了能够做到自适应的模板更新,这篇文章引入了LSTM(Long short time memory)来控制模板的更新,LSTM是在自然语言中应用较多的,利用LSTM更新就不需要在线fine-tune。之前的模板更新方法都是用阈值加权的方式得到当前模板,但LSTM使用的是额外的储存空间,这样存储的空间比较灵活。由于很多tracker在跟踪的时候都是在一整张图或者一个未知的区域来搜索,搜索效率比较低,所以这篇文章引入了注意力机制,来将搜索区域集中在潜在的目标上。
算法流程
下图是这篇文章的算法流程,先用一个CNN提取图片特征(这里使用SiameseFC),提取出来的特征被传入控制读写Memory栈的LSTM,LSTM返回一个残差的模板,然后将这个模板与目标特征进行卷积,得到响应度图,然后用与SiameseFC一样的双三次插值方法得到最终的boundingbox,并把这个结果写到Memory栈中。
1、特征提取
利用上一帧检测到的位置来得到这一帧的搜索区域,如果按照SiameseFC方法就是以上一帧的目标为中心,边长大两倍的区域。
2、注意力机制
由于我们不知道目标到底在搜索区域的哪一块地方,使用这个注意力机制可以让输入LSTM的search region更加靠近目标。这里文章使用滑动窗口的方式在原search patch上得到很多子窗口,根据每个窗口与上一帧的相似性来对这些窗口进行加权平均,然后得到一个attention的search region。如下图:
3、Memory读取(选取用来匹配的模板)
这个过程就是根据提供的readkey 和 Memkey, 其实说白了就是对比刚刚注意力机制输出的search region和Memory栈中各个模板的相似性,将相似性最高的输出。(这一部分论文里很多公式,然后还有一些LSTM的东西论文里没有讲,感兴趣的可以去自行去学习一下~)
4、残差模板学习
文章里面提到,如果只是这么单纯的做,很容易出现过拟合的情况,所以才引入了残差模板。他们提到通过将conv5层的网络可视化后,发现有些通道是没用的,所以利用了一个channel-wise的删除掉一些通道,并将得到的特征与最初的模板相加,得到最终的残差模板。
5、Memory Writing
这一块主要涉及Memory栈中模板的更新,模仿最初的LSTM,不赘述。
实验结果
总结
优点:
- 引入了基于空间位置的注意力机制;
- 指出直接用最像的模板匹配会过拟合,从而使用残差模板;
- 将自然语言处理中的方法移植到目标跟踪上,其实这也提醒我们,现在做视觉,做人工智能,单单用一个领域的知识可能没什么大突破了,还是需要很多跨学科、跨领域的应用。
缺点
- 其实看实验结果也能知道,其实这篇文章的精度其实并不高,都没有与18年最好的算法进行对比,主要原因有一点就是它没有做boundingbox回归,使得无法适应尺度变化;
- 对LSTM的应用只是生搬硬套,而且可能LSTM不太适合做跟踪?
- 使用的训练数据比较少,现在还是需要数据驱动的;
- 最终的结果通过上采样得到的,不够精确,要是想要做多尺度的,只能用多个不同尺度的模板。