ADNet视频目标跟踪论文笔记
文章目录
-
1. 论文基本信息
-
2. 论文所要解决的问题
-
3. 研究的核心思路
-
4. 数学符号
-
5. 关键概念及其定义
- 5.1 动作集(Action Set)
- 5.2 状态空间(State Space)
- 状态转移规则(State Transition Rule)
- 奖励机制(Reward Mechanism)
-
6. 网络结构
-
7. 离线监督学习
-
8. 离线强化学习
-
8.1 跟踪模拟(tracking simulation)
-
8.2 动作迭代
-
8.3 强化学习建模
-
8.4 RL算法描述
-
9. Online Adaptation
-
10. 总结
-
1. 论文基本信息
- 论文标题:基于深度强化学习的动作决策网络用于视觉追踪
- 论文作者:Sangdoo Yun(Seoul National University, South Korea等)
- 论文出处:CVPR 2017
- 在线阅读:http://openaccess.thecvf.com/content_cvpr_2017/papers/Yun_Action-Decision_Networks_for_CVPR_2017_paper.pdf
- 补充材料:http://openaccess.thecvf.com/content_cvpr_2017/supplemental/Yun_Action-Decision_Networks_for_2017_CVPR_supplemental.pdf
- 源码1:https://github.com/hellbell/ADNet (MATLAB版本)
- 源码2:https://github.com/ildoonet/tf-adnet-tracking (TensorFlow版本)
2. 论文想要解决的问题
当前大多数深度学习的跟踪算法存在如下两方面不足:
- 该算法在选择候选样本时表现出一定的无效性,在实际应用中也面临这一问题。
例如,在MDNet算法中,则采用了密集采样的策略:计算出每个候选区域对应的得分值,并将具有最高得分值的样本选作目标图像的核心部分。
然而其不足之处在于进行了不必要的多次迭代计算过程:最终导致冗余计算资源的浪费。 - 在训练深度学习模型时通常会消耗大量高质量标注数据。
值得注意的是:半监督模式下无法利用未标记的数据(视频帧)进行训练。
传统的方法依赖于预先收集和整理的大规模标注数据集进行训练:这使得其在实际应用中往往难以满足需求。
尤其是那些对检测精度有严格要求的应用场景:则需要自行构建高质量的数据标注集合。
3. 核心思想
针对上述第一项问题,在研究过程中发现可以通过action-driven机制来捕捉目标物体的运动特征,并在此基础上提高对高质量候选样本的选择效率。针对上述第二项问题,则采用了强化学习技术,在该研究中所涉及的数据集中进行标注并进行训练工作,最终获得了前面提到的动作驱动型模型。
论文的核心思想如下图所示:

可以看到该图中论文的核心思想就是Action-decision原则,在此基础之上通过不同的动作来进行连续采样的过程,并最终定位到目标的位置。
4. 数学符号
本文的数学符号较多,在这里先建立一个数学符号表格备查,如下所示:
| 符号 | 含义 | |
|---|---|---|
| l | 帧号 | |
| t | 迭代次数 | |
| s_t | 第t次迭代后 的状态 | |
| p_t | 第t次迭代时的图像块 | |
| d_t | 第t次迭代时的动作动态(action dynamics),它包含过去的k次历史行为 | |
| b_t | 第t次迭代初始时的bounding-box | |
| m (from 论文Figure. 2) | 可选的m种动作,对于本文,m=11(即论文Figure. 3中定义的11种action) | |
| m (from 论文Eq. (6)) | training过程中一个batch的样本数量 | |
| F | 完整的视频画面图像 | |
| a_{t-1} | 第t-1次迭代的动作(action) | |
| \Delta {x^{\left( t \right)}}, \Delta {y^{\left( t \right)}} | 第t次迭代时,在x和y两个方向上的试探位移量 | |
| r\left( {{s_t}} \right) | 第t次迭代后 得到的奖励,在迭代过程中该数值为0 | |
| W | 深度网络权重 | |
| p(a | s_t;W) | 给定状态s_t下的行为概率(action probability) |
| p(target | s_t;W) | 给定状态s_t下,对应图像块是目标的概率 |
| \left \{ F_l \right \}_{l=1}^{\mathcal{L}} 和 \left \{ G_l \right \}_{l=1}^{\mathcal{L}} | 随机选择的一段视频帧画面 以及对应的ground-truths | |
| \left \{ u_l \right \}_{l=1}^{\mathcal{L}} | 随机选择的一段视频帧数据 ,其中u_l = \left \{ s_{t,l}, a_{t,l} \right \}_{t=1}^{T_l} | |
| T_l | 在RL训练过程中,第l帧内部的迭代步数 | |
| z_{t,l} | 跟踪结果得分。论文用IoU指标计算该得分,并将该得分作为奖励 |
Note that the text contains two instances of the letter m, each representing a distinct concept: one indicating its dimensionality in one diagram, while in Section 4.1 of the paper, it denotes the batch size.
5. 重要概念及定义
5.1 Action
Action代表强化学习代理的行为,在ADNet的跟踪机制中总共包含11种行为这些行为被划分为移动缩放与终止三大类如图所示

