您的位置:首页 > Web前端

win7+cuda8.0+cudnn5.1+caffe-master(microsoft)+faster-rcnn完整配置手册

2018-01-28 22:23 260 查看
首先给出一些下载地址:

Cudnn下载:

https://developer.nvidia.com/rdp/cudnn-download

Vs2013下载:

http://download.microsoft.com/download/9/3/E/93EA27FF-DB02-4822-8771-DCA0238957E9/vs2013.5_ult_chs.iso?type=ISO

Caffe-master下载:

https://github.com/Microsoft/caffe

Faster-rcnn替换的lib:

https://github.com/MrGF/py-faster-rcnn-windows

Faster-rcnn的c++版本:

https://github.com/zhanglaplace/Faster_rcnn_Cplusplus_vs2013 (其中使用的是matlab生成的model)

Vc++14.0下载地址:

https://download.microsoft.com/download/5/f/7/5f7acaeb-8363-451f-9425-68a90f98b238/visualcppbuildtools_full.exe?fixForIE=.exe

一个很好的包下载地址集合:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

在网上公开的在windows下caffe官方的版本有两个:

一个是BVLC的https://github.com/BVLC/caffe/tree/windows

一个是微软开发的https://github.com/Microsoft/caffe

本文使用的是微软的版本,因为微软版本的在编译时不需要自己再去配置其他的依赖库,它内部包含了几乎所有的依赖。

一、关于cuda的环境配置

1、cuda安装和配置

cuda7.5直接安装操作,选择了默认安装路径。安装完成后,系统自动配置两个环境变量。

CUDA_PATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5
CUDA_PATH_V7_5:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5


为使用方便,我们在添加如下变量:

CUDA_BIN_PATH:%CUDA_PATH%\bin
CUDA_LIB_PATH:%CUDA_PATH%\lib\Win32
CUDA_SDK_BIN:%CUDA_SDK_PATH%\bin\Win64
CUDA_SDK_LIB:%CUDA_SDK_PATH%\common\lib\x64
CUDA_SDK_PATH:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5


测试cuda安装是否成功:

cmd输入
nvcc –V


2、cudnn安装

下载cudnn5.1 解压得到include ,bin,lib三个文件夹,将三个文件夹复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5下对应的include lib和bin文件夹下。



二、修改CommonSettings.props文件

CommonSettings.props是由CommonSettings.props.example文件复制然后重命名得到的,使用已经安装的VS2013打开修改:

a、

<UseCuDNN>true</UseCuDNN>
<CudaVersion>8.0</CudaVersion>
<PythonSupport>true</PythonSupport>
<MatlabSupport>true</MatlabSupport>


注:这里将cudaversion设置为8.0是因为我电脑原本就安装了8.0版的cuda,也配置了相应v5版本的cudnn

b、

<CuDnnPath>D:\cuda\cudnn-8.0-windows7-x64-v5.1</CuDnnPath>
<PythonDir>D:\miniconda\miniconda\</PythonDir>
<MatlabDir>D:\matlab2016a</MatlabDir>


对应的目录就是你个软件安装的目录,其中miniconda 是anaconda的迷你版。修改后保存退出。

三、补充libcaffe(针对使用faster-rcnn的)

将rbg的fasterrcnn中的include,python,sru,tools/caffe.cpp复制到E:\caffe-master-windows\caffe-master-original\caffe-master替换掉相应的文件(注意box_annotator_ohem_layer.hpp,box_annotator_ohem_layer.cpp这个层rbg的是没有的啊,别删了),然后VS会自己更新libcaffe。

最后才发现,我下的微软版本的caffe中已经有roipooling层的定义和声明了,而且

不要忘了修改libcaffe.vcxproj文件,按照http://blog.csdn.net/sunmelon/article/details/54600178

来改。(其实可以不用将faster-rcnn中caffe的那些文件复制过来,直接修改libcaffe.vcxproj就行了)

四、安装Anaconda2并下载必要的python库

1、安装anaconda2

很简单,一直下一步就行了,这里不再赘述。

2、python相关库安装

