您的位置:首页 > 编程语言 > Python开发

Win10系统环境下caffe的Python接口Anaconda2配置

2017-10-19 14:08 676 查看
继之前配置好基础的Windows版caffe之后,成功用cmd运行。然而之后遇到搭建自定义网络的需求,于是打算采用Python写个make_net的程序,这就需要给caffe安上Pycaffe以支持import caffe的需求。

在查询了大把博客教程后,慢慢整合,摸索出了安装的过程。

本文大部分教程参考marso老师的http://www.cnblogs.com/marso/p/caffe_win10_python.html

也可根据链接内容实现纯Python2.7版配置。下面开始教程内容。

一、配置准备

1、完成教程http://blog.csdn.net/maltliquor/article/details/78261339到4.6步,即后面的编译libcaffe暂时不进行。

2、安装Python2.7

3、安装Anaconda2 (链接: https://pan.baidu.com/s/1bOQGH4 密码: xhek),添加中科大镜像http://blog.csdn.net/jclose10/article/details/77370471,安装相关包:conda install –yes numpy scipy matplotlib scikit-image pip python

4、修改CommonSettings.props,修改结果如图所示,注意PythonDir要写自己安装Anaconda的目录,最后的斜杠别忘了写





二、编译libcaffe、caffe及pycaffe

1、打开caffe-master\windows\Caffe.sln 对libcaffe和caffe项目做如下设置:项目→属性→C/C++→常规→将警告视为错误 设置为否如果不设置的话在编译boost库的时候会由于文字编码的警告而报错,(把“警告等级”调整为等级3),这一步很重要,而且每个项目都要在属性设置一次。

2、选择编译环境为Release,x64(其他环境同理)。



3、在libcaffe项目点击右键->生成,然后等待生成



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



同时,在链接器中的【附加库目录】中加入python的libs路径,我这里是D:\Python27\libs,然后加入D:\Anaconda2\pkgs\python-2.7.13-1\libs,如果显卡安装不是默认路径也相应把C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include和lib加入到里面,如下图:



5、在caffe项目点击右键-> 设置为启动项目->生成,然后等待生成



6、pycaffe在编译前先设置资源引用路径,点击pycaffe项目右键-> 属性-> 配置属性-> c/c++,【附加包含目录中】加入python的include路径和numpy的include路径,我这里分别是D:\Python27\include和D:\Anaconda2\Lib\site-packages\numpy\core\include



7、点击pycaffe项目右键-> 属性-> 配置属性-> 链接器中的【附加库目录】中加入python的libs路径和numpy的libs路径,我这里分别是D:\Python27\libs和D:\Anaconda2\Lib\site-packages\numpy\core\lib,然后加入D:\Anaconda2\pkgs\python-2.7.13-1\libs,如下图:



8、在pycaffe项目点击右键-> 设置为启动项目->生成,然后等待生成完成

如果这个编译时出现:

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注释掉http://blog.csdn.net/qq_38319794/article/details/77982664

三、编译完成后检查

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

1、NugetPackages里面内容



2、同时在caffe-master文件夹下生成Build文件夹,打开\caffe-master\Build\x64\Release,注意红圈的几个文件一定要有。



3、编译成功后,将caffe-master\caffe-master\Build\x64\Release\pycaffe路径下的caffe文件夹拷贝到D:\Anaconda2\Lib\site-packages



4、测试python接口,在cmd中进入Python,试试能不能导入caffe,出现如图所示则正常。



这个教程的本质就是编译出整个caffe文件夹,加好所有东西,然后放到site-package下面作为一个包来使用来使用。

P.S. 又发现一个好教程,从编译pycaffe开始与本文不太一样,有兴趣的同学可以从pycaffe那一步开始照着这个教程安装,也写得非常简明易懂哦。链接:http://blog.csdn.net/yiyisunshine/article/details/55194465
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: