Fast Template Matching and Update for Video Object Tracking and Segmentation学习笔记
一、创新点
传统视频对象跟踪和分割算法步骤
第一步,是对当前帧进行实例分割,生成候选提案池。
第二步,根据目标模板信息,进行匹配过程,在所有候选方案中找到正确的方案作为最终结果。
第三步,是使用当前帧的预测完全替换目标模板。
本文作者主要针对后两者的不足进行改进,具体改进如下:
(1)为了改进第二步,论文中提供了一种简单的方式,通过选择匹配方法(基于iou的匹配或基于外观的匹配),在运行速度和精度之间进行权衡。 匹配方法的选择是由RL智能体的动作历史决定的,这大大减少了我们方法的运行时间。
(2)为了改进第三步,在观察到目标模板更新机制对于避免漂移的重要性的同时,我们认为应该丢弃一些质量较差的预测结果,并在这种情况下保持目标模板不变。 具体地说,我们采用RL agent根据预测结果的质量来决定是否更新目标模板,有效地防止了漂移问题,提高了方法的准确性。
二、算法详解
步骤:
第一步,采用基于iou的匹配,生成临时的初步结果。 具体地说,首先确定目标的搜索区域b,该搜索区域b将被馈送到一般实例分割网络(例如YOLACT,Mask R-CNN)以生成多个候选预测。 然后,采用基于iou的匹配方法,在所有候选预测中找出初步结果。
第二步,根据RL Agent判断的初步结果的正确性和质量,确定目标对象信息(目标模板)的更新机制。 如果是好的,目标模板将被初步结果完全替换。否则,初步结果将被丢弃,目标模板将保持不变。 最终根据目标模板生成最终结果。
第三步,是确定基于外观的重新检测是否是
f
t
f_t
ft所必需的。 如果目标丢失,也就是说,初步结果连续N帧都很糟糕,则需要使用基于外观的匹配重新检测目标。 否则,不需要对
f
t
f_t
ft重新检测,并且将处理下一帧
f
t
+
1
f_{t+1}
ft+1。 就基于外观的重新检测而言,整个帧而不是
b
s
b_s
bs将被馈送到一般实例分割网络中。 然后,通过基于外观的匹配方法从所有候选预测中选出一个新的结果。 再次执行第二步以生成新的最终结果。 请注意,对于每个帧,执行第三步的次数不超过一次。
网络模型:
其中搜索区域是通过以下方式获取的:
其中
b
m
b_m
bm是前一帧中所有对象的最小覆盖框,而
b
s
b_s
bs是通过
b
m
b_m
bm膨胀获得的,存在三种膨胀比,包括一个大膨胀比、中膨胀比和小膨胀比。首先,计算每个目标在两个相邻帧之间的位移距离。如果任何对象大于阈值,则选择大膨胀比。否则,如果两个目标对象彼此靠近(其边界框之间的IoU不为零),则选择较小的膨胀比。如果不是,则选择中膨胀比。
目标模板由目标的边界框
T
b
o
x
T_{box}
Tbox、分割mask
T
m
a
s
k
T_{mask}
Tmask、T_{box}内裁剪的图像
T
b
o
x
′
T_{box'}
Tbox′和分割mask内的图像
T
m
a
s
k
′
T_{mask'}
Tmask′和整个帧
T
f
r
a
m
e
T_{frame}
Tframe,相应的预测结果中也包含了这些信息,具体如下图所示:
基于IOU的匹配将具有最高IOU分数的候选框预测视为正确的预测,如下所示:
基于外观的匹配将外观相似度最高的候选预测视为正确预测:
其中T表示的是模板,而P表示的预测结果。
快速的基于IOU的匹配对于大多数正常帧都表现得很好,而基于外观的匹配只有在少数困难的情况下才是必不可少的,特别是当目标消失并再次出现时。
动作历史从本质上说明了预测的好坏。 如果RL代理对连续N帧预测为A1,则很有可能目标已经丢失,因此必须采用基于外观的匹配来检测整个帧上的目标。
State and Reward
状态
s
t
s_t
st是帧
f
t
f_t
ft的RL智能体的输入,包括帮助RL智能体预测最佳动作
a
t
a_t
at的信息。
在我们的方法中,
s
t
s_t
st由两个部分组成,以向RL智能体提供足够的信息。
第一部分,
S
T
S_T
ST分别由模板的下图四个部分组成。
而第二部分,则是预测结果的上图四种信息,
最终的
s
t
s_t
st是将
S
P
S_P
SP和
S
T
S_T
ST特征图的连接,
具体地说,我们采用在ImageNet分类数据集[6]上预先训练的RESNET-50来提取
S
T
S_T
ST和
S
P
S_P
SP的特征图。 我们使用RESNET-50的前5个块,得到
S
T
S_T
ST和
S
P
S_P
SP的大小为r1×1×2048的特征映射,而st的大小为r1×1×4096。 最后,st将被馈送到RL代理以预测帧ft的动作。
反映视频序列的最终分割结果的准确性的奖励函数被定义为
r
t
=
g
(
s
t
,
a
t
)
r_t=g(s_t,a_t)
rt=g(st,at):
其中
J
t
J_t
Jt指的是
P
m
a
s
k
P_mask
Pmask和ground truth mask之间的iou。
J
t
J_t
Jt立方的使用扩大了好动作奖励和坏动作奖励之间的差异,有助于加快RL Agent的训练速度。
Actor-Critic Training
在我们的方法中,RL智能是在“Actor Critic”框架下训练的,这是一个流行的RL框架,由两个子网络组成,包括一个用于生成动作的“Actor”子网络和一个用于检查该动作质量的“Critic”子网络。 一旦RL代理被完全训练,在推理时间期间只使用“Actor”子网络。
在我们的“Actor Critic”框架中,给定当前帧
F
t
F_t
Ft,第一步是将状态
s
t
s_t
st馈送到“Actor”网络中,并生成动作
a
t
a_t
at,以决定是否使用预测结果更新目标模板。 进行此动作后,也将获得相应的奖励
r
t
r_t
rt。
r
t
r_t
rt由根据(7)的区域相似度
J
t
J_t
Jt计算。
我们的“Critic”网络将以基于价值的方式进行训练。 具体地说,参数更新如下:
在(8)和(9)中,w和
w
′
w'
w′表示“Critic”模型在更新前后的权重。
l
c
l_c
lc是“Critic”模型的学习率。 $δ_t&是表示实际分数与预测分数之差的TD误差。
V
w
′
(
s
t
)
V_{w'(s_t)}
Vw′(st)指的是状态
s
t
s_t
st在更新前由“Critic”模型预测的累计奖励。 γ指的是贴现率。
“Actor”网络将在“Critic”网络之后以基于政策的方式进行更新,具体如下
通过这种方式,我们的“Actor-Critic”框架避免了基于价值和基于政策的方法在培训过程中的缺点。 换句话说,我们的RL代理允许在每一帧都进行训练和更新,而不是等到视频序列结束,这极大地加快了训练过程,同时保持了训练的稳定性。