5.2 State
State被定义为强化学习代理执行某种操作后所处的状态,在ADNet论文中所述算法将每次运行周期性地执行这一操作,并伴随状态发生更新。具体而言,在每一帧的循环周期内会重复该过程以完成整个计算流程。其对应的数学表达式如下所示:
\begin{aligned} s_t &\text{ 被定义为 } (p_t 和 d_t 的组合) \\ &= (\phi(b_t, F), (\varphi(a_{t-1}),\varphi(a_{t-2}),\ldots,\varphi(a_{t-k})) ) \\ &\text{ 其中 } a_{t-k}\text{ 表示 } a 在时间 } t-k\text{ 处的值} \\ &\text{ 标签 } (1)\\ &\end{aligned}
改写说明
5.3 状态转移函数(State transition function)
该状态转移过程主要包含两个方面:一是基于图像块区域的变化进行的状态转换;二是基于action dynamics变化所导致的状态更新。前者指的是在当前状态下通过执行特定操作(如平移、缩放等),会导致采样的图像块区域发生变化。后者则指由于执行操作后会更新d_t的内容(因为引入了新的动作记录信息)。
5.4 奖励(Reward)
在强化学习过程中,论文对每一个状态s_t计算奖励r(s_t),其计算公式为:
r(s_t) is assigned a value of 1 when the intersection-over-union (IoU) between b_t and G exceeds 0.7, else it is assigned a value of -1. The equation is labeled as (2).
其中b_t是状态s_t时采样的图像块,G表示ground-truth。
6. 网络结构
ADNet跟踪算法的网络结构如下图所示:

通过观察图形可以看到该网络体系的关键组成部分是一个基于VGG-m的设计。值得注意的是本文提出的网络架构具有独特的特性,在经过fc5全连接层计算后将输出结果进行融合具体对应于m种动作与k个历史记录所构成的一个m \times k维向量。
在官方MATLAB源码中可以看出该网络系统的完整结构如图所示

