Window环境MatConvNet安装

Window环境MatConvNet安装


作者:Kindle君
时间:2017年5月31日。
出处:http://blog.csdn.net/yexiaogu1104/article/details/73177690
声明:版权所有,转载请联系作者并注明出处

GPU版本Matlab编译


一、准备GPU和C++环境

1. 安装CUDA8

目录: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

2. 安装Cudnn

根目录:D:\Program Files\MATLAB\matconvnet-1.0-beta24\local\cudnn
子目录:同时将cudnn64_5.dll 复制到 matlab/mex目录下
    \cudnn\bin
    \cudnn\include
    \cudnn\lib

3. 安装VS2013

使用自己的安装包,目的是安装C++编译器


二、安装MatConvNet

1. 下载MatConvNet

主目录: D:\Program Files\MATLAB\matconvnet-1.0-beta24(需要解压两次)

2. 测试C++编译器是否成功安装

Window环境MatConvNet安装_第1张图片

3. 添加搜索路径

在主目录下打开matlab,运行addpath matlab。添加搜索路径。

4. 编译工具箱

编译完以后,理论上没问题应该是在安装目录下的mex下,多出一系列的.mexw64 编译文件,(64位系统),如果没有就证明没有编译成功。

 step 1. vl_compilenn('enableGpu', true, ...
               'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0', ...
               'cudaMethod', 'nvcc', ...
               'enableCudnn', true, ...
               'cudnnRoot', 'local/cudnn') ;

step 2. 单独运行 vl_compilenn 语句,可能step1,2重合,不过没关系.

a.出现如下Warning:
    Warning: CL.EXE not found in PATH. Trying to guess out of mex setup. 
    > In vl_compilenn>check_clpath (line 580)
      In vl_compilenn (line 413) 
    'cl.exe' is not recognized as an internal or external command, 
    operable program or batch file. 
    Error using vl_compilenn>check_clpath (line 591)
    Unable to find cl.exe

b.解决办法:
    将目录:
    D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
    C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin
    都添加到环境变量,具体是哪个起作用不清楚,但是who cares?It works!  
    vl_compilenn('enableGpu', true, ...
           'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0', ...
           'cudaMethod', 'nvcc', ...
           'enableCudnn', true, ...
           'cudnnRoot', 'local/cudnn') ;

5. 设置工具箱

vl_setupnn 说每次调用的时候,需要·vl_setupnn(),尚未测试,测完再回来改*

三、测试

测试之前一定记得,先`vl_compilenn('enablegpu',true)`和`vl_setupnn()`编译一下

1.普通测试

  • cpu模式:运行vl_testnn,返回如下提示,说明正确安装

     result = 
    
      1x1683TestResult 数组(具有属性):
    
        Name
        Passed
        Failed
        Incomplete
        Duration
        Details
    
    总计:
       1683 Passed, 0 Failed, 0 Incomplete.
       161.6398 秒测试时间。
  • gpu模式: vl_testnn(‘gpu’, true),返回如下:要下载我就不下了

    Window环境MatConvNet安装_第2张图片

    算了,最后结果还是加上来把,不能偷懒:

     正在拆解 nnspnorm[dataType=single,device=gpu]
      拆解 nnspnorm[dataType=single,device=gpu] 在 0 秒内完成
     nnspnorm 在 4.4619 秒内完成
    __________
    result = 
    
      1x3366TestResult 数组(具有属性):
    
        Name
        Passed
        Failed
        Incomplete
        Duration
        Details
    
    总计:
       3366 Passed, 0 Failed, 0 Incomplete.
       1821.8838 秒测试时间。

2. fast-rcnn目标检测模型

下载模型:http://www.vlfeat.org/matconvnet/models/fast-rcnn-vgg16-pascal07-dagnn.mat
放置目录:D:\Program Files\MATLAB\matconvnet-1.0-beta24\data\models

运行:run examples\fast_rcnn\fast_rcnn_demo.m ,出现如下bug:

run examples\fast_rcnn\fast_rcnn_demo.m
37    opts.modelPath = paths{ok} ;
警告: 读取压缩数据时出现意外的文件结尾。 
> In fast_rcnn_demo (line 41)
  In run (line 96)
  In onCleanup/delete (line 60)
  In run (line 28)
  In onCleanup/delete (line 60)
  In run (line 28)
  In onCleanup/delete (line 60)
  In run (line 28) 
解决办法:
模型没下载完,需要重新下载,感谢同届实习生潇潇童鞋的提醒。

下载好之后,先编译CNN,重新运行,出现如下bug,原因显卡内存不够,小小的GTX960,还是2G的显存,我的天哪,真惨!:
Window环境MatConvNet安装_第3张图片
运行命令行,查看GPU使用情况,瞬间呵呵!

gpuDevice()

ans = 

  CUDADevice (具有属性):

                      Name: 'GeForce GTX 960'
                     Index: 1
         ComputeCapability: '5.2'
            SupportsDouble: 1
             DriverVersion: 8
            ToolkitVersion: 7.5000
        MaxThreadsPerBlock: 1024
          MaxShmemPerBlock: 49152
        MaxThreadBlockSize: [1024 1024 64]
               MaxGridSize: [2.1475e+09 65535 65535]
                 SIMDWidth: 32
               TotalMemory: 2.1475e+09
           AvailableMemory: 946438144
       MultiprocessorCount: 8
              ClockRateKHz: 1228000
               ComputeMode: 'Default'
      GPUOverlapsTransfers: 1
    KernelExecutionTimeout: 1
          CanMapHostMemory: 1
           DeviceSupported: 1
            DeviceSelected: 1

3. 2017CVPR-CFnet端到端目标跟踪demo运行

CFnet是最新的目标跟踪模型,github上有源码和教程,前面的步骤不多赘述,按照作者提供的教程来就行,这里主要介绍一下在运行demo语句之前,需要对Matlab的MatConvnet做哪些操作。

1. 在要运行的文件所在目录的matlab命令行,启动MatConvnet,语句如下: run D:\matconvnet-1.0-beta24.tar\matconvnet-1.0-beta24\matlab\vl_setupnn.m 没有任何提示,说明成功启动
2. 要使用GPU模式,据潇潇说,只需要在安装过程中,运行vl_compilenn('enablegpu',true)即可,也就是说要是之前运行过,那就会默认用GPU运行,有待我这个初学者进一步试验。
3. 配置环境变量
function paths = env_paths_tracking(varargin)
    paths.net_base = 'E:\视频组工作计划\kindlehe贺思颖\[2]code\cfnet-master\networks/';%'absolute path to your networks folder'; % e.g. '/home/luca/cfnet/networks/';
    paths.eval_set_base =  'E:\视频组工作计划\kindlehe贺思颖\[2]code\cfnet-master\data/'; %'absolute path to your datasets folder'; % e.g. '/home/luca/cfnet/data/';
    paths.stats = 'E:\视频组工作计划\kindlehe贺思颖\[2]code\cfnet-master\data/ILSVRC2015.stats.mat';%'absolute location of ILSVRC2015 stats'; % e.g.'/home/luca/cfnet/data/ILSVRC2015.stats.mat';
    paths = vl_argparse(paths, varargin);
end
4.运行run_cfnet2_evaluation.m即可成功运行
5.切换GPU开关,在tracker.m文件下的net_z = init_net(net_z, p.gpus, p.init_gpu);语句可以看到,将p.gpus=1改为p.gpus=[],查看运行效率 即可

你可能感兴趣的:(MatconvNet)