cmd下运行

conda install --yes numpy scipy matplotlib scikit-image pip
pip install protobuf




五、编译caffe的python接口

1、生成libcaffe

先编译libcaffe,编译中会碰到很多问题,详见后面的“问题”。



关于使用py-faster-rcnn,我准备用MrGF的lib,(即使用https://github.com/MrGF/py-faster-rcnn-windows下载得到的文件),然后进行编译配置,相当于直接使用python来实现(后面要是使用c#来调用的话也是可以实现的http://www.cnblogs.com/zeroone/p/3632371.html



2、编译caffe

同样的方法,现将属性->配置属性->c/c++->将警告视为错误 改为否,然后再生成。

如果不出错那就不用管,如果出现LNK2001的错误,可以参考问题17的解决方法。



3、编译pycaffe

在编译pycaffe时会先编译caffe.managed工程(一般caffe工程编译过了,这个就没问题),直接改了“将警告视为错误”后生成就行了。

详见:http://www.cnblogs.com/whlook/p/6974174.html

(这里编译caffe真心恶心,各种bug,有些bug可能你重新启动VS就好了,有些问题可能需要你改一下代码)



4、后续

如果对于在windows上面使用的同学,还没有完!(如果这时候进行下面的步骤在import caffe时会报错)最后一步,生成caffe解决方案,等待完成。



六、编译faster-rcnn 中的lib

1、修改相关文件

首先在I:\py-faster-rcnn\lib目录下进行以下修改:

找到
proposal_layer.py
中相应的行,改成
param_str
(去掉最后的下划线);

找到
proposal_layer.py
中另一个修改:

cfg_key = str(self.phase) # either 'TRAIN' or 'TEST'


改为

cfg_key = str('TRAIN' if self.phase == 0 else 'TEST')


最后将lib/rpn和lib/roi_data_layer下的其他的文件,能找到
param_str_
的,都换成
param_str


2、替换和添加setup文件

然后下载https://github.com/MrGF/py-faster-rcnn-windows上的lib,复制一份setup_cuda.py到与setup.py同级目录,复制nms/gpu_nms.cu到你的相应目录下。

3、在cmd中进行编译

打开命令提示符,cd到自己的lib目录下,依次运行(前提是你一定要将你的VS安装目录添加到环境变量path中):

SET VS90COMNTOOLS=%VS120COMNTOOLS% (如果电脑中装的是vs2013)
python setup.py install
python setup_cuda.py install


等待完成即可。



七、复制相关生成文件

完成了caffe库的编译和相关层的编译,现在只需要将你E:\caffe-master-windows\caffe-master-microsoft\caffe-master\Build\x64\Release\pycaffe\caffe文件夹复制到D:\anaconda2\anaconda2\Lib\site-packages和I:\py-faster-rcnn\caffe-fast-rcnn\python并替换即可。



八、运行代码测试

这样整个caffe和faster-rcnn 的编译工作就完成了,你可以在cmd下cd到你的demo.py目录下,运行python demo.py试试效果。



问题:

1、
E:\caffe-master-windows\caffe-master\caffe-

master\windows\libcaffe\libcaffe.vcxproj(42,5): 未找到导入的项

目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp

\v4.0\V120\BuildCustomizations\CUDA 8.0.props”。请确认 <Import> 声明中的

路径正确,且磁盘上存在该文件。


解决方法:在计算机中搜索CUDA 8.0.props,然后将其拷贝到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\目录下即可

2、
在编译caffe时出现错误1083,“fast-rcnn-layers.hpp”没有这个文件或目录


解决方法:在libcaffe->属性->配置属性->所有选项->附加包含目录 中添加提示文件所在目录,重新生成。

3、
错误   1   error MSB4062: 未能从程序集 E:\caffe-master-windows\caffe-

master\NugetPackages\OpenCV.2.4.10\build\native\\private\

coapp.NuGetNativeMSBuildTasks.dll 加载任务“NuGetPackageOverlay”。

未能加载文件或程序集“file:///E:\caffe-master-windows\caffe-

master\NugetPackages\OpenCV.2.4.10\build\native\private\coapp.

NuGetNativeMSBuildTasks.dll”或它的某一个依赖项。系统找不到指定的

文件。 请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用,

并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。

E:\caffe-master-windows\caffe-

master\NugetPackages\OpenCV.2.4.10\build\native\OpenCV.targets

772 5   libcaffe


解决方法:http://bbs.csdn.net/topics/392062086 里面很多方法

个人实践认为不一定是路径问题。重进一下VS或者是在工程上右键->管理NuGet程序包中更新OpenCV,再不行就将E:\caffe-master-windows\caffe-master-microsoft\NugetPackages文件夹中的OpenCV.2.4.10删掉再进VS,一般都能解决。

4、
错误   63  error : The path specified for SourceFile at 'E:\caffe-

master-windows\caffe-master-original\caffe-

master\src\caffe\layers\box_annotator_ohem_layer.cu' does not exist.    C:\Program

Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA

8.0.targets 410 9   libcaffe


解决方法:移除box_annotator_ohem_layer.cu这个文件(反正也不会用到)

5、
error : identifier "::caffe::kBNLL_THRESHOLD" is undefined in

device code    C:\Tools\caffe-master\src\caffe\layers\bnll_layer.cu    36


解决方法:在bnll_layer.cu 里修改Dtype expval = exp(min(in_data[index], Dtype(kBNLL_THRESHOLD))); ——>Dtype expval = exp(min(in_data[index], Dtype(50)));

6、
错误   7133    error C3861: “mkdir”:  找不到标识符   E:\caffe-master-

windows\caffe-master-original\caffe-master\src\caffe\util\db_lmdb.cpp   16  1

libcaffe


解决方法:语句上下添加语句,使得:

#ifdef MSC_VER
CHECK_EQ(mkdir(source.c_str(), 0744), 0) << "mkdir " << source << " failed";
#endif


7、
错误   7149    error C2360: “occurrences_35”的初始化操作由“case”标签跳

过E:\caffe-master-windows\caffe-master-original\caffe-

master\src\caffe\util\hdf5.cpp  51  1   libcaffe


解决办法:在hdf5.cpp文件中将所有出错的case语句下的内容都括上大括号{ }

8、
编译项目,报了都是关于signal_handler.cpp文件相关的错误


解决方法:https://github.com/conner99/caffe下载工程,找到signal_handler.cpp文件替换即可。

我认为直接将出错的cpp文件内容用给出网站上的替换了就行了。

9、
如果用C编写Python扩展找不到Python27_d.lib


解决方法:方法一:直接安装debug版本的python27

方法二:

1.将python安装目录下libs目录里的python27复制一份并命名为python27_d.lib

2.修改include目录下的pyconfig.h,将
#define Py_DEBUG
注释掉

10、
错误  1   error LNK2001: 无法解析的外部符号 "__declspec(dllimport)

void __cdecl google::InstallFailureSignalHandler(void)" (__imp_?

master\caffe-master\windows\caffe\common.obj   caffe


强调内容解决方法:http://blog.csdn.net/wl2002200/article/details/53868726

11、
错误  1   error C2661: “caffe::Net<caffe::Dtype>::Net”: 没有重载

函数接受 4 个参数  E:\caffe-master-windows\caffe-master\caffe-

master\python\caffe\_caffe.cpp  107 1   pycaffe


解决方法:对照rbg的_caffe.cpp将后两个参数删掉即可。

12、
from ._caffe import Net, SGDSolver, NesterovSolver,

AdaGradSolver, \ ImportError: DLL load failed: 找不到指定的模块


解决方法:回去将caffe重新生成解决方案即可!(这一步很容易漏掉,原因是你虽然装了libcaffe和pycaffe但不代表你整个caffe已经编译完毕)

13、
from google.protobuf.internal import enum_type_wrapper

ImportError: No module named google.protobuf.internal


解决方法:直接在命令提示符中输入,pip install protobuf等待安装完成就行(前提是你将anaconda2的python设为你默认的)

14、
错误  8740    error C1083: 无法打开包括文件: “gpu/mxGPUArray.h”:

No such file or directory  E:\caffe-master-windows\caffe-master\caffe-

master\matlab\+caffe\private\caffe_.cpp    16  1   matcaffe


解决方法:http://blog.csdn.net/hereiskxm/article/details/53517516

15、
unknown layer type: ROIPooling


解决方法:http://blog.csdn.net/sunmelon/article/details/54600178

16、
错误  376 error MSB4062: 未能从程序集 E:\caffe-master-

windows\caffe-master-

withoutchange\NugetPackages\gflags.2.1.2.1\build\native\\private\coapp.NuGetNati

veMSBuildTasks.dll 加载任务“NuGetPackageOverlay”。未能加载文件或程序

集“file:///E:\caffe-master-windows\caffe-master-

withoutchange\NugetPackages\gflags.2.1.2.1\build\native\private\coapp.NuGetNativ

eMSBuildTasks.dll”或它的某一个依赖项。系统找不到指定的文件。 请确认

<UsingTask> 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现

Microsoft.Build.Framework.ITask 的公共类。   E:\caffe-master-windows\caffe-master-

withoutchange\NugetPackages\glog.0.3.3.0\build\native\glog.targets  346 5

libcaffe


解决方法:重进一下VS

17、
错误8671error LNK2001: 无法解析的外部符号 "protected: virtual void

__cdecl caffe::ROIPoolingLayer<float>::Backward_gpu(class std::vector<class

caffe::Blob<float> *,class std::allocator<class caffe::Blob<float> *> > const &,class

std::vector<bool,class std::allocator<bool> > const &,class std::vector<class

caffe::Blob<float> *,class std::allocator<class caffe::Blob<float> *> > const &)" (?

Backward_gpu@?$ROIPoolingLayer@M@caffe@@MEAAXAEBV?

$vector@PEAV?$Blob@M@caffe@@V?$allocator@PEAV?

$Blob@M@caffe@@@std@@@std@@AEBV?$vector@_NV?

$allocator@_N@std@@@4@0@Z)E:\caffe-master-windows\caffe-master-