在图中, fc6_2实际上是论文建模中的fc7层,具体而言,也可以将其视为用于判断输入图像块以选择相应的动作从而尽量接近目标的机制
7. Off-line Supervised Learning
在离线监督学习阶段中,算法经过训练并达成所有网络权重(即\mathbf{w}_1, \mathbf{w}_2, \dots, \mathbf{w}_7),其中\mathbf{w}_1, \mathbf{w}_2, \dots, \mathbf{w}_7被定义为该算法中的网络权重集合;特别地,在此设定中\mathbf{w}_7对应于MATLAB源代码中的fc6_2层)。每个training样本由该算法自动生成,并且每个training样本都包含以下三种信息:
- 图像分块\left \{ p_j \right \}
- 动作标记\left \{ o_{j}^{\left ( act \right )} \right \}
- 类别标识\left \{ o_{j}^{\left ( cls \right )} \right \}
其中,上述动作标签o_{j}^{\left ( act \right )}的定义为:
o_{j}^{\left( act\right)} is defined as the argument that maximizes the IoU between \bar{f}(p_{j},a) and G, denoted by Equation (3).
这里指代的是ground-truth图块,在当前图块p_j基础上施加动作$a后会生成一系列新的采样结果。这些操作完成后会得到若干个候选结果,在这些候选结果中我们需要通过计算每个候选对象与其对应的基础目标框之间的交并比(IoU)值来确定最优匹配的动作
类别标签o_{j}^{\left ( cls \right )}的定义为:
o_{j}^{\texttt{cls}} =
\begin{cases}
1 & \text{当 } IoU(p_j, G) > 0.7 \
0 & \text{其他情况下}
\end{cases}\tag {4}
在监督学习框架中,该算法基于随机梯度下降方法对网络权重进行优化训练。其损失函数属于multi-task类型,在计算过程中采用批量大小m来表示单个批次样本的数量。以^符号标记的变量代表网络预测输出
这是一个用于计算目标行为损失和类别损失的公式。其中,
L_{SL} = \text{平均}(o_j^{\text{acted}}, o_j^{\hat{\text{acted}}}) + \text{平均}(o_i^{\text{cls}}, o_i^{\hat{\text{cls}}})
并标记为公式(5)。
观察到下面所示的公式中可以看出,在监督学习过程中包含了两个主要任务:同时涉及两种不同的损失计算——一种用于动作预测(action prediction),另一种用于分类任务(classification)。其总和即构成了监督学习阶段中的损失函数L_s^t(f) = L_a^t(f) + L_c^t(f)。值得注意的是,在这里虽然应用了动作相关的概念(action-related concept),但这种设计并未真正体现出强化学习的核心特征——具体而言,在这种情况下并没有采用类似于Q-learning的方法或策略梯度等求解机制(policy gradient)。因此可以发现,在这种情况下所定义的部分与大多数深度学习架构具有相似之处——它们都是基于直接利用标签值差异来进行优化设计而没有引入额外的概念或方法
8. Off-line Reinforcement Learning
在上述supervised learning完成之后进行离线强化学习阶段,在此期间算法仅专注于训练网络权重矩阵中的前六层参数\mathbf{w}_1到\mathbf{w}_6而跳过第七层参数\mathbf{w}_7的更新(等同于未对预测分数 preceding fully connected layer进行优化)。研究中采用的强化学习方法是基于policy gradient策略(参考文献:R. J. Williams等人的著作《Simple statistical gradient-following algorithms for connectionist reinforcement learning》发表于机器学习领域权威期刊)。
8.1 模拟跟踪(tracking simulation)
在强化学习过程中,在RL阶段中

