【Caffe2】Windows7下caffe2编译配置全记录(GPU版)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/signal926/article/details/80236445

caffe2跟老版caffe相比变化较大,更容易上手和使用。但caffe2的windows版配置比linux下要麻烦一些、且更容易出错,把全过程记录下,以供参考。


1. 准备工作

准备工作与Caffe和TF等框架类似,大部分人可以选择性跳过~

(1)安装CUDA、cuDNN

【CUDA下载地址】https://developer.nvidia.com/cuda-downloads
【cuDNN下载地址】https://developer.nvidia.com/cudnn
本文采用的是CUDA8.0+cuDNN7,把cuDNN的lib和include下文件分别复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0下的对应文件夹。

(2)安装Python

caffe2支持Python 2.7.6 - Python 2.7.14。
推荐Anaconda安装,一步到位:
【Anaconda下载地址】https://www.anaconda.com/download/#windows

(3)安装Visual Studio

本文采用的是Visual Studio 2015,VS2017也可以。
【Visual Studio 下载地址】https://www.visualstudio.com/zh-hans/downloads/

(4)安装Cmake

【Cmake下载地址】https://cmake.org/download/

(5)安装依赖库

添加python路径到环境变量中,如 C:\Python27 和 C:\Python27\scripts

安装必需的python依赖:

pip install future ^
            hypothesis ^
            numpy ^
            protobuf ^
            six

非必选的python依赖,用于运行caffe2自带的tutorials:

pip install flask ^
            glog ^
            graphviz ^
            jupyter ^
            matplotlib ^
            pydot python-nvd3 ^
            pyyaml ^
            requests ^
            scikit-image ^
            scipy ^
            setuptools ^
            tornado

2. 编译Caffe2

(1)获取源码

https://github.com/caffe2/caffe2.git

(2)构建sln工程

  • 首先运行 ‘\scripts\build_host_protoc.bat’,生成build_host_protoc文件夹和protobuf.sln工程,用于编译;
  • 然后运行 ‘\scripts\build_windows.bat’ ,对相关配置进行修改,这一步可能会报错,可以采用Cmake GUI进行直观的配置。由于Win版的部分可选软件包(gflags、glog、leveldb)需要从源码构建,而大部分训练和测试过程都在linux下完成,windows下主要进行模型部署,所以gflags、glog、leveldb并非必须,以下过程跳过这几个库
  • build_windows.bat中的最简配置如下:
cmake .. ^
  -G%CMAKE_GENERATOR% ^
  -DBUILD_TEST=OFF ^
  -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
  -DUSE_CUDA=ON ^
  -DUSE_NNPACK=OFF ^
  -DUSE_CUB=OFF ^
  -DUSE_GLOG=OFF ^
  -DUSE_GFLAGS=OFF ^
  -DUSE_LMDB=OFF ^
  -DUSE_LEVELDB=OFF ^
  -DUSE_ROCKSDB=OFF ^
  -DUSE_OPENCV=ON ^
  -DBUILD_SHARED_LIBS=OFF ^
  -DBUILD_PYTHON=OFF^
  • Cmake GUI中配置好路径,点击Configure + Generate。如果Cmake提示第三方库NOT FOUND,可以在Cmake里对各个第三方库的DIR地址进行手动配置,大多位于caffe2\third_party文件夹中。
  • 成功之后会生成build文件夹和Caffe2.sln工程。

(3)编译protobuf库

打开protobuf.sln,编译成功后生成以下文件:

libprotobuf.lib
libprotobuf-lite.lib
libprotoc.lib
protoc.exe
js_embed.exe

(4)编译Caffe2源码

打开Caffe2.sln,进行编译。

【常见问题】

在Caffe2.sln的编译中,可能会遇到以下几个问题:

  • 错误C1083: cub/util_allocator.cuh : No such file or directory
    这里写图片描述
    解决方法:
    在项目属性->VC++目录->包含目录中添加:$你的地址\caffe2\third_party\cub
  • 错误C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型
    这里写图片描述
    解决方法:
    项目属性->配置属性->C/C++->SDL检查,改成否

  • 链接类错误:error LNK2001 …cuda…
    一般是没有找到cuda对应的lib,在项目属性->链接器->输入中添加:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cuda.lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\curand.lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cublas.lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cublas_device.lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cudnn.lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\nvrtc.lib

3.测试Caffe2

打开caffe2\build\bin\Release文件夹,已经生成了所有binary文件夹下对应的exe。
运行其中的样例exe,可以看到此时的caffe2配置:
这里写图片描述
运行predictor_verifier.exe等样例时,记得把glog和gflag相关代码注释掉,再运行测试。

参考官方样例编写C++代码,分别对squeezenet[3],detectron[4]中模型进行单张图像测试:

squeezenet:0.015s/img 227x227
detectron-faster-C4:0.28s/img 1920x1080

速度比linux下慢不少,原因暂时未知。。


[1] https://caffe2.ai/docs/getting-started.html?platform=windows&configuration=compile
[2] https://github.com/caffe2/caffe2
[3] https://github.com/caffe2/models
[4] https://github.com/facebookresearch/Detectron

猜你喜欢

转载自blog.csdn.net/signal926/article/details/80236445