论文笔记(二) fully-convolutional siamese networks for object tracking

基于多尺度全卷积孪生网络的目标跟踪算法

一.背景技术介绍

      传统的跟踪算法大多从物体的外观出发,只能在线学习,从当前的视频中在线抓取数据进行学习跟踪的算法,如:TLD、Struck、KCF,这类算法必须足够简单才行,否则耗时严重。当然现在也有人使用卷积网络进行离线训练,在线跟踪,但是当跟踪目标未知时,需要利用随机梯度下降法(SGD)在线微调网络权重,从而使得速度下降,做不到实时跟踪。

     综上,浅层学习方式,如相关滤波,利用网络内部参数作为特征,这样不能充分发挥“端对端”的优势。而利用SGD微调多层网络参数的方式无法实时跟踪。

近期的研究工作有:

     1.利用RNN网络进行训练,通过预测目标在各帧中的位置来跟踪,同时加入了可区分的“注意力机制”。虽然该方法目前无法在现有的标准测试集上取得显著的结果,但是有足够的潜力;

     2.利用粒子滤波的方式,通过训练好的距离矩阵比较当前帧与第一帧的区别,其中距离矩阵是利用了首先玻尔兹曼机(RBM)和随机点的方式训练所得。此方法与本文中的方法差异太大,因此没有使用该方法。

     3.离线预训练+在线微调方式,其中SO-DLT和MDNet均离线训练了一个相似性检测的卷积网络,并在线使用SGD算法进行微调。利用这种方法的Deep SRDCF和 FCNT均取得了很好的结果,但是在速度上依旧不行。

     4.GOTURN算法也采用了YCNN的结构,但是该算法无法控制下一帧的变换形式,不具有变换的内在不变性,除非样本集包含所有种类所有位置的变换。并且不能自适应调节搜索区域的大小。

     5.SINT(Siamese Instance search Tracker)算法从名字上看像是从Instance级别上去搜索,它采用非全卷积的结构,在图像中均匀分布着类似Struck算法中的圆形区域,然后利用光流和标记框的修正来提升效果,并通过ROI区域来提升速度,最终达到了2fps。

二.算法原理

     该算法采用了全卷积式的Siamese网络,作者在文中给出了简化版的网络结构,其中卷积层分别是对模板图像和搜索图像进行的操作,共5层,然后利用一种相似性度量函数将两个矩阵合并成一个得分矩阵。如图:


   由表可以看到网络的卷积层部分结构和参数是一致的,并且前两层卷积层后都接有池化层:


       1.输入图像

    对于输入图像的处理,该算法类似于GOTURN算法,都对目标区域作了扩充。如果目标区域尺寸为wh,那么则对其边界各扩增p,其中p=(w+h)/4。而对于模板图像A=1272,则利用以尺度变换s使得新的区域面积等于其面积:



       s的变换方式是在原有尺寸不变的前提下填充原图RGB各通道均值像素,而待搜索图像则也是以目标区域为中心,都是从视频中选取的与模板图像相差不超过T帧的图像。

      另外,作者还在文中提到,对于待搜索图像,选取了多个尺度。其中初始的SiamFC采用了5种尺度,分别是1.025{-2,-1,0,1,2},针对这些尺度采用了以0.35为步长的线性函数作为抑制。另外SiamFC-3s则是采用了3种尺度。

       2.卷积层

       作者在文中只给出了卷积层的简单表示,通过查阅文献可知,实际上作者是采用的Hinton的学生Krizhevsky设计的网络结构:


    从图中可以看到,一共有5层卷积,各层的参数可以简化说明如下:

        C19611113的卷积核,步长为4

        C22565548的卷积核,步长为1

        C338433256的卷积核,步长为1

        C438433192的卷积核,步长为1

        C525633192的卷积核,步长为1

    并且作者使用了双GPU并行的方式,在第三层处还同时使用了两个GPU的结果。其中前两个卷积层后面都接有最大池化层,前四个卷积层都用了Relu激励函数。作者在文中还提到,前两个卷积层(Conv)后都直接进行了mini-batch normalization即批规范化,为了防止梯度扩散。查阅文献可知原理如下:


       其中表示第k批样本的卷积层输出标准差,表示第k批样本的卷积层输出均值,即:


    而对于卷积层中的参数,作者是借鉴了MSRA何恺明的文章,查阅其文章可知参数均服从高斯分布:



        其中k为当前层卷积核边长,c为通道数。

       3.相似性度量(这部分等调试完代码再更正)

        在Siamese网络尾部,作者依旧是采用了一种相似性度量的方式,类似立体匹配。这个地方作者没有详细说明,不过通过网络输出可以看出,是将模板函数输出看作一个66128卷积核,然后利用3维卷积的方式实现相似性度量。

        4.损失函数

        这里作者定义了一个损失函数,对于得分矩阵中的每一个点u有:


    其中v实际输出,y是真实标签{+1-1},而标签的制作方式如下:


    其中,c指的目标区域中心,k指的是最后一层的步长,本文取得8(但是跟我想象中不一样,我推导的结果是1,这个需要调试完代码之后来看)。

        5.定位目标区域(tracking中进行)

    在训练完后,通过获取图像得到相似性矩阵,然后直接利用双三次插值将1717的矩阵变为255255的矩阵,从而定位目标区域。双三次插值的原理如下:

         对于每个待求像素点x,其像素值可由其相邻左右各两个像素加权求得:


         其中,,对于不同的s值有三次插值基函数如下:


