我是靠谱客的博主 俊秀小蚂蚁,最近开发中收集的这篇文章主要介绍DL实战(3):cfNet- Matlab配置一、安装MatConvNet,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

git地址:https://www.robots.ox.ac.uk/~luca/cfnet.html
参考教程:
https://www.jianshu.com/p/bd5f49f900a3
https://blog.csdn.net/zhumiankuan/article/details/80402810

一、安装MatConvNet

下载地址:http://www.vlfeat.org/matconvnet/
解压后添加路径到matlab,

cd D:MATLAB2016btoolboxmatconvnet-1.0-beta25 %解压路径
addpath matlab

测试:

>> vl_compilenn

报错:

错误使用 vl_compilenn>check_compability (line
535)
Unsupported VS C++ compiler, ver >=14.0
required (VS 2015).

出错 vl_compilenn (line 197)
check_compability(arch);

解决:

安装高版本的C++编译器,参考:
https://blog.csdn.net/rong_toa/article/details/79002711
设置环境变量,添加到matlab环境中:
http://blog.sina.com.cn/s/blog_167bbdec10102x113.html

再测试报错

>> vl_compilenn
'cl.exe' 不是内部或外部命令,也不是可运行的程序 
或批处理文件。 
错误使用 vl_compilenn>check_clpath (line 656)
Unable to find cl.exe

出错 vl_compilenn (line 426)
    cl_path = fileparts(check_clpath()); % check
    whether cl.exe in path

解决:

1、使用VS2017的C++编译器
其实我之前电脑有装VS2017的,但是matlab2016b和matlab2017a有个bug就是不能识别这个编译器,根据版本下载对应的补丁(https://ww2.mathworks.cn/support/bugreports/1487958?s_tid=mwa_osa_a)到matlab安装路径(在matlab中运行matlabroot语句可查看)中,将压缩包中对应的文件覆盖到安装路径对应的路径上。运行mex -setup修改默认编译器:

mex -setup

2、在我的电脑搜索cl.exe,我的cl.exe是在

D:Program Files (x86)Microsoft Visual Studio2017CommunitySDKScopeCppSDKVCbin

将其复制到MatConvNet的解压路径下即可。

再测试还报错

>> vl_compilenn
使用 'Microsoft Visual C++ 2017' 编译。
错误使用 mex
data.cpp
c1xx: fatal error C1060: 编译器的堆空间不足

百度谷歌了一天多,都无解,卒。生无可恋之时,抱着侥幸心理解压了之后下载的VITAL代码,发现里面也配送matconvnet工具箱,运行里面compile_matconvnet.m代码,出现警告: 名称不存在或不是目录,这个不管。然后再运行matconvnet下子文件夹matlab中的vl_compilenn.m,神了奇,竟然编译成功了:

>> cd D:TrackingbackupVital_release-masterVital_release-mastermatconvnet
>> addpath matlab
>> vl_compilenn %CPU
Starting parallel pool (parpool) using the 'local' profile ... 
使用 'Microsoft Visual C++ 2017' 编译。
MEX 已成功完成。

至于GPU的编译依旧是困难重重啊

%把cudnn放在当前路径下的local里面,与matlab文件夹同级
>>addpath(genpath('当前路径')) 
>>vl_compilenn('enableGpu',true,'cudaRoot','C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5', 'cudaMethod' ,'nvcc', 'enableCudnn','true', 'cudnnRoot','local/cuda') %GPU

报错

nvcc fatal   : nvcc cannot find a supported version of Microsoft Visual Studio. Only the versions 2010, 2012, and 2013 are supported

解决:忘了查了百度谷歌多久了,无意间看到一个方法,结合自己的实际情况,我大胆地尝试了一下:
直接打开VS2013 x64 兼容工具命令提示

cd c:

"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv7.5binnvcc" -c "D:TrackingbackupVital_release-masterVital_release-mastermatconvnetmatlabsrcvl_imreadjpeg.cu" -DNDEBUG -DENABLE_GPU -DENABLE_CUDNN -Ilocal/cuda -D__SSSE3__ -I"D:MATLAB2016bexterninclude" -I"D:MATLAB2016btoolboxdistcompgpuexterninclude" -Xcompiler /MD -o "D:TrackingbackupVital_release-masterVital_release-mastermatconvnetmatlabmex.buildvl_imreadjpeg.obj"

注:上面这么长的一段其实我在matlab下断点中得到的,在vl_compilenn.m中的nvcc_compile函数里面打印输出nvcc_cmd这个变量,然后改一下xxx.cu文件所在的路径(打印输出的是相对路径,改为绝对路径)。
然后我一个个.cu文件就这样在VS2013 x64 兼容工具命令提示进行编译。总体是顺利的,除了nnpooling_cudnn.cu和nnconv_cudnn.cu外,对于这2个后来我把cudnn换成V4和V2也就好了。
对于后缀是.cpp的文件,直接在matlab运行就行(注释掉以下这一句代码

nvcc_compile(opts, srcs{i}, toobj(bld_dir,srcs{i}), flags.nvcc) ;

建议mex_compile和mex_link分开编译。如果不成功,就mex-setup换一个C++编译器,好像有的地方我用的是VS2012有的是VS2013。这样就大功告成了。
测试运行

>> vl_test_nnlayers

PS:偷懒快捷的方法

感谢这个博客的作者,http://blog.sina.com.cn/s/blog_679e13290102v6o8.html
直接用作者编译好的(windows-CPU)matconvnet-1.0-beta7(链接:http://pan.baidu.com/s/1o62thOI 密码:pqij),用VS2012的c++编译器(作者是VS2010),我也编译成功了!实在太感人了!
ps:vs2017找不到MFC解决方案:
https://jingyan.baidu.com/article/77b8dc7f8bdf216174eab689.html
下面这个是我经过上面重重困难编译成功的,大家可以试试能不能直接拿去用,就是先下载vital的代码,然后解压放在里面matlab文件夹里面,与src、xtest文件夹同级。祝好!
链接:https://pan.baidu.com/s/1LKUbdW4svhYRBDtedj1K4g 密码:4uza

后记:在CFnet作者用的是matconvnet-1.0-beta24,所以我又再搞了一次,发现GPU编译的时候老是出错,说什么Error using mex nvcc fatal : Unsupported gpu architecture ‘compute_61’,明明我在matlab运行gpuDevice第三行显示计算能力6.1来着。后来我尝试直接用vl_compilenn(‘enableGpu’,true)居然成功啦!测试了一下CFnet中tracking文件夹的代码
如果报错未定义函数或变量 ‘MulConst’。则先运行startup.m

>> run_cfnet1_evaluation
        sub-seq 1/3
        sub-seq 2/3
        sub-seq 3/3

dist: 32.25 overlap: 60.94  fps: 24.6

这是我在WIN10 64位系统下编译后的matconvnet-1.0-beta24,有需要自取:
链接:https://pan.baidu.com/s/1xSZMgGkC_YVuERsexKoz7A 密码:k74v

最后

以上就是俊秀小蚂蚁为你收集整理的DL实战(3):cfNet- Matlab配置一、安装MatConvNet的全部内容,希望文章能够帮你解决DL实战(3):cfNet- Matlab配置一、安装MatConvNet所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部