ECCV 2018 MemTrack:《Learning Dynamic Memory Networks for Object Tracking》论文笔记
理解出错之处望不吝指正。
本文模型叫做MemTrack。本文的模型是基于相似学习的,主要有两个创新点:①.设计一个动态记忆网络;②.使用门控剩余模板和初始模板,生成最终的匹配模板。模型的整体架构如下:
-
大致流程
①.对当前帧,使用上一帧的预测位置进行剪裁,得到搜索区域
;
②.对进行特征提取,这里特征提取模块使用和SiamFC一样的结构;
③.使用注意力机制,获得输出,使LSTM的输入更多的注意object,而不是background;
④.将和LSTM的上一个隐层状态
一起输入LSTM,得到隐层状态
和记忆库控制信号
(包括read key
、read strength
、衰减率
和一些偏置项);
⑤.使用read key 、read strength
获得read weight
,再进一步获得剩余模板
;
⑥.对剩余模板和初始模板
进行加权累加,得到最终匹配模板
;
⑦.使用最终匹配模板与搜索区域
进行相似度计算,得到当前帧的预测结果,将结果进行剪裁得到
;
⑧.对进行特征提取,得到新的匹配模板
,根据一些规则,将其写入动态记忆库。
-
注意力机制
先对进行特征提取,得到
,使用
的池化核对
进行AvgPooling得到
,对
分为
个patch,第
个patch用
表示,根据下式得到输出
:
其中,通过下式计算:
效果如下图:
-
LSTM控制
如图所示:
-
Memory Reading
通过下式得到read key 、read strength
(用于表示read key的置信度):
再计算出read weight :
这里的是用于计算余弦相似度的函数。最终得到剩余模板:
-
获得最终模板
最终模板可以通过下式得到:
其中,是通过LSTM得到的。
-
Memory Writing
得到新的匹配模板后,根据以下三条准则,将其写入到动态记忆库中:
①.如果的置信度低(包含大量背景信息),则不进行write;
②.如果和以前帧相比变化不大,则用其替代以前帧;
③.如果和以前帧相比变化较大,则用其覆盖动态记忆库中一个新位置。
文中定义了一个write weight:
这里的代表零向量,
是read weight,
是allocation weight(负责指定write的位置)。
是“写门”,
是“读门”,
是“分配门”,是通过LSTM计算得到的:
上式满足。
allocation weight通过下式计算:
其中,用于表示动态记忆库中不同位置的访问频次,
是衰减因子。
将write weight和擦除因子(erase factor)结合,进行动态记忆库的写入:
其中,
是LSTM得到的衰减率,
。
-
实验
OTB-2015
OTB-2013
VOT-2016
速度