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安装是否成功:
cmd输入
a、
注:这里将cudaversion设置为8.0是因为我电脑原本就安装了8.0版的cuda,也配置了相应v5版本的cudnn
b、
对应的目录就是你个软件安装的目录,其中miniconda 是anaconda的迷你版。修改后保存退出。
最后才发现,我下的微软版本的caffe中已经有roipooling层的定义和声明了,而且
不要忘了修改libcaffe.vcxproj文件,按照http://blog.csdn.net/sunmelon/article/details/54600178
来改。(其实可以不用将faster-rcnn中caffe的那些文件复制过来,直接修改libcaffe.vcxproj就行了)
关于使用py-faster-rcnn,我准备用MrGF的lib,(即使用https://github.com/MrGF/py-faster-rcnn-windows下载得到的文件),然后进行编译配置,相当于直接使用python来实现(后面要是使用c#来调用的话也是可以实现的http://www.cnblogs.com/zeroone/p/3632371.html)
如果不出错那就不用管,如果出现LNK2001的错误,可以参考问题17的解决方法。
详见:http://www.cnblogs.com/whlook/p/6974174.html
(这里编译caffe真心恶心,各种bug,有些bug可能你重新启动VS就好了,有些问题可能需要你改一下代码)
找到
找到
改为
最后将lib/rpn和lib/roi_data_layer下的其他的文件,能找到
等待完成即可。
解决方法:在计算机中搜索CUDA 8.0.props,然后将其拷贝到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\目录下即可
2、
解决方法:在libcaffe->属性->配置属性->所有选项->附加包含目录 中添加提示文件所在目录,重新生成。
3、
解决方法:http://bbs.csdn.net/topics/392062086 里面很多方法
个人实践认为不一定是路径问题。重进一下VS或者是在工程上右键->管理NuGet程序包中更新OpenCV,再不行就将E:\caffe-master-windows\caffe-master-microsoft\NugetPackages文件夹中的OpenCV.2.4.10删掉再进VS,一般都能解决。
4、
解决方法:移除box_annotator_ohem_layer.cu这个文件(反正也不会用到)
5、
解决方法:在bnll_layer.cu 里修改Dtype expval = exp(min(in_data[index], Dtype(kBNLL_THRESHOLD))); ——>Dtype expval = exp(min(in_data[index], Dtype(50)));
6、
解决方法:语句上下添加语句,使得:
7、
解决办法:在hdf5.cpp文件中将所有出错的case语句下的内容都括上大括号{ }
8、
解决方法:在https://github.com/conner99/caffe下载工程,找到signal_handler.cpp文件替换即可。
我认为直接将出错的cpp文件内容用给出网站上的替换了就行了。
9、
解决方法:方法一:直接安装debug版本的python27
方法二:
1.将python安装目录下libs目录里的python27复制一份并命名为python27_d.lib
2.修改include目录下的pyconfig.h,将
10、
强调内容解决方法:http://blog.csdn.net/wl2002200/article/details/53868726
11、
解决方法:对照rbg的_caffe.cpp将后两个参数删掉即可。
12、
解决方法:回去将caffe重新生成解决方案即可!(这一步很容易漏掉,原因是你虽然装了libcaffe和pycaffe但不代表你整个caffe已经编译完毕)
13、
解决方法:直接在命令提示符中输入,pip install protobuf等待安装完成就行(前提是你将anaconda2的python设为你默认的)
14、
解决方法:http://blog.csdn.net/hereiskxm/article/details/53517516
15、
解决方法:http://blog.csdn.net/sunmelon/article/details/54600178
16、
解决方法:重进一下VS
17、
解决方法:我的天,这个问题几乎耗费了我三天的时间,试了各种国内外网站的方法,大部分都是说定义和声明不符,或者是链接器的版本有问题,我几乎一字一句的检查了roi_pooling_layer相关的三个文件,没有问题,最后思考了很久,想到说的是Backward_gpu有问题,那应该是链接不到.cu文件,那我干脆就把它生成的.cu.obj文件添加到caffe项目里面,结果真的有效,编译成功了!!
18、
解决办法:进行如下修改
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
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.htmlhttp://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所有! 不得转载!
相关文章推荐
- Ubuntu16.04 cuda8.0+cudnn5.1 opencv3.3 caffe-faster-rcnn
- Ubuntu16.04+CUDA8.0+OpenCV3.1+python+caffe+faster-rcnn环境配置
- Ubuntu16.04+GTX1070+cuda8.0+cudnn5.1配置faster-rcnn的方法
- Ubuntu16.04+cuda8.0+cudnn5.1配置faster-rcnn的方法以及训练自己的数据出现的问题
- Ubuntu16.04 cuda8.0+cudnn5.1 opencv3.3 caffe-faster-rcnn 服务器配置
- Ubuntu16.04 下配置caffe(cuda 8.0 cudnn5.1 )
- 深度学习框架caffe及py-faster-rcnn详细配置安装过程
- Win10下配置深度学习框架Caffe及python接口 CUDA8.0+CUDNn5.1
- Ubuntu 14.04 64位机上不带CUDA支持的Caffe配置编译操作过程+faster-rcnn
- NVIDIA DIGITS 5.1-dev学习笔记之安装过程记录:Windows10 x64位系统 、 MicroSoft Caffe Master、CUDA 8.0 、Python 2.7
- Ubuntu16.04+cuda8.0+cudnnV5.1配置faster-rcnn的方法
- 多图超详细Ubuntu16.04下配置CUDA8.0+cuDNN5.1+Caffe+OpenPose
- faster-rcnn在win10+cuda8.0+vs2013+matlab2016a下的配置
- Ubuntu16.04+caffe+cuda8.0+cudnn5.1+opencv配置
- ubutnu16.04+caffe+cuda8.0+NVIDIA TX2环境下,Faster RCNN 训练中的一些问题及解决办法
- 深度学习框架Caffe配置:Ubuntu 16.04+CUDA8.0+cuDNN5.1+OpenCV3.1+Anaconda+Octave4.0.3
- faster rcnn配置 cuda8.0
- Caffe: Faster-RCNN Python版本配置 (Windows)
- Ubuntu16.04+GT720M + Cuda8.0+py-faster-rcnn(caffe)
- Caffe: Faster-RCNN Python版本配置 (Windows)