刚刚进入深度学习的这个坑,听说深度学习都用caffe这个框架,就马不停蹄的去搭建caffe框架,结果搞了一个星期,在win7上配置的道路一波三折,在此,特写本次博客让后面进坑的朋友少走点弯路,造福社会!!本文在windows下使用visual studio2013配置关联python的caffe项目,看了很多很多教程,按照教程上面走还是各种错,所以索性就去了Microsoft的Github上面,按照他的流程来走,因为是英文的,但是还是能勉强读懂。Microsoft官网配置caffe的教程是这这个:https://github.com/Microsoft/caffe/blob/master/README.md
首先让大家看看我的笔记本配置,很渣很渣,所以没法用gpu,只能勉强的用意cpu。
(二)设置配置文件
在 .\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 pip
pip install protobuf
注意:
(1)在你编译通过后,需要将编译好的 <caffe_root>\Build\x64\Release\pycaffe\caffe文件复制到python的
<python_root>\lib\site-packages文件夹下面,这样python中才能引用到caffe,不然会报错。
(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(深度学习语音识别方向
)欢迎你的到来哦,看了博文给点脚印呗,谢谢啦~~