caffe_master windows下的安装编译

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yxswhy/article/details/82690400

一、安装配置

caffe_master包

https://pan.baidu.com/s/1kI2TcOX3Ak-kNGGzsTYRBA

其它有需要请留言[email protected]

本文在windows下使用visual studio2013配置关联anaconda2.7(Anaconda2-4.3.1-Windows-x86_64 (1))的caffe项目,如果有耐心的人,当然可以自己去下载caffe项目自己进行编译,由于我比较懒,所以这里我利用微软自己移植的caffe进行部署,就不尝试编译官方的caffe(听说自己编译需要解决各种坑),微软移植的解决方案编译确实很方便,解决一些引用就ok了。caffe-master

学姐电脑情况如下:win10_x64  GTX950M显卡。安装的纯净系统,用360驱动大师安装驱动。相关安装文件,在百度云中提供的内均可以下载。注意:gtx1000系列显卡无法采用下面安装方法。因为gtx1000系列显卡需要安装cuda8.0.

第一步:安装vs2013及以上,anaconda2.7(相当于Python2.7但是包更全),MATLAB2014及以上版本

第二步:安装cuda8.0,解压缩cudnn的三个文件,复制到cuda安装目下对应的文件内(通常在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0下)。无英伟达显卡可以跳过此步

第三步:下载caffe-master文件,解压缩到任意磁盘,假设d盘。
1.在caffe-windows中,复制CommonSettings.props.example并重命名为CommonSettings.props
2.打开CommonSettings.props,将cpu only 改为false )
3    <CpuOnlyBuild>false</CpuOnlyBuild>

     <UseCuDNN>true</UseCuDNN>
 
    <CudaVersion>8.0</CudaVersion>
设置python    <PythonSupport>true</PythonSupport>
        <PythonDir>应该改成anaconda2所在的目录
设置MATLAB    <MatlabSupport>true</MatlabSupport>
        <MatlabDir>应该改成matlab所在的目录(看你电脑上matlab放哪),
        <IncludePath>中添加$(MatlabDir)\toolbox\distcomp\gpu\extern\include,因为新的matlab可能把mxGPUArray.h放到这儿去了,所以要添加上去。
    <CudaArchitecture>compute_30,sm_30</CudaArchitecture>  -------我的显卡是gt750m,计算能力是30,根据实际情况修
关联python2.7地址    <PythonDir>D:\Anaconda2\</PythonDir>
关联MATLAB地址    <MatlabDir>D:\Program Files\MATLAB\R2016a</MatlabDir>
4.启动anaconda命令窗口:
开始> 所有程序> anaconda> anaconda prompt
 pip install+包
anaconda中自带numpy、scipy、matplotlib、scikit-image这些包
要安装pip install protobuf

5.项目编译详见如下地址
http://www.cnblogs.com/marso/p/caffe_win10_python.html

6.MATLAB编译及配置
http://www.cnblogs.com/njust-ycc/p/5776286.html
http://blog.csdn.net/code_caq/article/details/68941560

编译通过后:
1.可以看到成功生成了matcaffe文件夹 以及caffe.exe可执行文件,还有其他一些依赖文件,caffe.exe是用来进行网络训练的。

2.打开matcaffe文件夹,进入+caffe,再进入private,如果成功生成了caffe_mexw64文件,说明matlab接口配置成功了。
3.打开MATLAB,设置路径,将caffe-master\Build\x64\Debug\matcaffe加进去
4.(path):路径深度到Release目录为止,比如,我这里是D:\caffe\caffe-master\Build\x64\Debug
5.保存后,重启matlab,不然测试时会报找不到caffe_mexw64模块的错误。
在控制台输入一个函数作为测试:caffe.reset_all();

二、caffe编译Caffe微软官方GitHub

下载地址:https://github.com/Microsoft/caffe

caffemaster是更容易编译的,官方的很难弄

通过GitHub管理项目非常方便,可以自己通过VS团队资源管理器进行链接代码,牛人修改里面的东西也可以提交上去。当时我这里是直接下载caffe-master.zip的包的方式,然后直接解压出来,可以看到里面有28个文件,共包含16个项目:

