传统的跟踪算法大多从物体的外观出发,只能在线学习,从当前的视频中在线抓取数据进行学习跟踪的算法,如: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。
这里介绍下, 如果搭建基于matlab的深度学习神经网络的GPU仿真搭建。
1.版本组合:Win7+Matlab R2015b+CUDA7.5+vs2013
CUDA7.5下载地址为:http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_7.5.18_windows.exe
VS2013要专业版。
全部安装好之后,做如下操作:
2.CPU配置,运行CNN工具箱中的vl_setupnn.m,然后再运行vl_compilenn.m可以完成CPP文件的编译。
3.编译成功
这些必须在电脑上编译,否则别人的复制给你,如果配置不一样,可能会报错。
4.GPU配置:
安装cudnn:https://developer.nvidia.com/rdp/cudnn-archive,放到CNN工具箱中的新建local文件夹中,
然后mex -setup下,操作和CPU一样。
然后执行matlab程序:
vl_setupnn;
vl_compilenn('enableGpu', true,'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5','cudaMethod', 'nvcc', 'enableCudnn', 'true','cudnnRoot', 'E:\A_2016_FPGA_Test\FC_tracking\A_FC\matconvnet-1.0-beta20\local\cudnn');
标签:在线,训练,R2015b,vl,vs2013,算法,CUDA7.5,跟踪,GPU From: https://blog.51cto.com/u_15815923/5744776