观察结果表明,在[...]期间
注: 虽然论文中的训练视频数据在每个帧上都附带了ground-truth信息, 然而, 在模拟跟踪过程中, 除了关键帧之外, 即使有其他帧带有标注信息, 算法也不会采用这些非关键帧的数据.
模拟跟踪部分的代码如下所示(跟踪 + 评价):
for frameIdx = frameStart+1:frameEnd
curr_img = imread(fullfile(vid_info.img_files(frameIdx).name));
if(size(curr_img,3)==1), curr_img = cat(3,curr_img,curr_img,curr_img); end
curr_gt_bbox = vid_info.gt(frameIdx,:);
[curr_bbox, action_history, ~, ~, ims, actions, ah_onehot, ~] = ...
tracker_rl(curr_img, curr_bbox, net_conv, net_fc, action_history, opts);
ah_onehots = cat(2, ah_onehots, ah_onehot);
imgs = cat(4, imgs, ims);
action_labels = cat(1, action_labels, actions);
end
% target value (z)
if overlap_ratio(curr_gt_bbox, curr_bbox) > 0.7
ah_pos = cat(2, ah_pos, ah_onehots);
imgs_pos = cat(4, imgs_pos, imgs);
action_labels_pos = cat(1, action_labels_pos, action_labels);
else
ah_neg = cat(2, ah_neg, ah_onehots);
imgs_neg = cat(4, imgs_neg, imgs);
action_labels_neg = cat(1, action_labels_neg, action_labels);
end
从上述代码可以看出,在模拟跟踪过程中,算法主要基于RL阶段的专用 自由跟踪函数tracker_rl(curr_img, curr_bbox, net_conv, net_fc, action_history, opts)运行。该函数在执行过程中没有进行任何评估操作,在跟踪过程中也无需依赖标注数据(ground-truth information)。当这一段视频的自由跟踪任务完成后才会采用IoU指标进行性能评估,并且仅针对最后一帧 的结果进行评价。这种设计也体现了论文提出的第二个研究动机:大多数传统tracking算法在训练深度学习模型时都依赖于大量人工标注的数据,在半监督学习模式下无法有效利用未标注的视频帧信息。
8.2 动作迭代
研究动作迭代,需要弄清楚三个问题:
- 在哪些情况下需要执行动作迭代?
- 在每次迭代过程中如何确定执行哪些操作?原因是什么?
- 在什么条件下决定终止迭代过程?
首先开始解决第一个问题。采用动作迭代方法用于处理tracking行为,在RL训练阶段以及真实测试环境中均会应用这一技术手段。
在本研究中发现,在强化学习(RL)阶段的任务具有明确的目的性:即系统性地寻求实现目标的方法(对于本文而言,则是指涵盖了一系列的动作)。值得注意的是,在RL阶段涉及的学习过程与监督学习(SL)存在显著差异:因为它不仅关注于策略的学习本身(即一系列动作),还特别强调了迭代过程的作用)。在此背景下,《Action Dynamics》概念被提出:它主要用于记录过去各个迭代步骤所采取的一系列动作,并以d_t符号表示这一集合。
d_t=\left [ \psi (a_{t-1}),\,\psi (a_{t-2}),\,\dots ,\,\psi (a_{t-k})\right ]\quad (6)
在此处论文中将变量k赋值为数值十,在每一次迭代过程中共有十一种不同的动作可供选择。因此,在该过程结束时所得向量d_t的维度数达到了一百一十分之多。值得注意的是,在这个向量中ψ(·)函数被用来执行one-hot编码操作:当某个特定的动作被选中时其对应位置会被标记为数值一其余位置则标记为零
在进行模拟跟踪(tracking simulation)的过程中
a_{t,l}=\text{arg}\underset{a}{\text{max}}p\left ( a \mid s_{t,l}; W_{RL} \right ) \tag {7}
该公式所表达的意思是在基于当前网络权重参数以及第t次迭代时的状态下,在第l帧画面中选择具有最大输出概率的动作a作为此处迭代应采取的动作。此处如何理解p\left ( a \mid s_{t,l}; W_{RL} \right )?根据论文的设计思路,在该层中动作得分为一个11维向量形式的具体表现就是每个维度分别对应一个动作的概率值

