本文主要介绍:经过一番周折,在Windows7 64位系统下成功配置Caffe,下面总结一下基本的配置过程,以及配置过程中遇到的问题。
配置环境:Windows7 X64 + CUDA7.0 + VS2013 + Matlab2014a
1.安装CUDA
1.1. 版本选择
至于版本的选择,安装7.5、7.0和6.5版本都可以,安装包网上到处可见,分享一个自己安装的版本:http://pan.baidu.com/s/1i5AmAZb
1.2 安装过程
CUDA安装过程以及与VS关联过程参考:
(VS2013关联过程与VS2012相同)
1.3 更新显卡驱动
安装后,运行GeFroce Experience,点击“驱动程序”—>“检测更新”
2.配置Caffe
2.1. 下载Caffe及第三方库
文件下载地址见:http://blog.csdn.net/happynear/article/details/45372231,可以参考博客中的“一、准备”。(博客中“二、编译”不够明确,并且按照博客中的过程进行编译,会遇到一些问题,具体问题下文详细说明。)
2.2. 编译
(1)1、双击caffe-windows-master/src/caffe/proto/extract_proto.bat批处理文件来生成三个文件:caffe.pb.h、caffe.pb.cc和caffe_pb2.py,前两个c++文件,最后一个是python文件;
(2)打开caffe-windows-master/buildVS2013/MainBuilder.sln,打开之后切换编译模式至Release X64模式。如果打开之后显示加载失败,可能你的CUDA版本和工程中的不一致,工程中是CUDA 7.5版,这时就要用记事本打开caffe-windows-master/buildVS2013目录下各个文件夹内的.vcxproj文件,搜索CUDA 7.5,把这个7.5换成你自己的CUDA版本,就可以正常打开了。
(3)查看显卡GPU CUDA Capability的版本,方法:
step1: 右键“计算机”—>“属性”—>“设备管理器”—>“显示适配器”,如下图,
step2: 根据显卡型号,在https://developer.nvidia.com/cuda-gpus查看CUDA Capability的版本:
要查看显卡CUDA Capability版本的原因是因为:buildVS2013项目默认是开启cudnn的,而CUDNN要求GPU CUDA Capability 不低于3.0,如果CUDA Capability 版本低于3.0,在编译过程中,不关闭cudnn,则会出现类似问题:
http://www.aiuxian.com/article/p-2150379.html
http://blog.csdn.net/eagelangel/article/details/50562065
(4)修改工程预编译,关闭cudnn
如果GPU CUDA Capability 不低于3.0,则跳过该过程,低于的进行如下操作:
通过修改预编译来关闭cudnn,点击caffe工程,右键“属性”打开属性页,
删除“预处理器定义”中的USE_CUDNN,同理, 工作中的其他项目也删除USE_CUDNN
(5)修改matcaffe、pycaffe工程相关属性
Caffe接口可以是Python,也可以是Matlab,我选用的是matlab,所以把MainBuilder.sln过程中的pycaffe过程移除了,介绍一下matcaffe的修改过程,pycaffe工程类似:
step1:打开matcaffe工程属性页,添加matlab的 include路径和lib路径:
step2:连接器中添加附加目录:
(要根据自己的matlab路径进行添加)
(6)准备工作已经完成,点击“生成”进行编译,编辑过程中会花费较长时间。
编译完成后,会在”caffe-windows-master\matlab+caffe\private“生成caffe_.mexw64文件。
3.测试
3.1 配置
step1: 把文件夹 ***caffe-windows-master\3rdparty\bin添加到系统环境变量中,也可以直接把这些dll文件拷贝到“C:\Windows\System32”和“C:\Windows\SysWOW64”中;
step2: 把3rdparty\bin中的dll文件,拷贝到 “caffe-windows-master\matlab+caffe\private“中;
3.2 测试
step1:matlab 打开
“caffe-windows-master\matlab\demo\classification_demo.m”,classification_demo.m需要文件bvlc_reference_caffenet.caffemodel,可以到
http://dl.caffe.berkeleyvision.org/
下载,下载后放到“models/bvlc_reference_caffenet/”中;
step2: 运行[scores, maxlabel] = classification_demo();
运行结果:
4.遇到的问题及解决
当初配置过程参考的是:http://blog.csdn.net/happynear/article/details/45372231,编译过程中遇到一些问题,现总结一下。
4.1 编译时,matcaffe和pycaffe编译失败
解决:原因是编译时,需要matlab和python的一些头文件和库文件,过程中没有添加,需要自己添加一下,过程见本文2.2 (5)
4.2 编译成功,测试classification_demo.m时,出现错误:Invalid MEX-file “…….caffe_.mexw64”找不到指定的模块
如下图:
解决方法:按3.1过程进行配置。(当初使用的Matlab2013a,编译成功,但仍有该问题,最后卸载Matlab2013a,换成2014a,如果3.1配置不能解决,可以考虑该方法)
4.3 caffe.Net(net_model, net_weights, phase)函数出问题:glog check error, please check log and clear mex
该问题没有截图,大致提示为:
glog check error, please check log and clear mex
出错 caffe.Net (line 31)
self = caffe.get_net(varargin{:});
出错 classification_demo (line 84)
net = caffe.Net(net_model, net_weights, phase);
出错后会生成一些文件,记录错误,打开文件夹“caffe-windows-master\matlab\demo”,会发现多了几个文件:
打开ERROR文件,会看到错误原因:
该问题“Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0) CUDNN_STATUS_ARCH_MISMATCH”是因为:GPU CUDA Capability 版本低于3.0,解决方法见2.2 (3)、(4)