单目标跟踪方法-Siam系列

机器学习算法工程师

共 4234字,需浏览 9分钟

 ·

2021-11-10 00:38

   作者:  晟  沚           



前  言


跟踪的定义:在第一帧中给定目标框,在后续帧中不断对目标定位,实际上是一个one-shot learning过程。


  • 一般流程:

1)Trackingby online-learning用第一帧给定的label训练一个分类器,后续帧使用此分类器判别是否是目标,后续不断更新训练分类器

2)Similaritylearning 和第一帧判断,得到精确的目标估计需要很多例子,每采集的例子需要特征计算,耗时

3)Fully-convolutional Siamese 使用全卷积方式简化计算相关性,达到80fps,有数据驱动

 

  • VOT算法分类

VOT相关算法通常分为生成式(generative model)和判别式(discriminative model)。

  • 生成式:采用特征模型描述目标的外观特征,再最小化跟踪目标与候选目标之间的重构误差来确认目标。此方法着重于目标本身的特征提取,忽略目标的背景信息,因而在目标外观发生剧烈变化或者遮挡时,容易出现目标漂移或目标丢失。

  • 判别式:将目标跟踪看做一个二元分类问题,通过训练关于目标和背景的分类器来从候选场景中确定目标,可以显著区分背景和目标,性能鲁棒,渐渐成为目标跟踪领域主流方法,目前大多数基于深度学习的目标跟踪算法都属于判别式方法。

传统的单目标跟踪算法多为在线跟踪,在线更新模型(KCF)。这种方法的好处就是速度快,但是跟踪质量并不是很高,而深度学习方法多为离线训练,在线跟踪,这样做的好处就是跟踪质量好,但是速度比不上相关滤波的方法,但是从这篇SiamFC论文开始,基于深度学习的方法在速度上已经可以和传统的相关滤波并驾齐驱,甚至更优

单目标跟踪的性能其实主要依靠特征对比和逻辑推理。特征对比是多数工作的主流方向,因为在已知第一帧目标图像前提下,定位下一帧目标位置的最直观方法是把下一帧图像以滑动窗为单位(或者以物体proposal为单位)与目标图像特征进行比对,特征最相近便认为是目标物体。


  • 难点:

  • 目标出现遮挡,目标消失等长时跟踪问题

  • 对于比较像的目标是会误判,比如都是人

  • 目标形状变化较大时容易发生漂移

  • 模板更新问题:模板不更新会导致模型鲁棒性不佳,出现遮挡模糊等无法识别;模板更新策略不佳又会引入模板污染、过拟合等问题


下面主要介绍两个算法:SiamFC和SiamRPN。




1

SiamFC


首先简单介绍下本算法:

使用孪生网络(Siamese Net)结构来进行相似度比较,对比模版图片(在训练前应该指定好)和需比较的目标图片之间的相似度。速度是SiameseFC的最大优势,可以用于追踪任意物体(不需要预先训练),在当时某几个benchmark上达到了最优。


还存在的问题:

  • 由于要与模版图片对比,因此如果在追踪过程中,物体突然发生一些变换(比如正面到侧面等),会导致追踪失败。

  • 如果背景物体中,有较多相似性物体,追踪效果也不好。

  • 预测的边框好像都是原始边框的等比例变换(这个不确定,看源码好像是这样)。

  • 如果位置发生突变,效果不好(物体超出搜索区域范围)。

 

SiamFC主要思想:

实际上就是将跟踪当做匹配问题,本质是估计每个滑窗的得分,先将搜索图像和目标图像做一个交叉相关,得到一个tensor,其实是相关feature的一个特征,代表了搜索图像和目标图像每个patch的相关信息,在通过1*1卷积就可以得到box 和score

动机是解决神经网络实时跟踪的问题。由于卷积网络先进行离线训练,在线跟踪时需要利用随机梯度下降法(SGD)微调网络权重,从而使速度下降,无法实时跟踪。作者利用全卷积孪生网络进行相似性学习,使用目标检测的ILSVRC数据集训练,再把模型从ImageNet Video域推广到其他视频跟踪数据集域,线上的跟踪过程只需推理即可。


首先简单介绍下siamfc的网络框架,图中z是模板(即待跟踪的目标),x是当前帧的图像,是用于提取图像特征的卷积网络,因为作用于x(srch_img)的 与作用于z(template)的  全一样所以称为孪生网络(siamese),经过卷积网络提取特征后分别得到x和z的feature map,然后将二者卷积( * 表示卷积),即将6×6×128的feature map当做卷积核,在22×22×128上进行卷积得到17×17×1的heatmap,heatmap上值最大的点就对应于x图像中目标的中心。

