最近一直在研究深度学习的内容,这里着手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,CUDA8.0的下载地址 : https://developer.nvidia.com/cuda-downloads
这里比较推荐大家下载CUDA,不仅因为使用cpu,而不使用gpu会使得速度很慢。且后面用到faster rcnn也是需要下载CUDA的。这里我用的是CUDA8.0,本来准备使用版本7.5的,后来发现此版本本人电脑用不了(马上会说)。
具体的安装过程可以参考:https://wenku.baidu.com/view/ef375d8587c24028905fc377.html
记得出现这种情况就不要继续装了,赶紧换版本,不然后面很可能是无用功。
这里我没有装cudnn,以后有机会的话应该会尝试一下的。
二,
解压缩下载的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就排上用场了。就是把编译之后的\x64\Release文件全部拷贝到\external\caffe\matlab\caffe_faster_rcnn\当中就好了。
六,
运行faster_rcnn_build.m 这个运行的时候会报很多错误,这里有两步。
a,MATLAB和vs编译器的接口你没有配置好,这个你直接使用mex -setup在matlab中进行配置。
b,打开nvmex.m这个文件,按照下面的图,将路径修改正确。
七,
运行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吧。
下面是结果图:
发现效果比我之前使用Hog+SVM的方法要好很多,应该还有继续改进的余地。