概述
最近一直在研究深度学习的内容,这里着手caffe+faster cnn matlab的配置,但此处确实有很多坑,自己几乎配置了两天才完成,在这里将配置的步骤记录下来,防止忘记。
本人的用的是win10+CUDA8.0+faster rcnn matlab。
一,准备工作(各种安装文件下载)
1,caffe提供Windows工具包(caffe-master):https://github.com/Microsoft/caffe
2,faster rcnn matlab版本下载:https://github.com/ShaoqingRen/faster_rcnn
2,vs2013下载 链接:http://pan.baidu.com/s/1b6VDJg 密码:f2jp
3,CUDA7.5的下载地址 : https://developer.nvidia.com/cuda-downloads
二,
解压缩下载的caffe-windows文件,并将该windows文件夹下的CommonSettings.props.example文件复制一份,并将复制的文件命名为CommonSettings.props,如图所示。
三,
打开我们的CommonSettings.props,进行如下的一些修改。最后的一个CudaArchitecture,本人没有修改,但最后也编译成功了,不过最好应该对照自己的修改一下。
后面保存了自己的matlab安装路径,可以看到横线上又加了一条路径,这是为了防止后面编译matcaffe时显示错误找不到mxGPUArray.h文件。
四,
打开Windows下的caffe.sln文件,这里如果没有按照上面修改,会出现有的libcaffe,test_all load failed的情况发生。可以看到打开后一共有16个projects。
接着我们着手编译libcaffe文件,这里有几点需要注意:
a,项目选择released模式
b,修改libcaffe的C++常规设置,将警告视为错误选择否
c,faster-rcnn中使用了roi-pooling-layer,而这里却并未添加roi_pooling_layer,所以我们需要将头文件,cu文件和cpp文件手动加入到libcaffe中,否则在后面配置faster rcnn的工作中会出现错误。
我们现在可以编译libcaffe了。右键libcaffe,选择生成,开始编译libcaffe。
libcaffe编译成功之后我们编译caffe。右键生成。
再接着matcaffe。
之后classification
:用来分类 ;compute_image_mean
:计算均值
五,
好了,caffe弄好了,后面就是faster rcnn matlab的配置了。
在别的文章中会让你直接运行fetch_data/fetch_caffe_mex_windows_vs2013_cuda65.m
下载编译好的caffe代码,但是这里我们使用的是CUDA8.0 不能使用他的caffe,于是我们自己编译的caffe就排上用场了。就是把编译之后的x64Release文件全部拷贝到externalcaffematlabcaffe_faster_rcnn当中就好了。
六,
运行faster_rcnn_build.m 这个运行的时候会报很多错误,这里有两步。
a,MATLAB和vs编译器的接口你没有配置好,这个你直接使用mex -setup在matlab中进行配置。
b,打开nvmex.m这个文件,按照下面的图,将路径修改正确。
运行build.m以后报错:
[html] view plain copy
Error using mex
LIBCMT.lib(crt0dat.obj) : error LNK2005: _amsg_exit 已经在
MSVCRT.lib(MSVCR120.dll) 中定义
LIBCMT.lib(crt0dat.obj) : error LNK2005: _initterm_e 已经在
MSVCRT.lib(MSVCR120.dll) 中定义
LIBCMT.lib(winapisupp.obj) : error LNK2005: __crtCaptureCurrentContext
已经在 MSVCRT.lib(MSVCR120.dll) 中定义
LIBCMT.lib(winapisupp.obj) : error LNK2005: __crtCapturePreviousContext
已经在 MSVCRT.lib(MSVCR120.dll) 中定义
LIBCMT.lib(winapisupp.obj) : error LNK2005: __crtTerminateProcess 已经在
MSVCRT.lib(MSVCR120.dll) 中定义
LIBCMT.lib(winapisupp.obj) : error LNK2005: __crtUnhandledException 已经
在 MSVCRT.lib(MSVCR120.dll) 中定义
LIBCMT.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)"
(?terminate@@YAXXZ) 已经在 MSVCRT.lib(MSVCR120.dll) 中定义
LIBCMT.lib(crt0init.obj) : error LNK2005: __xi_a 已经在
MSVCRT.lib(cinitexe.obj) 中定义
LIBCMT.lib(crt0init.obj) : error LNK2005: __xi_z 已经在
MSVCRT.lib(cinitexe.obj) 中定义
LIBCMT.lib(crt0init.obj) : error LNK2005: __xc_a 已经在
MSVCRT.lib(cinitexe.obj) 中定义
LIBCMT.lib(crt0init.obj) : error LNK2005: __xc_z 已经在
MSVCRT.lib(cinitexe.obj) 中定义
LIBCMT.lib(winxfltr.obj) : error LNK2005: __CppXcptFilter 已经在
MSVCRT.lib(MSVCR120.dll) 中定义
LIBCMT.lib(mlock.obj) : error LNK2005: _lock 已经在
MSVCRT.lib(MSVCR120.dll) 中定义
LIBCMT.lib(mlock.obj) : error LNK2005: _unlock 已经在
MSVCRT.lib(MSVCR120.dll) 中定义
正在创建库 G:faster_rcnn-masterbinnms_gpu_mex.lib 和对象
G:faster_rcnn-masterbinnms_gpu_mex.exp
LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用
/NODEFAULTLIB:library
LINK : warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用
/NODEFAULTLIB:library
G:faster_rcnn-masterbinnms_gpu_mex.mexw64 : fatal error LNK1169: 找到
一个或多个多重定义的符号
Error in nvmex (line 48)
eval(mexCommandLine);
Error in faster_rcnn_build (line 23)
nvmex('functions/nms/nms_gpu_mex.cu', 'bin');
这个错误是lib库冲突了,解决办法是修改mex命令:
mexCommandLine = ['mex ' '-outdir ' outDir ' ' filename '.o' ' -L' CUDA_LIB_Location ' -lcudart' ' LINKFLAGS="$LINKFLAGS /NODEFAULTLIB:LIBCMT.LIB"' ];
七,
运行startup.m
八,
运行这个文件下载训练好的模型fetch_data/fetch_faster_rcnn_final_model.m ,如果下载不下来也可以在http://pan.baidu.com/s/1hsFKmeK这里直接下载,下载完成后,在faster_rcnn-master目录下解压。output文件夹会被覆盖。
九,
运行experiments/script_faster_rcnn_demo.m,到了这一步还是会出现一些错误的可能。
a,在script_faster_rcnn_demo.m中,下图可能会因为多一个fileparts或少一个fileparts出现:错误使用 run (line 46)。
b,单步调试,发现一到这两步就发生崩溃。
fast_rcnn_net = caffe.Net(proposal_detection_model.detection_net_def, 'test');
fast_rcnn_net.copy_from(proposal_detection_model.detection_net);
解决办法:
1,前面build libcaffe時 沒有加入之前所说的roi_pooling_layer.cu以及cpp。
2,将release生成的matcaffe加入matlab的路径中,直接在设置路径里面设置
3,然后将release(如果你的caffe.sln是在Debug下生成的,就把Release换成Debug)加入系统变量path。
十,
看看实验结果吧,这里拿来检测行人。
即使到了这一步还是有可能会崩溃的,这基本上是由于显卡内存不足造成的,即使是使用较小的ZF模型也是需要3G内存的。如果实在不行就令opts.use_gpu = false,使用cpu吧。
下面是结果图:
最后
以上就是阔达烧鹅为你收集整理的matlab版faster rcnn的配置 win10+cuda7.5+cudnn7.5+matlab2018a的全部内容,希望文章能够帮你解决matlab版faster rcnn的配置 win10+cuda7.5+cudnn7.5+matlab2018a所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复