CFNet视频目标跟踪源码运行笔记(1)——only tracking

友情提示:如果希望了解如何从头开始训练网络并进行跟踪,可以阅读本人另一篇博客: CFNet视频目标跟踪源码运行笔记(2)——training and then tracking

论文信息

论文题目:End-to-end representation learning for Correlation Filter based tracking
论文出处:CVPR 2017
论文作者:Jack Valmadre,Luca Bertinetto等人
论文主页:http://www.robots.ox.ac.uk/~luca/cfnet.html
源码链接:https://github.com/bertinetto/cfnet

运行环境介绍

  • Windows 10 x64(需要在Ubuntu Linux上运行CFNet算法的同学可以参考本人另一篇博客:https://blog.csdn.net/discoverer100/article/details/83500731 )
  • MATLAB 2017b
  • Visual Studio 2015
  • CUDA 8.0.61 for win10
  • cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0
  • MatConvNet 1.0-beta25 (http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta25.tar.gz)此处感谢“月色真美”同学的无私帮助~

注意: 如果在tracking过程中发现CFNet算法跟踪效果非常糟糕,请参照本文末尾的方法进行修正(此处感谢博客园博主“博闻强记2010”的博客文章《代码问题:【SiameseFC】》)。

准备

  1. 安装CUDA,具体步骤可以参考本人另一篇博客:
    https://blog.csdn.net/discoverer100/article/details/79758499

  2. 安装cuDNN,具体步骤可以参考本人另一篇博客:
    https://blog.csdn.net/discoverer100/article/details/79759282

  3. 配置MatConvNet,具体步骤可以参考本人另一篇博客:
    https://blog.csdn.net/discoverer100/article/details/78963233
    注意: 在首次运行CFNet代码前,一定需要编译MatConvNet,上述博客会提及操作方法。另外Ubuntu系统环境可以参考 https://blog.csdn.net/discoverer100/article/details/83500731 )

  4. 下载CFNet的MATLAB源码:https://github.com/bertinetto/cfnet

  5. 本博客仅描述only tracking模式的运行(training模式会在后续文章中介绍),因此需要下载作者官方预训练的深度网络文件,链接:https://bit.ly/cfnet_networks

  6. 下载validation视频集:https://bit.ly/cfnet_validation

  7. 下载cfnet_ILSVRC2015.stats.mat文件,链接:
    https://drive.google.com/file/d/0B7Awq_aAemXQcndzY3M5dkprVTA/view?usp=sharing

操作

  1. 对上述下载的CFNet源码包进行解压,形成文件夹cfnet-master,如下图所示:
    CFNet视频目标跟踪源码运行笔记(1)——only tracking_第1张图片

  2. 对上述下载的预训练网络文件压缩包解压,并拷贝到pretrained\networks目录中,形成如下图所示的目录文件层次结构:
    CFNet视频目标跟踪源码运行笔记(1)——only tracking_第2张图片

  3. 将准备工作中下载好的validation视频集解压,修改文件夹的名字cfnet-validation,改为validation,并复制到data文件夹中,以basketball视频为例,最终的目录文件组织如下图所示:
    CFNet视频目标跟踪源码运行笔记(1)——only tracking_第3张图片

  4. 将准备工作中下载cfnet_ILSVRC2015.stats.mat文件,重命名为ILSVRC2015.stats.mat,并复制到data目录中,最终的目录文件组织如下图所示:
    CFNet视频目标跟踪源码运行笔记(1)——only tracking_第4张图片

  5. 进入src/tracking目录,会发现里面有两个.example后缀名的文件,将这个后缀名去掉,还原成.m的样子(如果担心文件被自己弄坏了也可以原地复制再修改),如下图所示:
    CFNet视频目标跟踪源码运行笔记(1)——only tracking_第5张图片

  6. 在刚刚恢复后缀名的startup.m文件中,设定好MatConvNet的路径,其形式如下图所示(具体结合自身实际):
    CFNet视频目标跟踪源码运行笔记(1)——only tracking_第6张图片

  7. 在刚刚恢复后缀名的env_paths_tracking.m文件中,设定好networks、data和statsmat的文件夹的路径(注意:如果是文件夹那么最后要带一个斜杠),如下图所示:
    CFNet视频目标跟踪源码运行笔记(1)——only tracking_第7张图片

运行

运行startup.m文件,MATLAB可能会报一些函数名重名的警告,不必理会,如下图所示:
CFNet视频目标跟踪源码运行笔记(1)——only tracking_第8张图片

运行run_cfnet2_evaluation.m文件,成功,如下图所示:
CFNet视频目标跟踪源码运行笔记(1)——only tracking_第9张图片

如果希望体验其他层的网络效果,可以尝试运行其他的evaluation文件。

这里需要注意的是:代码默认仅仅计算物体坐标,并不会在屏幕上显示视频画面内容和标定。如果需要显示画面,可以进入tracker.m文件,将第16行的p.visualization赋值为true,这样的效果如下图所示:
CFNet视频目标跟踪源码运行笔记(1)——only tracking_第10张图片

修正(非必须)

若在运行过程中发现CFNet源码跟踪非常不靠谱,有可能是因为MATLAB imresize函数的GPU实现方式在某些环境下有所不同,可以尝试按照如下方式进行修正:

  1. MATLAB版本可以维持当前的2017b不变
  2. 将MatConvNet版本替换为matconvnet-1.0-beta24,下载地址:http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta24.tar.gz
    (注意:别忘了重新编译MatConvNet,并且需要按照 操作 这一节中的 步骤 5 所示,修正MatConvNet库的引用路径)
  3. 打开src\tracking目录下的tracker_step.m文件,将大约第14行的代码注释掉,注释后如下所示:
% responseMapsUP(:,:,s) = imresize(responseMaps(:,:,s), p.responseUp, 'bicubic');
  1. 在上述被注释的代码下方,粘贴如下的三行代码,如下所示:
responseMaps_cpu=gather(responseMaps(:,:,s));
responseMapsUP_cpu=imresize(responseMaps_cpu, p.responseUp, 'bicubic');
responseMapsUP(:,:,s)=gpuArray(responseMapsUP_cpu);

最后,再一次感谢博客园博主“博闻强记2010”的博客文章《代码问题:【SiameseFC】》)


更多内容,欢迎扫码关注“视觉边疆”微信订阅号

CFNet视频目标跟踪源码运行笔记(1)——only tracking_第11张图片

你可能感兴趣的:(视频目标跟踪(Visual,tracking),论文笔记,filter),MATLAB,深度学习(Deep,learning),CUDA,MatConvNet,数字图像处理,模式识别与深度学习)