论文笔记
发表时间:2020
期刊会议:ECCV
方向分类: 目标跟踪
研究内容
做了什么:
本文提出了一个能够在视频序列中传播目标附近场景信息的跟踪结构,这种场景信息被用来实现提高目标预测的场景感知能力。
解决了什么问题:
已存在的跟踪器只依靠外观来跟踪,没有利用任何周围场景中的信息,容易被相似的物体干扰。
现状不足
- 已存在的跟踪器只依靠外观来跟踪,没有利用任何周围场景中的信息;
- 在线更新模板的方法虽然也利用了已跟踪的帧,但是这样的策略不能捕捉到场景中其他目标的位置和特点。
创新点
- 提出了一个新的跟踪结构,能捕捉场景信息,并将其表示为一个位置状态向量(state vector);
- 提出了一个传播模块,该模块能将上一帧中目标附近的对象位置状态映射到后续帧;
- 提出了一个预测器模块,该模块能够有效的融合目标外观模型的输出与场景信息对目标位置进行预测;
- 使用RNN网络模块来更新新的场景信息。
总体架构
四个模块:1.Propagation Module;2.Appearance Model;3.Target Predictor;4.State Update
总体思路:在传统的跟踪流程中增加一个state vector(传统跟踪是指仅使用appearance model和predictor),作用是保存上一帧中目标附近的场景信息并映射到当前帧。实际上,这个向量表示了上一帧中当前位置是属于背景、目标还是相似干扰物。
跟踪流程:使用两个线索进行跟踪:1)目标的外观,2)场景信息(目标附近其他对象的位置信息)。对于目标的外观,使用正常的跟踪流程即可得到。例如DiMP中预测一个目标外观模型,然后使用这个模型在测试帧上进行卷积得到最后的响应图
s
t
s_t
st。对于场景信息,由state vector得到。给定前一帧的场景信息
h
t
−
1
h_{t-1}
ht−1 ,通过Propagation 模块得到当前帧的场景信息
h
^
t
−
1
{\hat h_{t - 1}}
h^t−1,和
h
^
t
−
1
{\hat h_{t - 1}}
h^t−1中每个位置的值的置信度
ξ
t
{\xi _t}
ξt。最后将通过外观模型得到的响应图
s
t
s_t
st,当前帧的场景信息
h
^
t
−
1
{\hat h_{t - 1}}
h^t−1,以及置信度
ξ
t
{\xi _t}
ξt输入到最后的预测模块中得到最后的位置响应图。
模块细节
- State 向量的构造
- 为了知道目标周围的场景信息,本文为目标附近的每个区域维持了一个state 向量。具体的,对于深度特征 x t x_t xt中的每个空间位置 r ∈ Ω r \in \Omega r∈Ω,作者设置了一个S维的state向量 h r h^r hr,即 h ∈ R W × H × S h \in {\mathbb{R}^{W \times H \times S}} h∈RW×H×S。这些state向量包含了有益于单目标跟踪的信息,例如他包含了这个位置对应的是目标,背景还是相似干扰物的信息。
- 在首次跟踪时,使用一个包含了两个卷积层的小网络 Υ \Upsilon Υ来初始化state向量,这个网络使用初始帧中目标标注 B 0 B_0 B0作为输入,生成一个特定目标位置的单通道标签图。
- 在传播过程中,给定测试帧 t t t,使用propagation模块将state向量 h t − 1 h_{t-1} ht−1从前一帧的位置转换到当前帧的位置,即 ( h ^ t − 1 , ξ t ) = Π ( x t , x t − 1 , h t − 1 ) ({\hat h_{t - 1}},{\xi _t}) = \Pi ({x_t},{x_{t - 1}},{h_{t - 1}}) (h^t−1,ξt)=Π(xt,xt−1,ht−1). 其中 ξ t {\xi _t} ξt表示传播后每个位置的state向量的置信度。
- 在更新过程中,使用最后得到的位置响应图 ς t {\varsigma _t} ςt和外观模型预测得到的响应图 s t s_t st来更新state向量。简单来说就是使用当前帧的响应图信息来更新场景信息,例如重新设置不正确的信息,将新进入的对象标记为干扰物。
- State 传播模块
这一部分对应于propagation module,作用是将上一帧中目标附近各个位置对应的场景信息传播到当前帧。
输入:前一帧的深度特征 x t − 1 x_{t-1} xt−1,当前帧的深度特征 x t x_t xt,前一帧的场景信息 h t − 1 h_{t-1} ht−1.(注意这里的深度特征与外观模型中使用的深度特征不一定相同)过程:目的是计算两帧之间的密集对应性,并将这种对应性表示为一种概率分布,其中 p ( r ′ ∣ r ) p(r'|r) p(r′∣r)表示在已知当前帧位置r的情况下,该位置的目标对应于上一帧位置r’处的目标的概率。
- 对于当前帧的所有像素点我们可以得到一个4D的 CV ∈ R W × H × W × H {\text{CV}} \in {\mathbb{R}^{W \times H \times W \times H}} CV∈RW×H×W×H(cost volume),他表示了当前帧中每个位置与上一帧中每个位置的匹配损失。CV中每个元素 CV ( r ′ , r ) {\text{CV}}(r',r) CV(r′,r)的计算方法是:上一帧特征中以位置r’为中心的3x3窗口与当前帧特征中以位置r为中心的3x3窗口计算互相关。为了计算的高效性,不计算所有像素点之间的对应关系,只计算离目标一定距离( d m a x d_{max} dmax)之内的像素点之间的对应关系。
- 下一步对这个对应关系CV进行处理。将CV切片 C V r ′ ( r ) ∈ R W × H {\text{C}}{{\text{V}}_{r'}}(r) \in {\mathbb{R}^{W \times H}} CVr′(r)∈RW×H(表示上一帧位置r’与当前帧所有位置的对应关系)通过两个卷积块得到处理后的匹配损失 ϕ ( r ′ , r ) \phi (r',r) ϕ(r′,r)(r’是一个常数,表示上一帧的位置),然后使用softmax对 ϕ ( r ′ , r ) \phi (r',r) ϕ(r′,r)进行处理得到初始对应关系 ϕ ′ ( r ′ , r ) = exp ( ϕ ( r ′ , r ) ) ∑ r ′ ′ ∈ Ω exp ( ϕ ( r ′ , r ′ ′ ) ) \phi' (r',r) = \frac{{\exp (\phi (r',r))}}{{\sum\nolimits_{r'' \in \Omega }{\exp (\phi (r',r''))}}} ϕ′(r′,r)=∑r′′∈Ωexp(ϕ(r′,r′′))exp(ϕ(r′,r))。softmax操作聚合当前帧维度上的信息,并提供两个帧之间位置的软关联。类似的,为了聚合上一帧的位置信息,将 ϕ ’ \phi’ ϕ’通过两个更多的卷积块并在前一帧的位置维度上使用softmax。然后我们就得到了上一帧位置r’处的场景信息在当前帧每个位置r处的概率分布** p ( r ′ ∣ r ) p(r'|r) p(r′∣r)。
- 最后就是在上一帧state向量的基础上根据 p ( r ′ ∣ r ) p(r'|r) p(r′∣r)来计算当前帧的state向量(当前帧位置r处的state向量应该是与上一帧中对应关系最高的state向量)。
h ^ t − 1 r = ∑ r ′ ∈ Ω h t − 1 r ′ p ( r ′ ∣ r ) \hat h_{t - 1}^r = \sum\limits_{r' \in \Omega } {h_{t - 1}^{r'}p(r'|r)} h^t−1r=r′∈Ω∑ht−1r′p(r′∣r)- 在使用 h ^ t − 1 r \hat h_{t - 1}^r h^t−1r进行目标定位时我们有必要知道由上一帧传播得到的当前帧位置r处的场景信息是否正确,因此针对当前帧每个位置r处的概率分布 p ( r ′ ∣ r ) p(r'|r) p(r′∣r)估计一个置信度 ξ t r {\xi _t^r} ξtr。 p ( r ′ ∣ r ) p(r'|r) p(r′∣r)中的值表示我们对当前帧位置r对应于上一帧某个位置的自信程度,正常情况下应该是呈正态分布。但当 p ( r ′ ∣ r ) p(r'|r) p(r′∣r)呈均匀分布时,这在另一方面体现出的是一种不确定性,这时上述公式计算的是 h t − 1 r ′ h_{t-1}^{r'} ht−1r′的均值,计算出的 h ^ t − 1 r \hat h_{t - 1}^r h^t−1r是不可信的。为此本文使用 p ( r ′ ∣ r ) p(r'|r) p(r′∣r)的负香农熵来得到 h ^ t − 1 r \hat h_{t -1}^r h^t−1r的置信度(感觉就是计算与均匀分布的相似程度,越相似越不可信):
ξ t r = ∑ r ′ ∈ Ω p ( r ′ ∣ r ) log ( p ( r ′ ∣ r ) ) \xi _t^r = \sum\limits_{r' \in \Omega } {p(r'|r)\log (p(r'|r))} ξtr=r′∈Ω∑p(r′∣r)log(p(r′∣r))
这个 ξ t r \xi _t^r ξtr随后会被用来决定是否信任 h ^ t − 1 r \hat h_{t - 1}^r h^t−1r用来计算最后的目标置信分数。输出:当前帧的每个位置r处的state向量 h ^ t − 1 r \hat h_{t - 1}^r h^t−1r,当前帧每个位置r处state向量的置信度 ξ t r \xi _t^r ξtr
- Target Confidence Score 预测
这一部分对应于Predictor模块,预测当前帧中目标的位置。
输入:场景信息 h ^ t − 1 \hat h_{t-1} h^t−1,场景信息置信度 ξ t {\xi _t} ξt,外观模型的预测输出 s t s_t st。( s t s_t st对该位置进行背景与目标的分类, h ^ t − 1 \hat h_{t-1} h^t−1包含了该位置在上一帧的背景与目标的分类信息, ξ t {\xi _t} ξt表达了场景信息中每个位置的置信度)
过程:将三个输入在通道维度上进行concatenate,然后经过两个卷积块,一个sigmoid层,最终得到中间的位置响应图 ξ t {\xi _t} ξt。但这个响应图在目标与其他物体交错时变得不可靠,为了处理这个情况,对响应图进行了进一步的处理。具体的,设定一个阈值 μ \mu μ,使用一个指示函数将响应图中小于这个阈值的全部mask掉。注意mask操作是可微操作。
输出:最终的位置响应图 ς t {\varsigma _t} ςt.
- State更新
这一部分对应于State Update模块,根据当前帧的信息更新State向量。
输入: s t s_t st, ς t {\varsigma _t} ςt, h ^ t − 1 \hat h_{t-1} h^t−1
过程:具体的功能是标记新的干扰物,修正错误的state向量。模块包含一个卷积门控循环单元(ConvGRU,是一种RNN网络)。首先将 s t s_t st与 ξ t {\xi_t} ξt的最大值concatenate到一起得到ConvGRU的输入 f t ∈ R W × H × 4 {f_t} \in {\mathbb{R}^{W \times H \times 4}} ft∈RW×H×4,并将 h ^ t − 1 \hat h_{t-1} h^t−1作为ConvGRU前一个时间步的隐藏状态(hidden states)。然后ConvGRU使用输入的 f t f_t ft更新 h ^ t − 1 \hat h_{t-1} h^t−1的状态得到 h t h_t ht。
输出:新的state向量 h t h_t ht
- 训练方式
输入:一个视频序列
处理:采样 N t r a i n N_{train} Ntrain帧用来构造外观模型,再采样一个包含 N s e q N_{seq} Nseq帧的子序列,用来对模型进行训练
过程:文章来源:https://www.toymoban.com/news/detail-856634.html
- 正常跟踪训练:首先使用初始帧初始化一个state向量 h 0 h_0 h0,然后传播给下一帧得到 h ^ 0 \hat h_0 h^0,并预测目标 ξ 1 {\xi_1} ξ1,最后使用预测得到的目标分数对state向量进行更新得到$ h_1$。重复这个过程直至序列结束。
- 为了保证propagation模块能够得到学习,添加了一个小的网络头来预测state向量是属于目标还是背景。
- 因为外观模型预测的 s t s_t st在大部分情况下是准确的,因此predictor模块有可能只是 s t s_t st的恒等变换,无法利用state向量。为了避免这种情况,训练期间在 s t s_t st上随机加上一些干扰峰,激励预测器去利用场景信息来排除干扰。
损失计算:文章来源地址https://www.toymoban.com/news/detail-856634.html
- 计算最终的 ξ t {\xi _t} ξt与标签之间的均方差损失 L t p r e d L_t^{pred} Ltpred
L t p r e d = ∥ ς t − z t ∥ 2 L_t^{pred} = {\left\| {{\varsigma _t} - {z_t}} \right\|^2} Ltpred=∥ςt−zt∥2- 这里 z t z_t zt是高斯函数生成的标签
- 计算predictor预测的原始 ξ t {\xi _t} ξt与标签之间的损失 L t p r e d , r a w L_t^{pred,raw} Ltpred,raw
- 计算网络头对传播前的state向量分类的损失 L t s t a t e L_t^{state} Ltstate,使用二分类交叉熵损失计算
- 计算网络头对传播后的state向量分类的损失 L t s t a t e , p r o p L_t^{state,prop} Ltstate,prop,使用二分类交叉熵损失计算
总损失如下:
L = 1 N s e q − 1 ∑ t = 1 N s e q − 1 L t p r e d + α L t p r e d , r a w + β ( L t s t a t e + L t s t a t e , p r o p ) L = \frac{1}{{{N_{seq}} - 1}}\sum\limits_{t = 1}^{{N_{seq}} - 1} {L_t^{pred} + \alpha L_t^{pred,raw} + \beta (L_t^{state} + L_t^{state,prop})} L=Nseq−11t=1∑Nseq−1Ltpred+αLtpred,raw+β(Ltstate+Ltstate,prop)
到了这里,关于【论文阅读】Know Your Surroundings: Exploiting Scene Information for Object Tracking的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!