介绍

MatConvNet是一个实现卷积神经网络(CNN)的MATLAB工具箱,用于计算机视觉应用。 用这个工具箱,能很方便地在MATLAB中用GPU来进行训练。


要求

足够新的MATLAB版本(R2015b或更高版本)和一个支持C ++ 11的编译器(Visual Studio 2015,GCC 4.8,Xcode 7.3.1或更高版本)。 对于GPU计算,至少需要CUDA 7.5以及CuDNN v4(可选)或更新版本。

本次安装在如下实验环境中通过。

环境:

MATLAB2018a
Visual Studio 2015
matconvnet-1.0-beta25


安装

1.下载工具箱

首先下载MatConvNet,并解压到你希望的文件夹,暂且称这个文件夹为<MatConvNet>

2.编译库

1)CPU版本编译
  • 打开MATLAB,在命令行输入
mex -setup 
mex -setup C++

>>> mex -setup C++
MEX 配置为使用 ‘Microsoft Visual C++ 2015’ 以进行 C++ 语言编译。
警告: MATLAB C 和 Fortran API 已更改,现可支持
包含 2^32-1 个以上元素的 MATLAB 变量。您需要
更新代码以利用新的 API。
您可以在以下网址找到更多的相关信息:
https://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html

  • 打开MATLAB,cd到你解压的那个matconvnet目录<MatConvNet>,输入下面3行
cd F:\hiudawn\matlab\matconvnet-1.0-beta25
addpath matlab
vl_compilenn

>>> vl_compilenn
警告: CL.EXE not found in PATH. Trying to guess out of mex setup.
> In vl_compilenn>check_clpath (line 650)
In vl_compilenn (line 426)
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.00.23026 版
版权所有(C) Microsoft Corporation。保留所有权利。

用法: cl [ 选项… ] 文件名… [ /link 链接选项… ]
Location of cl.exe (C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC..\VC\bin\amd64) successfully added to your PATH.
使用 ‘Microsoft Visual C++ 2015’ 编译。
MEX 已成功完成。

若干行一样的内容

使用 ‘Microsoft Visual C++ 2015 (C)’ 编译。
MEX 已成功完成。

到此CPU版本的就已经编译完成,在MATLAB命令行输入如下命令可以测试

vl_testnn
3)GPU版本编译
  • 首先你的GPU运算能力要有2.0以上,之后CUDA版本要满足下表
MATLABCUDA toolkit
R2017a8.0
R2016b7.5
R2016a7.5
R2015b7.0

你要是不知道该用哪个版本CUDA,输入下面命令,有人会告诉你

gpuDevice
  • 接下来,假设你只有唯一的CUDA且匹配你的MATLAB版本
    直接运行如下命令
vl_compilenn('enableGpu', true)
  • 如果你有很多CUDA,可以通过下面命令选择一个
vl_compilenn('enableGpu', true, 'cudaRoot', 'yourpath/NVIDIA/CUDA-n.0')
  • 安装完试一下
vl_testnn('gpu', true)

如果可以就成功了

3)cuDNN support

上面其实已经可以暂时使用了,这里我没GPU没法继续安装。

3.开启你的MATLAB

输入:

run <MatConvNet>/matlab/vl_setupnn

测试CPU:

vl_testnn

测试GPU:

vl_testnn('gpu', true)

总结

安装不成功请自己参考官网

更新(Ubuntu安装)

本文在Ubuntu环境下也进行了设置,并配置了GPU,用Ubuntu的话,编译器要换成:

mex -setup c
mex -setup c++

其他内容大同小异,另外我这里出了一个奇怪的错误
Error using mex

/usr/bin/ld: cannot find -ljpeg

collect2: error: ld returned 1 exit status

Error in vl_compilenn>mex_link (line 528)

mex(mopts{:}) ;

Error in vl_compilenn (line 479)

mex_link(opts, objs, mex_dir, flags.mexlink) ;

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