2018年9月30日

Win10+VS2017+CUDA9.2+Python3.6下Caffe的本地编译安装

安装CUDA和CUDNN等

详见我之前的文章《Win10下安装Tensorflow 1.8 GPU版(CUDA9.2)》

捷径:

在Github上有位大神提供了windows下的编译包,可直接搜 happynear/caffe-windows ,按其教程安装即可
happynear/caffe-windows是caffe的半官方windows版,虽然在文档中只支持Visual Studio 2015, CUDA 9.0,但略作修改即可支持VS2017、CUDA9.2的环境。

不走捷径,初试Caffe

首先从官网clone源码,遵循官网教程来安装

git clone https://github.com/BVLC/caffe.git
cd caffe
git checkout windows
:: Edit any of the options inside build_win.cmd to suit your needs
C:\Projects\caffe> scripts\build_win.cmd

不出意外,肯定报错。

VisioStudio2015/Common7/Tools/../../VC/vcvarsall.bat”‘
不是内部或外部命令,也不是可运行的程序 CMake Error: Error: generator : Ninja

修改scripts/build_win.cmd

  1. 第五行if DEFINED APPVEYOR是Google的自动化集成,目测用不到,跳到70行,修改为下图所示:
    CaffeScriptConfig.jpg

MSVC_VERSION=15 对应VS2017在下方会用到
WITH_NINJA=0 NINJA在Windows下不好编译安装,因此不使用
CPU_ONLY=0 如果编译CPU版本这里改为1
PYTHON_VERSION=3 目前只支持3.6,为了使用Python3.6之后还有骚操作
如果使用了Conda,从APPVEYOR部分把代码拷贝过来,修改路径;如果没有用Conda,只修改配置最后一句即可

  1. 在if %WITH_NINJA% EQU 0里添加VS2017的信息
    CaffeScriptConfig2.jpg
  2. 修改environement for VS x64
    CaffeScriptConfig3.jpg
  3. 如果使用CUDNN加速,还需要在修改cmake下的参数列表
    CaffeScriptConfig4.jpg

至此,我们再次运行scripts/build_win.cmd
CaffeScriptSuccess1.jpg
如果运气不好的话,会在这里 ERROR: Build failed,此时可以在build/目录下运行 cmake ..
然后和好运气的人一起到达下一个错误
CaffeScriptSuccess2.jpg
深入分析原因,会找到根源在 cmake/WindowsDownloadPrebuiltDependencies.cmake 因为预编译包里没有VS2017和Python3.6的属性。

编译依赖库caffe-builder

Caffe在编译时会从网上下载依赖库caffe-builder,而目前只有VS2013/2015配python2.7/3.5环境的caffe-builder。

下载最新源码

https://github.com/willyd/caffe-builder/releases

修改build_v140_x64.cmd

CaffeBuildCmd.jpg
如果编译失败,出现 CMake throws Error: could not load cache 应是缓存问题,清除缓存文件或把倒数第二行修改为 cmake ..

修改packages/protobuf/CmakeLists.txt

将protobuf包的Hash值从 14a532a7538551d5def317bfca41dace
修改为 39d6a4fa549c0cce164aa3064b1492dc
CaffeBuildConfig.jpg

修改packages/hdf5/CmakeLists.txt

将URL从 https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.16/src/CMkae-hdf5-1.8.16.zip
修改为 https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.16/src/CMkae-hdf5-1.8.16.zip
CaffeBuildConfig2.jpg

运行build_v140_x64.cmd

CaffeBuildSuccess.jpg
然后进入 build_v140_x64 目录用VS2017启动 caffe-builder.sln 并生成
CaffeBuildSuccess1.jpg
此时在build/libraries目录下,生成了caffe编译所需要的文件,将这个libraries目录拷贝到C:/Users/[user name]/.caffe/dependencies下

注释掉cmake/WindowsDownloadPrebuiltDependencies.cmake中的部分内容,见下图

WindowsDownloadPrebuiltDependencies.png

重新编译Caffe,运行scripts/build_win.cmd

顺利的话,大约10分钟后就编译好了。
然而不幸的是因为有墙、引用库版本修改无法下载指定链接等原因,编译常会因为下载错误而失败。


感谢Intel教程
感谢Caffe官网

Share

You may also like...

发表评论

您的电子邮箱地址不会被公开。