withoutchange\caffe-master\windows\caffe\roi_pooling_layer.objcaffe


解决方法:我的天,这个问题几乎耗费了我三天的时间,试了各种国内外网站的方法,大部分都是说定义和声明不符,或者是链接器的版本有问题,我几乎一字一句的检查了roi_pooling_layer相关的三个文件,没有问题,最后思考了很久,想到说的是Backward_gpu有问题,那应该是链接不到.cu文件,那我干脆就把它生成的.cu.obj文件添加到caffe项目里面,结果真的有效,编译成功了!!

18、
proposal_layer.py 中 pre_nms_topN  = cfg[cfg_key]

.RPN_PRE_NMS_TOP_N, keyerror = 1


解决办法:进行如下修改

#cfg_key = str(self.phase) # either 'TRAIN' or 'TEST'
cfg_key = str('TRAIN' if self.phase == 0 else 'TEST')


参考文献:

https://www.cnblogs.com/LaplaceAkuir/p/6484500.html

http://lib.csdn.net/article/deeplearning/55082

http://www.cnblogs.com/whlook/p/6974174.html

https://www.cnblogs.com/xzabg/p/6197908.html

http://www.cnblogs.com/LaplaceAkuir/p/6445189.html

http://m.blog.csdn.net/zb1165048017/article/details/51355143

http://www.jianshu.com/p/53a2f02064f6

http://blog.csdn.net/chenzhi1992/article/details/52618386

http://www.cnblogs.com/whlook/p/6974174.html

https://www.bbsmax.com/A/Gkz1OP65R6/

http://www.cnblogs.com/love6tao/p/5706830.html

http://blog.csdn.net/tina_ttl/article/details/51722983#71-打开名称为caffe的解决方案

http://blog.csdn.net/sunshine_in_moon/article/details/51426073

http://www.jianshu.com/p/53a2f02064f6

http://blog.csdn.net/sunmelon/article/details/54600178

版权为NBJ所有! 不得转载!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息