MatConvNet是Matlab下用于机器视觉的一个工具包,主要应用是CNN网络,当然其他的网络也涉及到了。MatConvNet简洁、高效,可以用于图片分类、分割和人脸识别等等深度学习的功能。具体的可以参见官网的介绍。
在搭建环境的过程中,发现如今网上对其的资源不太多,所以在这做一个总结。以beta22版本为例。
过程分为下面几个步骤:
1.MatConvNet的下载
2.GPU模式的使用
3.测试
1.MatConvNet的下载
在其官网的页面进行下载,解压到适当的位置。
运行其中“matconvnet-1.0-beta22\examples\vggfaces”路径下的cnn_vgg_faces.m文件,会出现下面的结果,那么说明已经可以使用了。在运行前最好把其中要下载的一些内容给放到对应的文件夹下,这样可以节省一点等待的时间。
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的路径
出现下面图片中类似的结果,就代表成功了。
4.测试
还是根据官网的这个页面,在命令行窗口输入vl_testnn命令,测试非GPU模式,会出现下面的内容。
接下来测试GPU模式,在命令行窗口输入vl_testnn('gpu', true),会有类似上面的内容出现。这就是成功了,GPU模式下的速度提示还是很明显的,一般都会有十倍以上。
到此,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) ;
这样,经常遇到的问题就能解决了。