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

首先给出一些下载地址:
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文件夹下。
win7+cuda8.0+cudnn5.1+caffe-master(microsoft)+faster-rcnn完整配置手册_第1张图片

二、修改CommonSettings.props文件

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

<UseCuDNN>trueUseCuDNN>
    <CudaVersion>8.0CudaVersion>
    <PythonSupport>truePythonSupport>
    <MatlabSupport>trueMatlabSupport>

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

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

对应的目录就是你个软件安装的目录,其中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

win7+cuda8.0+cudnn5.1+caffe-master(microsoft)+faster-rcnn完整配置手册_第2张图片

五、编译caffe的python接口

1、生成libcaffe

先编译libcaffe,编译中会碰到很多问题,详见后面的“问题”。
win7+cuda8.0+cudnn5.1+caffe-master(microsoft)+faster-rcnn完整配置手册_第3张图片
关于使用py-faster-rcnn,我准备用MrGF的lib,(即使用https://github.com/MrGF/py-faster-rcnn-windows下载得到的文件),然后进行编译配置,相当于直接使用python来实现(后面要是使用c#来调用的话也是可以实现的http://www.cnblogs.com/zeroone/p/3632371.html)
win7+cuda8.0+cudnn5.1+caffe-master(microsoft)+faster-rcnn完整配置手册_第4张图片

2、编译caffe

同样的方法,现将属性->配置属性->c/c++->将警告视为错误 改为否,然后再生成。
如果不出错那就不用管,如果出现LNK2001的错误,可以参考问题17的解决方法。
win7+cuda8.0+cudnn5.1+caffe-master(microsoft)+faster-rcnn完整配置手册_第5张图片

3、编译pycaffe

在编译pycaffe时会先编译caffe.managed工程(一般caffe工程编译过了,这个就没问题),直接改了“将警告视为错误”后生成就行了。
详见:http://www.cnblogs.com/whlook/p/6974174.html
(这里编译caffe真心恶心,各种bug,有些bug可能你重新启动VS就好了,有些问题可能需要你改一下代码)
win7+cuda8.0+cudnn5.1+caffe-master(microsoft)+faster-rcnn完整配置手册_第6张图片

4、后续

如果对于在windows上面使用的同学,还没有完!(如果这时候进行下面的步骤在import caffe时会报错)最后一步,生成caffe解决方案,等待完成。
win7+cuda8.0+cudnn5.1+caffe-master(microsoft)+faster-rcnn完整配置手册_第7张图片

六、编译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

等待完成即可。
win7+cuda8.0+cudnn5.1+caffe-master(microsoft)+faster-rcnn完整配置手册_第8张图片

七、复制相关生成文件

完成了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并替换即可。
win7+cuda8.0+cudnn5.1+caffe-master(microsoft)+faster-rcnn完整配置手册_第9张图片

八、运行代码测试

这样整个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”。请确认 声明中的
路径正确,且磁盘上存在该文件。

解决方法:在计算机中搜索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”或它的某一个依赖项。系统找不到指定的
文件。 请确认 声明正确,该程序集及其所有依赖项都可用,
并且该任务包含实现 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::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”或它的某一个依赖项。系统找不到指定的文件。 请确认
声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现
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::Backward_gpu(class std::vector caffe::Blob *,class std::allocator *> > const &,class
std::vector > const &,class std::vector caffe::Blob *,class std::allocator *> > 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所有! 不得转载!

你可能感兴趣的:(win7+caffe)