摘要
利用强化学习方法提出性能与速度均衡的跟踪器,可以离线训练,在线微调,并且基于深度强化学习半监督学习。
背景
目前跟踪方法主要问题,根据跟踪模型匹配在搜索区域选择候选框的方法低效,并且要求足够多的标记数据集。
本文提出动作决策网络(Action-decison network,ADNet)进行一系列动作决策跟踪目标。
第一列是两个跟踪视频的初始帧与目标位置,第二,三列是一系列动作后终止时目标跟踪结果。
ADNet 学习如何采取动作的策略,决策网络用卷积网络拟合,输入是裁剪过的目标图片输出是动作的条件分布,这种方法减少搜索步骤并精准定位无需边框回归。
ADNet 使用监督学习与强化学习分步训练,并在跟踪时在线调整网络。
ADNet
网络结构
网络由3个卷积层{conv1,conv2,conv3}以及4个全连接层{fc4,fc5,fc6,fc7}组成。网络输入前一帧目标位置处在当前帧中裁剪的图片,fc6输出动作的条件分布,fc7输出目标与背景的分布,选择概率最大的action后,存入动作队列中,与fc5输出合并作为fc6的输入,进行下一次迭代。
决策过程
在每一帧,agent 进行连续地决策过程,采取动作直到跟踪到目标或满足停止条件。终止时的目标状态作为下一帧目标的初始状态即
s
1
,
l
+
1
:
=
s
T
l
,
l
s_{1,l+1}:=s_{T_l,l}
s1,l+1:=sTl,l
Action.决策的动作空间包括11个离散行动。上下左右和两倍的上下左右,尺度的放大缩小和停止,每个动作用onehot编码
State.目标状态由元组表达
(
p
t
,
d
t
)
(p_t,d_t)
(pt,dt),
p
t
p_t
pt是框内的三通道图像,
d
t
∈
R
110
d_t \in R^{110}
dt∈R110,是前10个决策向量串联的一维向量。
p
t
p_t
pt位置由
b
t
=
[
x
t
,
y
t
,
w
t
,
h
t
]
b_t=[x^t, y^t, w^t,h^t]
bt=[xt,yt,wt,ht]确定。
状态转换函数.位置变换为
b
t
+
1
=
f
p
(
b
t
,
a
t
)
b_{t+1}=f_p(b_t,a_t)
bt+1=fp(bt,at),位置变换是
[
x
t
,
y
t
,
w
t
,
h
t
]
[x^t, y^t, w^t,h^t]
[xt,yt,wt,ht]变量固定量的增加与减少。
例如,动作为左移,则x变量减少一个
Δ
x
\Delta x
Δx。action dynamic function 是
d
t
+
1
=
f
d
(
d
t
,
a
t
)
d_{t+1} = f_d(d_t,a_t)
dt+1=fd(dt,at)。动作为‘停止’时,计算回报,并传入下一帧。
Reward.回报函数
r
(
s
)
r(s)
r(s)与动作action 无关,在一帧中多次决策过程中都为0,直到停止才计算回报。计算方式为
即跟踪成功回报为+1,否则为-1,跟踪得分计算为
z
t
=
r
(
s
T
)
z_t=r(s_T)
zt=r(sT)
Adnet 训练
训练分为监督学习与强化学习两个步骤。监督学习结果作为强化学习的预训练权重。网络还进行在线调整过程加强跟踪器鲁棒性。
监督学习阶段
训练的参数为
W
S
L
,
{
w
1
,
.
.
,
w
7
}
W_{SL},\{w_1,..,w_7\}
WSL,{w1,..,w7},所有网络层参与训练。训练样本为图片patch
{
p
j
}
\{p_j\}
{pj},action label
{
o
j
(
a
c
t
)
}
\{o_j^{(act)}\}
{oj(act)},class label
{
o
j
(
c
l
s
)
}
\{o_j^{(cls)}\}
{oj(cls)},动作向量
d
j
d_j
dj不参与全设为0。样本图片
p
j
p_j
pj由ground truth 增加高斯噪音获取,然后计算相应
{
o
j
(
a
c
t
)
}
\{o_j^{(act)}\}
{oj(act)}
class label
{
o
j
(
c
l
s
)
}
\{o_j^{(cls)}\}
{oj(cls)}为
损失为两个交叉熵误差之和
强化学习阶段
训练参数为
W
R
L
,
{
w
1
,
.
.
.
,
w
6
}
W_{RL},\{w_1,...,w_6\}
WRL,{w1,...,w6},fc7不参与学习。强化学习采用的是策略梯度法,读者自行阅读材料Berkeley CS294-112 深度增强学习 笔记 (4) 策略梯度法。随机选择一段序列
{
F
l
}
l
=
1
L
\{F_l\}^L_{l=1}
{Fl}l=1L和相应的ground truths
{
G
l
}
l
=
1
L
\{G_l\}_{l=1}^L
{Gl}l=1L,在强化学习的过程中会获得一系列的状态
{
s
t
,
l
}
\{s_{t,l}\}
{st,l},相应的actions
{
a
t
,
l
}
\{a_{t,l}\}
{at,l},以及回报
{
r
(
s
t
,
l
)
}
\{r(s_{t,l})\}
{r(st,l)},
t
=
1
,
.
.
.
,
T
l
,
l
=
1
,
.
.
.
.
,
L
t =1,...,T_l, l=1,....,L
t=1,...,Tl,l=1,....,L
action选择条件概率分布的最大的动作
跟踪得分计算为
z
t
=
r
(
s
T
)
z_t=r(s_T)
zt=r(sT)。参数
W
R
L
W_RL
WRL的梯度为
来自强化学习策略梯度法,目标函数梯度为
期望值由多个样本平均近似。文章中还提到半监督的方法,就是说标记不全的样本也可以强化学习 ,方法是将有标签的两帧间的回报设为其中所有无标签帧的回报,感觉有点强行的意思。
在线调整
就是处理目标变化和丢失等情况的方法。全连接层会每隔一定帧后根据前几帧组成新目标样本训练适应特定目标,目标丢失后在候选区域中再检测。
网络的前向计算,一帧内的多次决策,在线调整都会降低速度。
实验
变种方法比较
确定强化学习的影响,
不同方法比较
总结
优点
-
相比滑动窗口方法,搜索更少。
-
强化学习可以使用标记不全的数据集
-
性能不错
缺点 -
慢
-
无法适用剧烈变化的目标,因为每个决策变换量不够大。
相关
matlab代码:https://github.com/hellbell/ADNet
项目主页:https://sites.google.com/view/cvpr2017-adnet
pytorch实现:https://github.com/aseuteurideu/ADNet_pytorch
tensorflow实现:https://github.com/ildoonet/tf-adnet-tracking