windows下MatConvNet深度学习框架的搭建

By | 2016年10月25日

博客原文

MatConvNet是Matlab下用于机器视觉的一个工具包,主要应用是CNN网络,当然其他的网络也涉及到了。MatConvNet简洁、高效,可以用于图片分类、分割和人脸识别等等深度学习的功能。具体的可以参见官网的介绍。

在搭建环境的过程中,发现如今网上对其的资源不太多,所以在这做一个总结。以beta22版本为例。

过程分为下面几个步骤:
1.MatConvNet的下载
2.GPU模式的使用
3.测试

1.MatConvNet的下载

在其官网的页面进行下载,解压到适当的位置。

运行其中“matconvnet-1.0-beta22\examples\vggfaces”路径下的cnn_vgg_faces.m文件,会出现下面的结果,那么说明已经可以使用了。在运行前最好把其中要下载的一些内容给放到对应的文件夹下,这样可以节省一点等待的时间。

matconvnet-installation-in-windows-system-01

2.GPU模式的使用

官网的这个页面中,提到了搭建GPU的方式。

首先,安装CUDA,在这个页面有下载。记得下载和自己系统以及显卡支持的CUDA。

接下来,要下载cuDNN(The NVIDIA CUDA Deep Neural Network library)。cuDNN是用于GPU加速的一个库函数。在这个页面有下载。

然后把解压好的cuDNN放在合适的文件夹下,建议在MatConvNet下建立local文件夹,同时把cuDNN文件夹中bin文件夹下的cudnn64_5.dll文件复制到matconvnet-1.0-beta22\matlab\mex文件夹下。

最后,在MatConvNet文件夹下建立compileGPU.m文件,其中内容如下。记得把对应的路径给改成自己电脑中的路径。

addpath matlab;

%% with cudnn
vl_compilenn('enableGpu', true, ...
                'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0', ...  % CUDA的安装路径
                'cudaMethod', 'nvcc', 'enableCudnn', 'true', ...
                'cudnnRoot', 'E:\postgraduate\project\Machine Learning\Deep Learning\CNN\matconvnet-1.0-beta22\local\cudnn');   % cuDNN的路径

出现下面图片中类似的结果,就代表成功了。

matconvnet-installation-in-windows-system-02

4.测试

还是根据官网的这个页面,在命令行窗口输入vl_testnn命令,测试非GPU模式,会出现下面的内容。

matconvnet-installation-in-windows-system-03

接下来测试GPU模式,在命令行窗口输入vl_testnn(‘gpu’, true),会有类似上面的内容出现。这就是成功了,GPU模式下的速度提示还是很明显的,一般都会有十倍以上。

matconvnet-installation-in-windows-system-05

到此,MatConvNet的安装就结束了。

同时,把我在安装过程中遇到的一个问题的解决方式给写一下。在安装cuDNN的时候,可能会遇到如下的错误“Error using mex nvcc fatal : Unsupported gpu architecture ‘compute_21’”,其中21可以为其他不能被10整除的数字。这个时候可以把matconvnet-1.0-beta22\matlab下的vl_compilenn.m文件中的732行的代码中”%s”改为向下取10的整数倍。

比如,原代码为

  cudaArch = ...
      sprintf('-gencode=arch=compute_%s,code=\\\"sm_%s,compute_%s\\\" ', ...
              arch_code, arch_code, arch_code) ;

可以改为

  cudaArch = ...
      sprintf('-gencode=arch=compute_20,code=\\\"sm_20,compute_20\\\" ', ... 
              arch_code, arch_code, arch_code) ;

这样,经常遇到的问题就能解决了。

 

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据