DLT(deep learning tracker)解析

来源:互联网 发布:天雷斩算法术伤害吗 编辑:程序博客网 时间:2024/05/22 12:50

   视觉跟踪方法:dlt(deep learning tracker)着实火了一把,它应该可以代表2013跟踪领域的state-of-art。最近对其进行了仔细的研究,现按照框架、核心思想、展望进行“深度解析”。

    框架

    整个算法还是在主流的PF(particle filter)概率框架下进行。PF要做的是:在一帧图像中选出多个候选区,然后通过各种方法对候选区进行确认(measure)。简要总结下:PF包括三个部分:drift--diffuse--measure  其目标是从视频帧中选出概率最大的跟踪框以完成跟踪。为达到目标我们用“粒子”对相邻两帧间的仿射参数进行建模,找权重最大的粒子。用权重最大的粒子+上一帧已知的跟踪结果=完成当前帧跟踪。

    drift和diffuse分别完成对粒子的随机扰动和扩散过程,使得粒子尽可能分布在实际发生的仿射变换(实际粒子)处。最终判断哪些粒子接近实际粒子的过程由measure完成,一般都会先得到每个粒子对应的跟踪框,然后进行measure过程。不同的跟踪算法也是在measure部分有所区别,比如:IVT (Incremental visual tracking)利用增量PCA online更新模板,与每个粒子跟踪框进行相似度比较,相似度最高的跟踪框被当做最终跟踪结果。 而dlt截然不同,其将稀疏自编码机的encoder部分连上一个sigmoid层,形成了一个measure分类器,把每个粒子跟踪框输入到measure分类器中,输出结果得分最高的跟踪框被当做最终跟踪结果。

    总结下,dlt通过PF+measure分类器完成跟踪,measure分类器由encoder+sigmoid层形成的网络。因为measure部分涉及到autoencoder多层的训练,所以称其为deep learning tracker。


    核心思想

    dlt核心思想体现在PF框架的measure部分,从上叙述可知online跟踪时,需要用encoder+sigmoid层。那么如何进行训练呢?

     1.encoder部分的训练(offline)

      稀疏自编码机(autoencoder)包括编码部分(encoder)和解码部分(decoder),要想得encoder层之间的隐层中表达,就需要对稀疏自编码机进行训练。完成了稀疏自编码机的训练=得到了encoder训练参数,再直接应用到线上训练中。因稀疏自编码机网络层与层之间参数多,且层数也深,所以需海量数据进行offline训练,训练后得到目标通用且不变的特征。

     2.sigmoid部分的训练(at the beginning of online)

      sigmoid部分训练主要是为了得到sigmoid层与encoder层连接的200多个参数,因参数个数相对少,故可在开始online跟踪时进行训练。训练必要条件:获得已知标签的样本。从人工标定的第一帧中可获得10个Pos样本和100个Neg样本,利用前向传播算法反向传播算法、批梯度下降算法寻找损失函数(最小二乘法:所有样本sigmoid输出与已知输出平方差)局部最小值。获得整个measure部分的参数。

     3.用------->实时更新sigmoid层

     进行跟踪时,直接把drift--diffuse后粒子对应跟踪框接到measure部分,产生输出,把得分最高的跟踪框当做最终跟踪结果。注:每完成一个跟踪,则更新一个Pos样本,故其反应了最近时间跟踪序列。若最高分<我们设定的阈值,那么就重新采集neg样本,并与实时更新的pos样本一起进行上述2的步骤。更新了的sigmoid层更能反应最近视频序列对当前帧的影响,更好地利用了时间信息。


    展望

     dlt在很多uncontrolled的场景下的跟踪非常漂亮,接近完美。对光照鲁棒,对速度鲁棒,对姿态鲁棒,但是,对于多目标且部分重叠下的场景,跟踪效果不甚理想。






0 0