目标追踪任务是指在一个视频中给出第一帧图像的bbox的位置,在后续的帧中追踪该物体的任务。 目标追踪不同于目标检测的是:
1、需要给出首帧的标定框。
2、只需要给出标定框,后续的搜索范围往往在上一帧图像的附近。
孪生网络是使用深度学习进行目标追踪的重要解决方案,主要包括:孪生网络解决目标追踪开山之作SiamFC、SiamRPN、DaSiamRPN、SiamRPN++,SiamMask,下面对其进行简要介绍:
3.1 SiamFC(2016)
3.1.1 网络结构
SiamFC采用了全卷积式的Siamese网络实现目标跟踪,其网络结构如下图所示,具有两个权值共享的分支。其中,z为127×127的模板图像相当于要追踪的目标,x为255×255的搜索图像,我们要完成的就是在x中找到z的位置。
SiamFC有两个分支对应两个输入为z和x,将他们同时输入进行φ的计算,这里的作用就是进行特征提取,分别生成6×6×128和22×22×128的featuremap。φ所对应的特征提取网络采用的是AlexNet,其结构如下:
将生成的featuremap输入互相关层生成score map,实际上会进行如下的计算:
其中bI为每个位置对应的值,相当于是一个偏置,φ(x)和φ(z)是进行的卷积运算,通过卷积运算提取在x中与z最相似的部分。在SiamFC结构图中,输入的搜索图像中有红蓝两个区域在经过网络后与score map中的红蓝响应值相对应。网络输出的是17×17 的score map,而输入x是255×255的搜索图像,怎样将两者的位置进行映射呢。这里,将17×17的score map进行双三次插值生成272×272的图像,来确定物体的位置。但是为什么不生成255×255的图像呢?由于原始图像相对比较粗糙,为了使定位更加准确,所以生成272*272的结果。
3.1.2 模型输入
孪生网络有两个分支对应两个输入,z与x的大小并不是任意输入的,而是对目标区域进行了扩充,如下图所示:
上面的三张图是网络输入的模板图像z,下面对应的是网络输入的搜索图像x,红色为当前的所在帧的bounding-box。对于模板图像来说,根据第一帧的groundtruth会得到目标的(x_min,y_min,w,h)四个值,会通过以下公式生成模板图像的大小:
其中A=127*127, s是对图像进行的一种变换,先将包含上下文信息的(w+2p)×(h+2p)的图片扩展,然后进行resize,生成127×127的模板图像。 对于搜索图像x来说,会从整张图片中裁剪出255×255的图片,裁剪的中心为上一帧预测的bounding-box的中心。为了提高跟踪性能,选取了多种尺度进行预测。最初的SiamFC为5种尺度1.025^{-2,-1,0,1,2} ,其中255×255对应尺度为1。为了提升网络的FPS,又提出了存在3种尺度的SiamFC-3s。当模板图像和搜索图像不够裁剪时,会对不足的像素按照RGB通道的均值进行填充。
3.1.3 损失函数
为了构造有效的损失函数,对搜索区域的位置点进行了正负样本的区分,即目标一定范围内的点作为正样本,这个范围外的点作为负样本,例如网络结构图中最右侧生成的score map中,红色点即正样本,蓝色点为负样本。score map中的groundtruth按下式进行标记:
其中c为物体在score map的中心,u为score map中任意一点,∣∣u−c∣∣是u与c的欧氏距离,R为距离的阈值,k为score map经过网络之后缩小的倍数,从网络结构可以看出,有三层的卷积,池化是以2为步长,所以图像经过网络后会缩小2^3=8倍。
SiamFC采用的损失函数是logistic loss,具体的损失函数形式如下: 对于score map中了每个点的损失:
其中v是score map中每个点真实值,y∈{+1,−1} 是这个点所对应的标签。 上式是score map中每个点的loss值,而对于score map整体的loss,则采用的是全部点的loss的均值。即:
D是生成的score map,∣D∣为heatmap的大小,uϵD代表其在score map中的位置。
3.1.4 训练与跟踪
训练过程使用随机梯度下降法对下式进行优化:
其中:θ代表着网络参数。
跟踪过程中模板图像只提取一次特征,目标图像在线不更新,对搜索图像进行5个尺度的搜索,利用用双三次插值将score map从 17×17 上采样到 272×272,进行跟踪目标的确定。