Win7下安装和编译caffe2,所需主要原材料:
系统:win7
vs版本:vs2015
cuda版本:8.0
cudnn版本:cudnn6.0
caffe版本:caffe2
python版本:python2.7
下面进入干货阶段(假设vs2015,cuda和cudnn,python均已经安装成功):
(1)下载python依赖
这一步建议事先要在已经安装pip的前提下进行,具体pip如何安装请自行百度:
pip install future ^ hypothesis ^ numpy ^ protobuf ^ six
pip install flask ^ glog ^ graphviz ^ jupyter ^ matplotlib ^ pydot python-nvd3 ^ pyyaml ^ requests ^ scikit-image ^ scipy ^ setuptools ^ tornado
(2)编译源码
这一步建议一定要通过git的方式进行下载,会下载很多依赖库,如何直接在github下载的话会有很多缺少的东西:
git clone --recursive https://github.com/caffe2/caffe2.git
(3)运行build_host_protoc.bat
用记事本打开CAFFE2_ROOT/scripts/build_host_protoc.bat在文件首的 @echo off之下添加一行 set CMAKE_GENERATOR=“Visual Studio 14 2015 Win64”之后就可以执行 build_host_protoc.bat,成功之后会出现提示信息: “protobuf built successfully”在CAFFE2_ROOT目录下会出现 build_host_protoc 文件夹。如果已经将vs2015进行安装并添加到环境变量的话,其实该修改不用添加,因为它可以找的到vs14.
(4)修改 build_windows.bat 并执行
用记事本打开CAFFE2_ROOT/scripts/build_windows.bat在文件首的 @echo off之下添加 set CMAKE_GENERATOR=“Visual Studio 14 2015 Win64” set USE_CUDA=ON (如果只是使用CPU,不使用GPU,那么这行就不要添加)将 -DBUILD_PYTHON=OFF^ 改为 -DBUILD_PYTHON=ON^之后就可以执行 build_windows.bat,成功之后会出现提示信息: “Caffe2 built successfully”在CAFFE2_ROOT目录下会出现 build文件夹。
注意,在此步属于整个编译成功的关键,此步会创建build目录,并生成相应.sln文件,但是会出现编译错误:
a.流程:先将caffe2单独编译成功,再整个工程选择build来编译其他工程。
b.出现无法打开文件Eigen/core。 打开build文件夹下生成的caffe2.sln工程,在相应工程属性中include进D:\work\Caffe2\caffe2\third_party\eigen目录即找到。
c.出现pow函数的错误。将softmax_focal_loss_op.cu中第81行的pow函数变为pow((float)(1.0 - Pdata[idx]), (float)gamma)即可
d.出现cudnn或cuda错误。将cuda和cudnn的链接库相应的include加载到对应的工程中
e.出现cannot open file ‘python27.lib’。将python27.lib对应的库libs路径加载到对应工程中,比如:D:\soft\python\Anoconda2-4.3.1\libs (如果有安装Anoconda,就加载对应的其中libs路径)
f.在编译工程caffe2_detectron_ops_gpu时,把前面生成的caffe2.lib链接到工程中,即在附加依赖项中添加..\..\lib\Release\caffe2.lib,不然会出现找不到很多关于caffe2的链接错误。
编译成功后,会生成caffe2.lib、caffe2_gpu.lib、caffe2_detectron_ops_gpu.lib等库,本人生成了39个库。
(5)配置python路径
将 CAFFE2_ROOT\build\caffe2\python\Release 下的 caffe2_pybind11_state.pyd 和 caffe2_pybind11_state_gpu.pyd 拷贝到 D:\soft\python\Anoconda2-4.3.1\DLLs路径下。
配置环境变量: PYTHONPATH = CAFFE2_ROOT\build 。如果下载路径为: D:\DeepLearning\caffe2, 则将该路径记为 CAFFE2_ROOT, 只是为了下文描述方便。build为步骤(4)中生成的路径。
(6)配验证测试caffe2
在任意目录新建 test.py,代码如下
import numpy as np
import os
import shutil
from caffe2.python import core, cnn, net_drawer, workspace, visualize
core.GlobalInit(['caffe2', '--caffe2_log_level=0'])
caffe2_root = "~/caffe2"
print("Necessities imported!")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
成功则出现如下信息:
Caffe2 build configuration:
BLAS : Eigen
BUILD_TYPE : Release
CXX_FLAGS : /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MP /bigobj
FORCE_FALLBACK_CUDA_MPI :
GIT_VERSION :
HAS_MKL_DNN :
HAS_MKL_SGEMM_PACK :
PERF_WITH_AVX :
PERF_WITH_AVX2 :
UNIQUE_LONG_TYPEMETA : 1
USE_ACCELERATE :
USE_ATEN : OFF
USE_CUDA : ON
USE_EIGEN_FOR_BLAS : 1
USE_GFLAGS : OFF
USE_GLOG : OFF
USE_GLOO :
USE_LITE_PROTO :
USE_MKL :
USE_MPI : OFF
USE_NCCL : OFF
USE_NNPACK : OFF
USE_NVTX :
USE_OPENMP : OFF
Necessities imported!
</div>