下面说一些细节,首先 网络是5层不带padding的AlexNet。显然5层不符合深度学习“深”的理念,但是由于网络不能加padding所以限制了网络深度,为什么不能padding呢,事实上target在x上的位置,我们是从heatmap得到,这是基于卷积的平移等变性,即target在x上平移了n,相应的就会在heatmap上平移n/stride,且值不会变。但如果加入了padding,对于图像边缘的像素,虽然也会平移,但值会变,因为padding对图像的边缘进行了改变。siamRPN++和siamDW解决了这个问题,后面会详细讲。然后是训练时,x和z的获取方式:z是以第一帧的bbox的中心为中心裁剪出一块图像,再将这块图像缩放到127×127,255×255的srchimg也是类似得到的。这里有几个细节需要注意,第一,template与srch_img的中心就是目标的中心,且template是裁剪过的,如果不裁剪那么template中背景过多,导致匹配失败。不过在siamfc中背景信息完全被丢弃,换句话说,siamfc对缺乏对背景的利用,也导致模型的判别性不足,后续有相关工作对此进行改进。第二,训练阶段的标签怎么得到呢,如果只是简单将目标所在位置标为1,其他位置标为0,就会产生严重的样本不均衡问题,于是作者将离目标中心点r半径内的label都设置为1,其他设为0,loss function

y为预测值,v为标签值,这里关于label的设置也有一些可以优化的点,使用focal loss是否对模型的判别性是否会更高呢。第三,在测试时,siamfc的template是不更新的,即一直为第一帧,这就导致模型的鲁棒性不佳,例如随着时间的变化template出现遮挡、模糊等情况,但是如果更新策略不佳又会引入模板污染、过拟合等问题,在这方面也有相关工作讨论。在测试时,首先搜索区域不是整个srchimg而只是之前的四倍大小的搜索区域,其次在featuremap上加了余弦窗,最后为了解决尺度问题,对srch_img进行缩放了3种尺度。

SiamFC预测时,不在线更新模板图像。这使得其计算速度很快,但同时也要求SiamFC中使用的特征具有足够鲁棒性,以便在后续帧中能够应对各种变化。另一方面,不在线更新模板图像的策略,可以确保跟踪漂移,在long-term跟踪算法上具有天然的优势。

图片输入:两个输入z与x的大小是确定的,其中第一帧的groundtruth是已知的(x_min,y_min,w,h),那么模板图像z的大小即为:

其中A=127^2,s是对图像进行的一种变换,即进行(w+2p)x(h+2p)的扩展,再resize成127x127的大小。

而对于搜索区域x来说,以上一帧预测的bbox的中心为裁剪中心,裁剪出255x255大小的图片。这里,作者为了提高跟踪性能,选取了多尺度进行预测,分别是1.025^{-2,-1,0,1,2},其中255x255对应尺度为1。之后作者又尝试了三种尺度的SiamFC-3s,提升了FPS。

这里特别指出,当模板和搜索图像不够裁剪时,要对不足的像素进行RGB通道的均值填充。



2

SiamRPN

商汤在CVPR2018上提出的,孪生候选区域生成网络(Siameseregion proposal network),简称Siamese-RPN,包含用于特征提取的孪生子网络和候选区域生成网络,其中候选区域生成网络包含分类和回归两条支路,借鉴了目标检测的RPN结构。在跟踪阶段将跟踪任务构造出局部单目标检测任务,作者预先计算孪生子网络中的模板支路(第一帧),并且将它构造成一个检测支路中区域提取网络里面的一个卷积层,用于在线跟踪。



siamRPN的网络框架见上图,这里可以从one-shot的思路理解sianRPN,我们把template分支的embedding当作卷积核,srch_img分支当作feature map,在template与srchimg卷积之前,先将卷积核(即template得到的feature map)通过1*1卷积升维到原来的2k(用于cls)和4k(用于位置的reg)倍。然后拉出分类与位置回归两个分支。siamfc相当于直接将template与srching直接卷积匹配,而siamRPN在template上引入k个anchor相当于选取了k个尺度与srch_img进行匹配,解决了尺度问题。

siamRPN无论是在A还是R上都优于siamfc(这里补充一下,对于跟踪而言主要有两个子指标A(accuracy)与R(robust), A主要是跟踪的位置要准,R主要是模型的判别性要高,即能够准确识别哪些是目标,从而判断出目标的大致位置。关于R与A可参见VOT评价指标),也就是说siamrpn的模型判别性与准确性都比siamfc好。

准确性的提升主要来自与siamrpn将位置回归单独拉出来作为一个分支,这一点在后续的siamfc++中也可以看到作者相关的论述。在模型判别性方面,笔者认为,提升的关键在于siamrpn在进行匹配(即template与srchimg卷积的过程)时,由于引入了k个anchors,相当于从k个尺度对template与srch_img进行更加细粒度的匹配,效果更好也是情理之中。另外很重要的一点就是sianrpn解决了尺度问题。




end







机器学习算法工程师


                            一个用心的公众号


长按,识别,加关注

进群,学习,得帮助

你的关注,我们的热度,

我们一定给你学习最大的帮助






浏览 88
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报