如果要安装pycaffe,那么首先要明白,最好用anaconda2+python2配置,如果安装的是anaconda3,那么也要新建一个python2的环境。
这篇教程的前提是假设已经安装好了vs2013,cuda7.5,cudnn V4版(其他版本的cuda和cudnn类似,注意后边修改处就行)Anaconda3。
第一步:
在Anaconda3中建立一个python27的环境:在开始菜单中找到Anaconda3-Anaconda Prompt,打开Anaconda Prompt,输入以下命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
conda config --remove channels defaults
#从清华镜像加载,不然总是从官网下载超市。
然后开始新建环境命令:conda create -n caffe_python27 python=2.7
此处我新建的环境名称为caffe_python27,打开Anaconda3在Environments中就可以看到新建的python27的环境了
在该环境中安装好下列依赖库:
第二步:
下载caffe: https://github.com/Microsoft/caffe
或者百度网盘下载:https://pan.baidu.com/s/1PH9QMu5roHFahQxM09Nalg 提取码:qa0v
第三方库下载(Nuget包),百度网盘链接:https://pan.baidu.com/s/1l9MiWXt_xLKhkdCpYf8XYg 提取码:x0sk
第三步:
软件下载完后,解压 caffe-master.zip 和 NugetPackages.rar,将NugetPackages放在与caffe-master并列文件夹中。
进入caffe-master文件夹,找到windows文件目录,在windows文件夹下复制CommonSettings.props.example文件,重命名为CommonSettings.props文件:
修改CommonSettings.prop文件内容:
第四步:编译
打开caffe-master/windows/Caffe.sln,设置为x64 release(debug也可以,两种模式都可以编译)
首先单击工程下每个项目,右键进入属性,将“警告视为错误”值改为“否”
首先开始编译libcaffe,右击libcaffe->仅用于该项目->仅生成libcaffe即可,编译成功后,得到的库会在caffe-mastermy目录内的build目录内找到
然后右键解决方案属性:
将单启动改为当前选定
这样就可以开始单独编译其他项目了
接着编译caffe项目
直接双击caffe.cpp文件,然后ctrl+F5直接编译,出现如下命令窗口说明编译成功。
然后,接着编译其他项目,直接右键要编译的项目->仅用于此项目->仅(重新)生成***项目即可。
第五步:dubug模式和release类似。测试python版caffe
将 .\Build\x64\Release\pycaffe\caffe 这个文件夹复制到Anaconda3新建的python2.7环境安装目录\Lib\site-packages\ 这个文件夹中,如果的是:D:\software\Anaconda5.1_for_python_3.5\Anaconda_\envs\caffe_python27\Lib\site-packages
测试:打开Anaconda Prompt命令窗口,进入新建的caffe_python27环境输入python命令,开始编写python脚本
>>>import caffe
如果能import成功,则说明windows下编译的python版caffe能用了。
可能会出现的一些错误及解决方法:
1:错误提示找不到文件python27.lib
解决办法:将新建的环境python2.7版本中的python27.lib添加进项目的附加依赖项中
例如我的python27.lib在我Anaconda3环境中,
D:\software\Anaconda5.1_for_python_3.5\Anaconda_\envs\caffe_python27\libs\python27.lib
2:编译pycaffe时候,出现缺少Python27_d.lib
解决办法:
需要修改三处地方:
第一处修改地方:
找到Anaconda3新建python2环境中include目录,修改object.h文件
如我的目录为:
修改:
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
#define Py_TRACE_REFS
#endif
为:
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
//#define Py_TRACE_REFS
#endif
第二处修改地方:
还是在同级include目录下,修改pycongfig.h文件
修改:
ifdef _DEBUG
# pragma comment(lib,"python27_d.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */
为:
ifdef _DEBUG
# pragma comment(lib,"python27.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */
第三处修改地方:还是修改刚才的pycongfig.h文件
修改:
#ifdef _DEBUG
# define Py_DEBUG
#endif
为:
#ifdef _DEBUG
//# define Py_DEBUG
#endif
即可。
再重新编译pycaffe项目即可。