三.样本集的准备

     训练集是从ImageNet中的4417部视频,包含200w+带标记的目标框。其中去除了snake、train、whale、lizard等的图像,因为他们的体积太小或者太大,又或是离边界太近,因此总是不以完整的形态出现在图像中。

      测试集分别使用了The OTB-13、VOT-14、VOT-15、VOT-16等数据集,采用了监测评价函数IoU,其计算原理如下:


      其中Detection result指的是通过该算法得到的目标框,将其与真实框座交并集运算。除此之外,还引入了OPE、TRE、SRE等评价标准,分别评价了算法跟踪的连续性、时空鲁棒性。同时还在测试VOT-14时,通过引入GOTURN中使用的accuracy和robustness来评价效果。

     作者所使用的计算机设备是NVIDIA GeForce GTX Titan X显卡和Intel Core i7-4790K 4.0GHz处理器。

四.结果与分析

     作者通过MatConvNet工具箱使用mini-batch SGD算法展开训练。一共做了超过50代训练,每代训练50000对样本,另外mini-batch中每批8对样本,而学习速率则是分别取了10-2,10-3,10-4,10-5也就是说作者做了四次大循环,每次循环50代。

1.The OTB-13 benchmark

       在OTB-13的测试中,作者将其中的25%对样本图像转化为了灰度图像,其余不变,最终效果如图,可以发现SiamFC和SiamFC-3s的效果都居于前两名。其中单次成功率OPE可达0.62,时间鲁棒性TRE(将不同帧打乱)可达0.612,而空间鲁棒性SRE(从帧内不同框位置开始)可达0.564。


2.The VOT-14 results

      在VOT-14的测试中,作者加入了CVPR2016和ECCV2016中的Stable和GOTURN算法,并引入精确度和鲁棒性两个参数,其中精确度用平均IoU值代替,鲁棒性则与总的失败率有关。结果如下:


3.The VOT-15 results

       VOT-15的结果如下:


       可以发现SiamFC和SiamFc-3s均排名较高,其中前者可达58fps,后者可达86fps。具体见表:


       作者后面还通过不断改变数据集大小来观察测试效果的不同,发现数据集越大,目标预测效果越好结果见表:


4.The VOT-16 results

    作者在写这篇文章的时候,2016的官方结果还没出,作者自己测试的结果是SiamFcSiamFc-3s的预测重叠率分别是0.38760.4051


原文及代码链接:原文及代码链接
相关算法链接:    卷积层网络结构-AlexNet
                           Xavier网络参数初始化
                           mini-batch normalization
        
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页