捣腾了一晚上的caffe。。环境配置什么的,真的是很容易上头。
以下为踩坑过程。
【如果你的VS是2017版本,请直接看下一部分】
在下载好的文件中 Copy .\windows\CommonSettings.props.example
to .\windows\CommonSettings.props
打开该配置文件,按自己的电脑情况对GPU支持,CuDNN及Python支持进行配置。由于我的破本本没有独显,所以只能用CPU了。。
1 | <CpuOnlyBuild>true</CpuOnlyBuild> |
使用VS打开sln 文件,我的是VS2017版本而官网要求的是13或15版本,暂时不知后面将会遇到什么 问题。。
对项目的错误检查做一下设置,VS的报错有多烦人。。用过的都知道。。libcaffe项目→属性→C/C++→常规→将警告视为错误 设置为否。如果不设置的话在编译boost库的时候会由于文字编码的警告而报错。选择编译环境为Release,x64
在libcaffe上右键生成,进行编译。有点小激动,究竟能不能成功呢?。。
有惊无险 ,虽然全程都在 Unknown compiler version - please run the configure tests and report the results
接着再编译caffe,果然真正的快乐是无法持续的。。
报错:fatal error LNK1104: 无法打开文件“libboost_date_time-vc140-mt-gd-1_59.lib
应该是VS版本的问题了。
搜索了一圈解决方案,都是要改 build_win.cmd 文件的,而这个windows版本并没有这个文件,正如一开始说,必须使用 VS2013或VS2015
而我,是绝对不想再重新安装一个VS的,别问我为什么。。所以只能,重新来过。。
找到另一个windows可用的版本,源码地址
安装Cmake 教程
比较重要的是Python的配置,miniconda相关操作
在安装了miniconda之后,以管理员方式运行cmd
1 | conda install --yes numpy scipy matplotlib scikit-image pip |
在第二条命令时,遇到一大串红字。
1 | Traceback (most recent call last): |
pip show pip setuptools
查看pip版本是19.3.1 setuptools 是41.4.0
我怀疑是pip调用路径的问题,于是在用户环境变量中删除了本来安装的python3.5的路径
C:\Users\18771\AppData\Local\Programs\Python\Python35\Scripts\
C:\Users\18771\AppData\Local\Programs\Python\Python35\
重启一下,然后换用conda install protobuf
命令,安装成功。
但是,为了少点坑,看了别人的博客写的,又多装了几个包 conda install --yes six pyyaml pydotplus graphviz
用VS打开sln, 重定解决方案为v141
接下来跟第一部分的操作一样,先不抱任何指望地编译libcaffe。。。
果然报错 :无法打开包括文件: “pyconfig.h”: No such file or directory (编译源文件 ....\src\caffe\layer_factory.cpp)
打开CommonSettings.props将 D:\Anaconda3\ 改为自己的python路径 C:\ProgramData\Miniconda2
编译成功。
再不抱任何指望地编译caffe。。。成功一个,失败一个
报错:fatal error LNK1181: 无法打开输入文件“cufft.lib”
打开 CommonSettings.props 将<CudaDependencies>cufft.lib</CudaDependencies>
改成 <CudaDependencies></CudaDependencies>
再次尝试,报错 LINK : fatal error LNK1104: 无法打开文件“libboost_python-vc141-mt-1_65_1.lib”
这应该是VS版本的问题了,vc141就是2017的,
把 thirdparty\Boost\lib64-msvc-14.0 中所有的140改成141 试一下,caffe 可以编译了。
然后右键重新生成解决方案,开始全部编译。
终于
========== 全部重新生成: 成功 16 个,失败 0 个,跳过 0 个 ==========
所有编译成功和运行需要的dll文件都会存储在Build\x64\Release 下
激动哭了。。
验证编译结果。尝试在python中调用
打开anaconda的命令行,进入caffe的examples目录,运行jupyter notebook
在打开的notebook中打开caffe自带的例子 00-calssification.ipynb 运行后
报错:ModuleNotFoundError: No module named ‘caffe._caffe’
根据源码中readme提示操作
- set
PythonPath
environment variable to point to<caffe_root>\Build\x64\Release\pycaffe
, or - copy folder
<caffe_root>\Build\x64\Release\pycaffe\caffe
under<python_root>\lib\site-packages
.
我选择了第二种,copy到了C:\Users\18771\Anaconda3\Lib\site-packages
中
重新运行,还是不行。突然意识到是不是python版本不一样,因为编译用的是miniconda用的是2.7,而anaconda默认的是3.7
于是copy到了C:\ProgramData\Miniconda2\Lib\site-packages
中(顺带在caffe27的虚拟环境中也copy了一份..),直接命令行运行python,import caffe
由于我比较喜欢在虚拟环境中跑程序,于是再尝试在caffe27的虚拟环境下运行,先安装numpy、 scikit-image 、protobuf包,再进入python命令行,输入import caffe
, 同样运行成功。
环境配置,总算告一段落了。。