(最新教程)基于Windows7+visual Studio2013+Python2.7.12环境下的Caffe配置学习

来源:互联网 发布:centos搭建网站 编辑:程序博客网 时间:2024/05/16 00:27

刚刚进入深度学习的这个坑,听说深度学习都用caffe这个框架,就马不停蹄的去搭建caffe框架,结果搞了一个星期,在win7上配置的道路一波三折,在此,特写本次博客让后面进坑的朋友少走点弯路,造福社会!!本文在windows下使用visual studio2013配置关联python的caffe项目,看了很多很多教程,按照教程上面走还是各种错,所以索性就去了Microsoft的Github上面,按照他的流程来走,因为是英文的,但是还是能勉强读懂。Microsoft官网配置caffe的教程是这这个:https://github.com/Microsoft/caffe/blob/master/README.md

首先让大家看看我的笔记本配置,很渣很渣,所以没法用gpu,只能勉强的用意cpu。


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

(二)设置配置文件

在 .\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进行自动获取,非常方便!

(三)下载Python:

为了能使用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 pippip install protobuf

注意:

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

(2)如果要用GPU计算,需要设置<CudaArchitecture>,我显卡是520所以只能设置低运行速度的:compute_30 和sm_30(这个根据你自己的显卡计算能力确定, 注意CUDA7.5已经不支持计算能力小于30的显卡了)

 (3)配置python安装命令的时候,一定要记得是用管理员身份运行,否则会出现很多不必要的错误情况。

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

(四)项目编译:

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


编译的顺序是:

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,如下图:

 

(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,如下图:

 


然后编译,出现了很多不同的错误,下面我列举下:

(1)

如果这个编译时出现:

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

解决的办法,更改编码


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

(3)找不到Python27_d.lib,这是一个python版本问题,建议去文章的前面看看Microsoft是怎么配置python的

(4)报错“error C2220: 警告被视为错误 - 没有生成“object”文件”,解决方法是用vs2013打开这里报错的cpp,然后点击保存即可。

(5)解决方案的16个项目中libcaffe和test_all没有加载成功。不过不影响,先把编译器切换到Release x64.然后点击本地windows调试器,nuget会先下载安装需要的一些库文件,下载完后后继续编译操作,中间可能会出现一些报错 
在解决方案后中右击每一个项目,属性->C/C++,把“警告等级”调整为等级3,把“将警告视为错误”改成否。

(6)

设置一下运行项,解决方案'caffe'->属性


或者下面直接单启动项目是caffe也行,不过最好改一下,原因相信玩过VS的都清楚,如果是单启动项目,那么在你重新编译工程的时候,只会运行次单启动项目,其它项目不会运行,这就是为什么很多人编译以后发现Release或者Debug文件夹下只有caffe.exe而没有conver_imageset.exe等可执行文件的原因。

(7)libcaffe库有问题,不识别什么的,解决办法,重新生成就可了

 (五)编译完成后检查

如果编译成功了,会在caffe-master同路径下生成NugetPackages文件夹,同时在caffe-master文件夹下生成Build文件夹,在编译生成NugetPackages的文件夹的时候,我是开了VPn生成的,如果不开VPN,貌似时间比较久,几个小时吧。至于其中原因,听说NugetPackages这个被墙了,当然我也只是听说,具体的不清楚

(1)NugetPackages里面内容

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

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

(3)编译成功后的界面是这样的



不懂的可以加我的QQ群: 522869126(深度学习语音识别方向 


欢迎你的到来哦,看了博文给点脚印呗,谢谢啦~~

0 0
原创粉丝点击