xqspace
0. 摘要
本文主要完成以下几点:
-
caffe默认支持是 vs2013/vs2015 + python2.7/python3.5,使用其他版本会比较麻烦,这里使用的是vs2015和python3.5;
-
完成caffe在windows上的编译(cpu版);
-
提供caffe的python接口;
-
caffe的基本使用方法(这里是推荐几篇讲的比较详细的入门博文);
-
调试运行caffe的解决方案;
-
解决上面几个过程中遇到的error:
-
The C compiler "xxxx/cl.exe" is not able to complile a simple test program.
-
找不到python35.dll
-
1. 工具
请先完成以下工具安装:
-
vs2015
-
Ananconda3
-
CMake 3.4及以上
如果上述工具有未安装的,请先自行安装,这里也提供可参考的博客:
- vs2015:https://www.cnblogs.com/xqspace/p/18339484- Ananconda3:https://blog.csdn.net/fan18317517352/article/details/123035625- CMake:https://blog.csdn.net/u011231598/article/details/80338941
2. caffe在windows上的编译(cpu版)
2.1 代码下载
caffe代码地址:https://github.com/BVLC/caffe/tree/master
-
方式一:下载压缩包(先选择windows分支,然后下载压缩包到本地解压)
-
方式二:使用git下载:
git clone https://github.com/BVLC/caffe.git cd caffe git checkout windows
2.2 配置python环境
2.2.1 打开命令提示符cmd,创建一个python版本为3.5的环境,环境名为caffe_env:conda create -n caffe_env python=3.5
2.2.2 进入这个环境:conda activate caffe_env
2.2.3 然后配置README.md中提到的依赖库:
-
先依次执行:
conda config --add channels conda-forge conda config --add channels willyd
-
随后使用pip而不是conda来安装依赖库(conda可能会出现内存不足的报错),依次执行以下命令:
pip install cmake pip install ninja pip install numpy pip install scipy pip install protobuf==3.1.0 pip install six pip install scikit-image pip install pyyaml pip install pydotplus
在一开始利用pip安装时,可能会因为pip的版本过低而报错,按照报错的指示先升级一下pip的版本即可,然后再安装依赖库。可以通过命令:conda list 来查看已安装的依赖库。
2.3 下载依赖库和配置
-
依赖库地址:https://github.com/willyd/caffe-builder/releases/tag/v1.1.0,
这里用的是vs2015和python3.5,所以要下载 libraries_v140_x64_py35_1.1.0.tar.bz2 -
将这个压缩包解压,放到C:\Users\xxxxxxxx\.caffe\dependencies文件夹下,这里是默认的地址
-
既然已经下载了依赖库,就要将代码里的下载代码注释掉,需要注释掉 caffe项目目录\cmake\WindowsDownloadPrebuiltDependencies.cmake中的部分代码,如下图所示:
2.4 编译
-
打开 caffe项目目录\scripts\build_win.cmd文件进行修改:
WITH_NINJA=0, PYTHON_VERSION=3,CPU_ONLY=1,以及设置CONDA_ROOT=你的Anaconda3的路径\envs\caffe_env
-
然后将cmake -G"!CMAKE_GENERATOR!"改为cmake -G"Visual Studio 14 2015 Win64",否则编译时就会出现报错:The C compiler "xxxx/cl.exe" is not able to complile a simple test program. 这里可能时因为cmake不是默认使用msvc进行编译,需要显示指定。(如果不修改的话,后面的问题一个接一个...)
-
切换cmd的路径到caffe项目目录:执行scripts\build_win.cmd 等待完成
-
编译完成后打开 caffe项目目录\build\Caffe.sln
然后点击 生成-->生成解决方案 等待编译完成会生成caffe相关库以及caffe.exe
至此caffe的编译工作完成!撒花~
3. 提供caffe的python接口
-
上面编译完成后,将 caffe项目目录\python\caffe 文件夹拷贝到 anaconda的caffe_env的Lib\site-packages中:
-
重新打开cmd进入caffe_env,输入python,然后import caffe:
如果import caffe失败的话,可以重启一下电脑。
4. caffe的基本使用方法
caffe项目目录\example文件夹下已经提供了一些经典案例,这里是推荐几篇讲的比较详细的caffe基本使用的博文:
- 使用caffe.exe文件直接进行训练和测试:https://www.cnblogs.com/xiaoboge/p/10688926.html (使用的是mnist的例子,对应路径在caffe项目目录\example文件夹下)
- 用python写一个caffe网络:https://cloud.tencent.com/developer/article/1670397 (要在caffe_env环境中)
5. 调试运行caffe的解决方案
-
在Caffe.sln,右击 caffe.bin -->设为启动项
-
右击 caffe.bin--> 属性 -->常规 -->命令参数 输入调试参数
-
一开始运行时可能会报错,找不到python35.dll,将caffe_env文件夹的python35.dll复制到C:\Windows\System32中可解决。