该算法在运行过程中每次迭代阶段仅需在每一轮中选择当前最高分对应的动作即可
RL阶段中的动作迭代代码如下所示:
while (move_counter <= num_action_step_max)
bb_step(move_counter,:) = curr_bbox;
my_net_conv.mode = 'test';
[curr_feat_conv, im] = get_conv_feature(my_net_conv, curr_img, curr_bbox, opts);
ims(:,:,:, move_counter) = im;
conv_feats(:,:,:, move_counter) = curr_feat_conv;
curr_feat_conv = gpuArray(curr_feat_conv);
my_net_fc.mode = 'test';
labels = zeros(1);
ah_oh = get_action_history_onehot(action_history(1:opts.num_action_history), opts);
ah_oh = reshape(ah_oh, [1,1,numel(ah_oh),1]);
ah_onehot(:,move_counter) = ah_oh;
inputs = {'x10', curr_feat_conv, 'action_history', gpuArray( ah_oh)};
my_net_fc.eval(inputs);
my_net_pred = squeeze(gather(my_net_fc.getVar('prediction').value));
my_net_pred_score = squeeze(gather(my_net_fc.getVar('prediction_score').value));
curr_score = my_net_pred_score(2);
[~, my_net_max_action] = max(my_net_pred(1:end));
if (prev_score < -5.0 && curr_score < prev_score)
if randn(1) < 0.5
my_net_max_action = randi(11);
end
end
actions(move_counter) = my_net_max_action;
curr_bbox = do_action(curr_bbox, opts, my_net_max_action, imSize);
% when come back again (oscillating)
[~, ism] = ismember(round(bb_step), round(curr_bbox), 'rows');
if sum(ism) > 0 ...
&& my_net_max_action ~= opts.stop_action
my_net_max_action = opts.stop_action;
end
action_history(2:end) = action_history(1:end-1);
action_history(1) = my_net_max_action;
this_actions(move_counter) = 1;
if my_net_max_action == opts.stop_action
break;
end
move_counter = move_counter + 1;
prev_score = curr_score;
end
从上述代码中可以看出,在操作过程中存在两种终止动作:第一种情况是当遇到终止动作时,则终止此轮迭代;第二种情况则是当达到或超过最大循环次数时,则终止此轮迭代。
8.3 强化学习建模
在此基础上,我们推导出动作选择机制,并建立了奖励计算模型。此时可应用策略梯度(policy gradient)方法构建强化学习框架,在此框架下首先构建目标函数模型。
\begin{aligned} J\left ( W_{RL} \right )&= \mathbb{E}_{u_{l} \sim p\left (u_{l};W_{RL} \right)} \left [ R\left ( u_{l} \right ) \right ] \\ &= \sum_{u_{l} \in \mathbb{U}} p\left ( u_{l}; W_{RL} \right ) \cdot R\left ( u_{l} \right ) \\ &= \sum_{u_{l} \in \mathbb{U}} p\left ( u_{l}; W_{RL} \right ) \cdot \frac{1}{T_l}\sum_{t}^{T_l} z_{t,l} \\ &= \sum_{u_{l} \in \mathbb{U}} p\left ( u_{l}; W_{RL} \right ) \cdot z_{T_l,l} \end{aligned} \tag {8}
论文中使用\left \{ u_l \right \}_{l=1}^{\mathcal{L}}来表示从一段随机选取的视频序列中提取的多帧样本数据集样本集合 ,其中每个样本u_l仅代表该视频序列中的单一分割帧;其内部结构包含T_l个动作迭代单元 ,每个单元对应一个动作循环过程
u_l = \left \{ s_{t,l}, a_{t,l} \right \}_{t=1}^{T_l} \tag {9}
全体帧的集合即为\mathbb{U},p\left ( u_{l}, W_{RL} \right )表示在当前权重W_{RL}条件下第l个frame所选择的动作概率分布,而R\left ( u_{l} \right )则表示第l个frame所获得的奖励。
z_{t,l}表示跟踪结果得分,论文用IoU指标计算该得分,并将该得分作为奖励。
这样的严谨表述方式也间接表明了:在论文设计方案中,强化学习(RL)的训练仅限于部分视频帧,并且每个视频帧内部都会经历多轮动作迭代。
上述目标函数公式的最后两行很关键,这里再重复写一下:
\begin{aligned} J\left( W_{RL} \right ) & = \text{累加所有 }u_{l}\text{ 属于 }\mathbb{U}\text{ 的 }p\left( u_{l}; W_{RL}\right ) \\& \quad \times \text{平均值 }\left( 1/T_{l}\right ) \\& \times \text{累加 }z_{t,l}\text{ 从 }t=1\text{ 到 }T_{l} \\& = \text{同样地,在计算过程中会发现 } \\& J\left( W_{RL}\right ) \\& = \text{累加所有 }u_{l}\text{ 属于 }\mathbb{U}\text{ 的 }p\left( u_{l}; W RL)\times \\& z_{{T}_{l}, l} \ \ \ \ \ \ \ \ ( 10 ) \ endaligned
为什么\frac{1}{T_l}\sum_{t=1}^{T_l} z_{t,l} = z_{T_l,l}?这是因为根据论文中所述的跟踪模拟机制,在计算奖励时仅基于关键帧的信息进行标注。即,在整个计算过程中仅考虑关键帧位置处的奖励。
利用Markov假设,这里目标函数中的p\left ( u_{l}; W_{RL} \right )可以写成:
\begin{array}{l} \;\;\;\;p\left( { {u_l};{W_{RL}}} \right)\\ = p\left( { {s_{1,l}}} \right)\Pi _{t = 1}^Tp\left( { {s_{t + 1,l}}\left| { {s_{t,l}},{a_{t,l}}} \right.} \right)p\left( { {a_{t,l}}\left| { {s_{t,l}};{W_{RL}}} \right.} \right)\\ = \left[ {p\left( { {s_{T + 1,l}}\left| { {s_{T,l}},{a_{T,l}}} \right.} \right)p\left( { {a_{T,l}}\left| { {s_{T,l}};{W_{RL}}} \right.} \right)} \right] \cdot \\ \;\;\;\;\left[ {p\left( { {s_{T,l}}\left| { {s_{T - 1,l}},{a_{T - 1,l}}} \right.} \right)p\left( { {a_{T - 1,l}}\left| { {s_{T - 1,l}};{W_{RL}}} \right.} \right)} \right] \cdot \\ \;\;\;\; \ldots \\ \;\;\;\;\left[ {p\left( { {s_{4,l}}\left| { {s_{3,l}},{a_{3,l}}} \right.} \right)p\left( { {a_{3,l}}\left| { {s_{3,l}};{W_{RL}}} \right.} \right)} \right] \cdot \\ \;\;\;\;\left[ {p\left( { {s_{3,l}}\left| { {s_{2,l}},{a_{2,l}}} \right.} \right)p\left( { {a_{2,l}}\left| { {s_{2,l}};{W_{RL}}} \right.} \right)} \right] \cdot \\ \;\;\;\;\left[ {p\left( { {s_{2,l}}\left| { {s_{1,l}},{a_{1,l}}} \right.} \right)p\left( { {a_{1,l}}\left| { {s_{1,l}};{W_{RL}}} \right.} \right)} \right] \cdot \\ \;\;\;\;p\left( { {s_{1,l}}} \right) \end{array} \tag {11}
现在,我们求解目标函数J\left( W_{RL} \right)的偏导数,有:
该算法通过计算损失函数J关于参数W_rl的梯度来进行优化更新过程
该论文在公式中采用了对数似然方法计算概率密度函数p(u_l;W_{RL})的对数形式。因此,在这种情况下推导出的目标函数J(W_{RL})关于W_{RL}的梯度等于期望值E[u_l∼p(u_l;W_{RL})][∇W{RL} log p(u_l;W_{RL}) R(u_l)]。
将公式(11)代入到上式,并忽略掉与W_{RL}无关的项,得:
\begin{aligned} {\nabla _{ {W_{RL}}}}J\left( { {W_{RL}}} \right) &= {\mathbb{E}_{ {u_l} \sim p\left( { {u_l};{W_{RL}}} \right)}}\left[ { {\nabla _{ {W_{RL}}}}\log p\left( { {u_l};{W_{RL}}} \right)R\left( { {u_l}} \right)} \right]\\ &= {\mathbb{E}_{ {u_l} \sim p\left( { {u_l};{W_{RL}}} \right)}}\left[ { {\nabla _{ {W_{RL}}}}\log \left[ {p\left( { {s_{1,l}}} \right)\Pi _{t = 1}^{ {T_l}}p\left( { {s_{t + 1,l}}\left| { {s_{t,l}},{a_{t,l}}} \right.} \right)p\left( { {a_{t,l}}\left| { {s_{t,l}};{W_{RL}}} \right.} \right)} \right] \cdot R\left( { {u_l}} \right)} \right]\\ &= {\mathbb{E}_{ {u_l} \sim p\left( { {u_l};{W_{RL}}} \right)}}\left[ { {\nabla _{ {W_{RL}}}}\log \left[ {p\left( { {s_{1,l}}} \right)\Pi _{t = 1}^{ {T_l}}p\left( { {s_{t + 1,l}},{a_{t,l}};{W_{RL}}} \right)} \right] \cdot R\left( { {u_l}} \right)} \right]\\ &= {\mathbb{E}_{ {u_l} \sim p\left( { {u_l};{W_{RL}}} \right)}}\left[ { {\nabla _{ {W_{RL}}}}\left[ {\log p\left( { {s_{1,l}}} \right) + \sum\limits_{t = 1}^{ {T_l}} {\log p\left( { {s_{t + 1,l}},{a_{t,l}};{W_{RL}}} \right)} } \right] \cdot R\left( { {u_l}} \right)} \right]\\ &\propto {\mathbb{E}_{ {u_l} \sim p\left( { {u_l};{W_{RL}}} \right)}}\left[ { {\nabla _{ {W_{RL}}}}\left[ {\bcancel{ {\log p\left( { {s_{1,l}}} \right)}} + \sum\limits_{t = 1}^{ {T_l}} {\log p\left( { {s_{t + 1,l}},{a_{t,l}};{W_{RL}}} \right)} } \right] \cdot R\left( { {u_l}} \right)} \right]\\ &\approx {\mathbb{E}_{ {u_l} \sim p\left( { {u_l};{W_{RL}}} \right)}}\left[ { {\nabla _{ {W_{RL}}}}\sum\limits_{t = 1}^{ {T_l}} {\log p\left( { {s_{t + 1,l}},{a_{t,l}};{W_{RL}}} \right)} \cdot R\left( { {u_l}} \right)} \right]\\ &= {\mathbb{E}_{ {u_l} \sim p\left( { {u_l};{W_{RL}}} \right)}}\left[ {\sum\limits_{t = 1}^{ {T_l}} { {\nabla _{ {W_{RL}}}}\log p\left( { {s_{t + 1,l}},{a_{t,l}};{W_{RL}}} \right)} \cdot R\left( { {u_l}} \right)} \right]\\ &=\sum\limits_{ {u_l} \in \mathbb{U}} {p\left( { {u_l};{W_{RL}}} \right) \cdot \left[ {\sum\limits_{t = 1}^{ {T_l}} { {\nabla _{ {W_{RL}}}}\log p\left( { {s_{t + 1,l}},{a_{t,l}};{W_{RL}}} \right) \cdot R\left( { {u_l}} \right)} } \right]}\\ &=\sum\limits_l^{\mathcal L} {p\left( { {u_l};{W_{RL}}} \right) \cdot \left[ {\sum\limits_{t = 1}^{ {T_l}} { {\nabla _{ {W_{RL}}}}\log p\left( { {s_{t + 1,l}},{a_{t,l}};{W_{RL}}} \right) \cdot R\left( { {u_l}} \right)} } \right]}\\ &= \sum\limits_l^{\mathcal L} {\sum\limits_{t = 1}^{ {T_l}} {p\left( { {u_l};{W_{RL}}} \right) \cdot {\nabla _{ {W_{RL}}}}\log p\left( { {s_{t + 1,l}},{a_{t,l}};{W_{RL}}} \right)} \cdot R\left( { {u_l}} \right)}\\ &\approx \frac{1}{ {\mathcal L}}\sum\limits_l^{\mathcal L} {\sum\limits_{t = 1}^{ {T_l}} { {\nabla _{ {W_{RL}}}}\log p\left( { {s_{t + 1,l}},{a_{t,l}};{W_{RL}}} \right)} \cdot R\left( { {u_l}} \right)}\\ &\approx \frac{1}{ {\mathcal L}}\sum\limits_l^{\mathcal L} {\sum\limits_{t = 1}^{ {T_l}} { {\nabla _{ {W_{RL}}}}\log p\left( {a_{t,l}}, { {s_{t + 1,l}};{W_{RL}}} \right)} \cdot R\left( { {u_l}} \right)}\;\;(本文得出的推导结果)\\ &\approx \frac{1}{ {\mathcal L}}\sum\limits_l^{\mathcal L} {\sum\limits_{t = 1}^{ {T_l}} { {\nabla _{ {W_{RL}}}}\log p\left( {a_{t,l}}, { {s_{t,l}};{W_{RL}}} \right)} \cdot R\left( { {u_l}} \right)}\;\;(论文得出的推导结果)\\ \end{aligned} \tag {15}
关于上述公式(15),有两点尚需要进行进一步确认:
- 公式(15)的倒数第二行和最后一行的log表达式中,本文推导得出的是\log p\left( {{s_{t + 1,l}},{a_{t,l}};{W_{RL}}} \right),与论文的表达式\log p\left( {{s_{t ,l}},{a_{t,l}};{W_{RL}}} \right)略有出入,需要进行进一步核实。
- 公式(15)的倒数第3行,可以发现,它同倒数第4行的关系是:将\sum\nolimits_l^{\mathcal L} {\sum\nolimits_{t = 1}^{{T_l}} {p\left( {{u_l};{W_{RL}}} \right)} }替换成了\frac{1}{{\mathcal L}}\sum\nolimits_l^{\mathcal L} {\sum\nolimits_{t = 1}^{{T_l}} {} }并做了近似处理,相当于将加权求和变成了平均值。论文给出的解释是sample approximation (参考文献:Williams, R. J. (1992). Simple statistical gradient-following algorithms for connectionist reinforcement learning. Machine learning, 8(3-4), 229-256. 在线阅读),目前还需要弄清楚这里面的原理。
该表达式的计算结果是可以获得的;即:
R\left( u_l \right) = {z_{{T_l},l}}
由此可知,在该表达式中梯度具有可求解性;进而我们可以通过随机梯度上升算法对目标函数进行优化运算。
该增量损失函数\Delta {W_{RL}}与各时间步t的梯度乘积成正比于各时刻状态s_{t ,l}与动作a_{t,l}之间的对数似然概率的累加结果有关
8.4 RL算法描述
在RL阶段论文中提出的算法大致可分为两个核心模块:一个是基于策略的学习(trtl)环节另一个是基于模型的追踪(trl)机制(其中trtl模块的设计直接依赖于trl环节的支持)。
算法中的数学符号含义可以参考论文笔记的第3节。
Algorithm 1 Training ADNet with reinforcement learning (RL)