(二)项目编译前的步骤:

(1)设置配置文件

在 .\caffe-mastter\windows路径下新建一个文本文档,重命名为CommonSettings.props ,并复制.\windows\CommonSettings.props.example 文件中的内容到 .\windows\CommonSettings.props。默认情况下windows编译需要CUDA和cuDNN,当然你也可以在配置文档(.\windows\CommonSettings.props)中去修改为不用,直接将为true的配置设置为false即可。但是python默认情况下是不能使用的,我这里需要用python进行caffe学习,所以就设置为true了。其他三方的库,VS编译时会通过NuGet进行自动获取,非常方便!

为了便于在训练模型时减少输出信息,建议去\caffe-master\caffe-master\src\caffe\layers\data_layer.cpp文件,将如下打印信息的代码用"//"注释掉:

DLOG(INFO) << "Prefetch batch: " << batch_timer.MilliSeconds() << " ms.";

DLOG(INFO) << "     Read time: " << read_time / 1000 << " ms.";

DLOG(INFO) << "Transform time: " << trans_time / 1000 << " ms.";

(2)下载相关软件

CUDA

下载 CUDA Toolkit 8.0 (https://developer.nvidia.com/cuda-toolkit)。如果你电脑没有NVIDIA的独立显卡,那么只能选择用CPU进行编译,就不需要安装CUDA,去配置文件 .\windows\CommonSettings.props 设置<CpuOnlyBuild>false</CpuOnlyBuild> ,同时设置 <UseCuDNN>false</UseCuDNN>

cuDNN

下载 cuDNN v4 或者 cuDNN v5 (https://developer.nvidia.com/cudnn)。 解压下载的文件到 %CUDA_PATH% (这个路径是CUDA安装时默认设置的一个环境变量路径,通过【系统】-》【高级设置】-》【环境变量】就可以找到)。当然如果你没下载CUDA,也可以直接设置<UseCuDNN>false</UseCuDNN>

Python(建议安装anaconda,因为anaconda自带很多包,caffe_master与2.0版本兼容最好,所以建议安装python2或anaconda2版本)

为了能使用python调用Caffe,需要在 .\windows\CommonSettings.props中设置<PythonSupport>true</PythonSupport>。如果本机没安装python,可以下载Miniconda 2.7 64-bit Windows installer,从官方网址:http://conda.pydata.org/miniconda.html选择下载,默认配置路径安装即可。同时需要以管理员权限安装numpy、scipy、matplotlib、scikit-image、protobuf包,安装命令如下:

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

注意:

(1)在你编译通过后,需要将编译好的 <caffe_root>\Build\x64\Release\pycaffe\caffe文件复制到python的 <python_root>\lib\site-packages文件夹下面,这样python中才能引用到caffe,不然会报错。

(2)如果要用GPU计算,需要设置<CudaArchitecture>,我以前显卡是650所以只能设置低运行速度的:compute_30 和sm_30(这个根据你自己的显卡计算能力确定, 注意CUDA7.5已经不支持计算能力小于30的显卡了),后来我换成GTX1080,采用compute_52 和sm_52,具体需求见下表:

GPU Computer Capability
GTX660, 680, 760, 770 compute_30,sm_30
GTX780, Titan Z, Titan Black, K20, K40 compute_35,sm_35
GTX960, 970, 980, Titan X compute_52,sm_52

根据需要,我的配置如下图:

(三)项目编译

用VS2013,在caffe-master\windows目录下打开caffe.sln,进去后如下图(共16个项目):

其中capthaTest是我测试caffe进行验证码识别的python项目。编译时可以直接右键【解决方案caffe】进行生成,当然这会报很多错误,都是些资源文件引用问题,通过一个个项目单独编译都可以很快解决。因为我这里只用到其中几个项目,所以我编译的顺序是:

libcafffe->caffe->pycaffe->convert_imageset,每个项目编译前都需要设置相应的引用路径,这里有两种路径,include路径和libs路径,详细怎么添加见下面。

(1)libcaffe在编译前先设置资源引用路径,点击项目右键-》属性-》配置属性-》c/c++,【附加包含目录中】中加入python的include路径,我这是D:\Python27\include,如下图:

(2)caffe在编译前先设置资源引用路径,点击项目右键-》属性-》配置属性-》c/c++,【附加包含目录中】加入python的include路径,我这是D:\Python27\include,同时,在链接器中的【附加库目录】中加入python的libs路径,我这里是D:\Python27\libs,如果显卡安装不是默认路径也相应把C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include和libs加入到里面,如下图

(3)pycaffe在编译前先设置资源引用路径,点击项目右键-》属性-》配置属性-》c/c++,【附加包含目录中】加入python的include路径和numpy的include路径,我这里分别是D:\Python27\include和D:\Python27\Lib\site-packages\numpy\core\include,同时,在链接器中的【附加库目录】中加入python的libs路径和numpy的libs路径,我这里分别是D:\Python27\libs和D:\Python27\Lib\site-packages\numpy\core\lib,如下图:

 

如果这个编译时出现:

error LNK2001: 无法解析的外部符号 __imp_PyString_FromString
error LNK2001: 无法解析的外部符号 __imp_PyCallable_Check

error LNK2001: 无法解析的外部符号 __imp_PyObject_CallObject
error LNK2001: 无法解析的外部符号 __imp_Py_Initialize

error LNK2001: 无法解析的外部符号 __imp_Py_IsInitialized

error LNK2001: 无法解析的外部符号 __imp_PyImport_Import

error LNK2001: 无法解析的外部符号 __imp_PyModule_GetDict

error LNK2001: 无法解析的外部符号 __imp_PyDict_GetItemString

error LNK2001: 无法解析的外部符号 __imp_PyRun_SimpleStringFlags

error LNK2001: 无法解析的外部符号 __imp_Py_Finalize

等无法解析外部符号等问题,说明C++编译器在调用python.exe时出错了,我遇到这个坑,解决了很久,具体原因我也不清楚,猜测是因为编码问题导致的,因为我下载的python有问题,而我同事的没问题,最终我把他所有的python文件拷贝覆盖我这里的,最终才算ok!

如果有出现error C2220: warning treated as error - no object file generated 这样的错误,右击项目,属性,在C/C++那里把treat warning as error设为no,再重新编译一次,就完成编译了。

如果用C编写Python扩展找不到Python27_d.lib,这是一个python版本问题,网友给的两种解决方案

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

方法二:

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

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

(4)其他项目我想应该也是这种添加模式,应该问题不大

 (四)编译完成后检查

如果编译成功了,会在caffe-master同路径下生成NugetPackages文件夹,同时在caffe-master文件夹下生成Build文件夹

(1)NugetPackages里面内容

一个都不能少,如果少了的话,可能是nuget通信问题,多编译几次就下载完了。

 (2)Build文件夹下的内容,一定有caffe.exe文件,不然说明没编译成功

(3)编译成功后,将caffe-master\caffe-master\Build\x64\Debug\pycaffe路径下的caffe文件夹拷贝到python的site-packages下面(也可设置PYTHONPATH指向caffe文件夹),然后用python测试能不能正常import caffe,如果没报错说明一切OK。我这里引用时遇到一个问题AttributeError: 'module' object has no attribute 'bool_',追踪错误堆栈发现如下:

 原来是import io出了问题,caffe文件夹里面也有一个io.py,而系统要求的是numpy里面的io.py,所以没有bool_这个模块,解决办法:

1、不要在caffe目录下打开python.exe,或者你一定要在此目录打开,那么请把caffe文件夹移出site-packages路径,并配置环境变量,变量名=PYTHONPATH,值=caffe包的路径

2、如果在VS2013项目里面,请删除References下面的_caffe.pyd引用,如下图:

猜你喜欢

转载自blog.csdn.net/yxswhy/article/details/82690400
今日推荐