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++编译器是否成功安装
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),返回如下:要下载我就不下了
算了,最后结果还是加上来把,不能偷懒:
正在拆解 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的显存,我的天哪,真惨!:
运行命令行,查看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=[],查看运行效率 即可