在Algorithm 1的操作过程中,在每一步骤中涉及的关键变量包括:视频帧(F)、ground-truth(G)、动作(a)、矩形框(b)以及动作动态(d)。论文首先通过调用Tracker过程模拟目标追踪,在追踪完成后利用关键帧的 ground-truth 数据对追踪效果进行评估,并根据评估结果对网络参数进行反向传播更新训练以优化模型性能。
Algorithm 2 Tracking Procedure of ADNet

在Algorithm 2中,其输入的参数有三个:
- 确定上一帧的画面边界区域
- 显示从当前到上一帧的动作轨迹(相当于历史记录)
- 当前显示的画面
该算法在接收到输入参数时,首先生成初始图像块p_{t,l},\;(t=1);随后,在每次动作迭代过程中,通过网络前向传播计算出得分最高的动作,并根据这一动作更新新的bounding-box以及采样后的图像块;如此不断循环直至满足终止条件(即完成停止动作或达到最大迭代次数)。这样一来,就能够准确确定目标在当前帧中的位置了。
9. Online Adaptation
在跟踪过程中,该论文开发了一种算法,并实现了在线自适应功能。这里的自适应核心内容是网络权重的更新。
这里可以再回顾一下论文的网络结构:

在在线适应阶段(online adaptation phase),论文并未对所有网络权重进行全局更新。相反,在线学习过程中仅实现了部分特定参数的学习任务——通过固定权重集合\left\{w_{1},w_{2},w_{3}\right\}并动态地更新了另一个权重集合\left\{w_{4},w_{5},w_{6},w_{7}\right\}——这与其所采用的网络架构设计原则相一致。具体而言,在线学习过程中仅实现了部分特定参数的学习任务——通过固定权重集合\left\{w_{1},w_{2},w_{3}\right\}并动态地更新了另一个权重集合\left\{w_{4},w_{5},w_{6},w_{7}\right\}——这与其所采用的网络架构设计原则相一致(参考MDNet的网络结构设计:https://arxiv.org/pdf/1510.07945v2.pdf)。
该论文仅通过监督学习机制来更新网络权重,在线更新的目的在于使跟踪器能够适应视频中不断变化的场景。算法描述见下文:
Algorithm 3 Online Adaptation of ADNet in Tracking

论文首先在视频的第一帧执行采样和网络权重的更新操作。在后续每一帧中调用Algorithm 2中的Tracker过程来完成物体坐标的初步定位,并根据该坐标的置信度进行评估。如果置信度不足,则重新检测目标位置。此外,在一定时间间隔内会更新一次网络权重参数以适应视频中的场景变化需求
10. 总结
该文提出了一种基于深度强化学习的技术用于视频目标追踪。其创新点体现在利用奖励机制使深度网络能自行决定如何趋近于目标物体。借助这一思路实现的方法不仅减少了密集采样需求还降低了对训练数据标注的需求。适用于那些缺乏通用化且开放的数据集的情况(如需自建数据集)从而特别适合应用于特定场景研究提供了新的研究方向
