【Caffe-Windows】Caffe1.1.0+VS2017+CUDA9.2+cuDNN9.2+OpenCV3.4.3+OpenBLAS+Windows配置教程

Caffe-Windows Configuration Tutorial In VS2017_x64

先前配置了VS2017环境下的OpenPose,其中有第三方库Caffe,不过似乎Caffe官方并不支持为VS2017编译,其实有支持VS2017的Caffe2,不过现阶段功能不如Caffe完善。在这里提供Caffe1.1.0于VS2017环境下利用CMake配置的教程。


环境

操作系统:Windows 10 Enterprise x64
Caffe:1.1.0
CUDA: cuda_9.2.148_win10
cuDNN:cudnn-9.2-windows10-x64-v7.2.1.38
OpenCV:3.4.3
BLAS:OpenATLAS
Visual Studio:Visual Studio Enterprise 2017

步骤1:Caffe获取

从GitHub上clone到本地,可使用GitHub Desktop。若使用GitHub Desktop,【OpenPose-Windows】OpenPose1.4.0+VS2017+CUDA9.2+cuDNN9.2+Windows配置教程中步骤1有类似过程可参考,在此不再赘述。

BVLC/caffe的GitHub地址:https://github.com/BVLC/caffe

clone https://github.com/BVLC/caffe.git

即可获取Caffe。

步骤2:OpenCV获取

caffe自带dependencies中的OpenCV仅有vc14版本,故需获取VS2017对应的vc15版本。
OpenCV是有可执行文件安装包的,传送门:
https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.4.3/opencv-3.4.3-vc14_vc15.exe/download
记得不要开广告过滤
可执行文件其实是一个解压包,解压备用。

步骤3:VS2017安装

https://visualstudio.microsoft.com/zh-hans/downloads/
安装时勾选通用 Windows 平台开发(包括其子选项C++ 通用 Windows 平台工具)以及使用 C++ 的桌面开发
建议按默认路径安装。

步骤4:Python安装

caffe支持Python版本为2.7和3.5,在以下网址找到对应版本下载安装并配置环境变量中的系统变量
https://www.python.org/downloads/
若已安装其他版本Python,只需利用【上移】将所需版本Python的环境变量置于其上即可。
【Caffe-Windows】Caffe1.1.0+VS2017+CUDA9.2+cuDNN9.2+OpenCV3.4.3+OpenBLAS+Windows配置教程_第1张图片

此时打开cmd输入python应得到类似如下输出:
(我的Python版本为2.7)
【Caffe-Windows】Caffe1.1.0+VS2017+CUDA9.2+cuDNN9.2+OpenCV3.4.3+OpenBLAS+Windows配置教程_第2张图片

步骤5:NumPy库安装

1. pip安装

Python 2 >= 2.7.9与Python 3 >=3.4自带pip,无需再安装,可能提示update。
若仍有需要,给出官方链接:
https://pip.pypa.io/en/stable/installing/
cmd输入

pip --version

提示类似

pip 18.0 from c:\python27\lib\site-packages\pip (python 2.7)

即安装成功。

2. wheel安装

cmd输入

pip install wheel

提示

Collecting wheel
  Using cached https://files.pythonhosted.org/packages/81/30/e935244ca6165187ae8be876b6316ae201b71485538ffac1d718843025a9/wheel-0.31.1-py2.py3-none-any.whl
Installing collected packages: wheel
Successfully installed wheel-0.31.1

即安装成功。

3. NumPy安装

前往https://www.lfd.uci.edu/~gohlke/pythonlibs/
找到numpy下载对应版本:
【Caffe-Windows】Caffe1.1.0+VS2017+CUDA9.2+cuDNN9.2+OpenCV3.4.3+OpenBLAS+Windows配置教程_第3张图片
然后cmd输入pip install [.whl包的完整路径]
e.g.

pip install C:\numpy-1.15.2+mkl-cp27-cp27m-win_amd64.whl

提示

Processing c:\numpy-1.15.2+mkl-cp27-cp27m-win_amd64.whl
Installing collected packages: numpy
Successfully installed numpy-1.15.2+mkl

即安装成功。

步骤6:CUDA安装

https://developer.nvidia.com/cuda-downloads
按默认路径安装

步骤7:cuDNN安装

https://developer.nvidia.com/cudnn
需要注册Nvidia账号。把压缩包内的bin、include、lib三个文件夹复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\文件夹下,覆盖原有的bin、include、lib。

步骤8:CMake安装

https://cmake.org/download/

步骤9:准备工作

1. 编辑\caffe\scripts\build_win.cmd

根据机器上Visual Studio的版本:

VS Version MSVC_Version
VS 2013 12
VS 2015 14
VS 2017 15

编辑第7行:
e.g.
我的Visual Studio版本为VS2017:

if NOT DEFINED MSVC_VERSION set MSVC_VERSION=15

编辑第8行:

if NOT DEFINED WITH_NINJA set WITH_NINJA=0

编辑第9行:
若仅使用CPU

if NOT DEFINED CPU_ONLY set CPU_ONLY=1

若使用GPU

if NOT DEFINED CPU_ONLY set CPU_ONLY=0

同样编辑第72/74/76行

在第111行后面添加:

if "%MSVC_VERSION%"=="15" (
    set CMAKE_GENERATOR=Visual Studio 15 2017 Win64
)

编辑第157行:
找到Visual Studio目录下vsvarsall.bat的位置填入
e.g.

set batch_file=C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\VC\Auxiliary\Build\vcvarsall.bat

根据注释:

:: Configure using cmake and using the caffe-builder dependencies
:: Add -DCUDNN_ROOT=C:/Projects/caffe/cudnn-8.0-windows10-x64-v5.1/cuda ^
:: below to use cuDNN

找到CUDA路径:
e.g. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2

根据CUDA路径编辑后一段代码(在第174行后添加以下倒数第二行):

cmake -G"!CMAKE_GENERATOR!" ^
     -DBLAS=Open ^
     -DCMAKE_BUILD_TYPE:STRING=%CMAKE_CONFIG% ^
     -DBUILD_SHARED_LIBS:BOOL=%CMAKE_BUILD_SHARED_LIBS% ^
     -DBUILD_python:BOOL=%BUILD_PYTHON% ^
     -DBUILD_python_layer:BOOL=%BUILD_PYTHON_LAYER% ^
     -DBUILD_matlab:BOOL=%BUILD_MATLAB% ^
     -DCPU_ONLY:BOOL=%CPU_ONLY% ^
     -DCOPY_PREREQUISITES:BOOL=1 ^
     -DINSTALL_PREREQUISITES:BOOL=1 ^
     -DUSE_NCCL:BOOL=!USE_NCCL! ^
     -DCUDA_ARCH_NAME:STRING=%CUDA_ARCH_NAME% ^
     -DCUDNN_ROOT=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2
     "%~dp0\.."

2. 第一次CMake

将CMake中source code路径配置到\caffe(即GitHub Desktop clone到的本地路径)并配置build路径(e.g. /caffe/build),build路径必须为新建的文件夹或空文件夹,路径若不存在会帮你新建。
【Caffe-Windows】Caffe1.1.0+VS2017+CUDA9.2+cuDNN9.2+OpenCV3.4.3+OpenBLAS+Windows配置教程_第4张图片

单击Configure进行配置,可能会报错,弃之不理,找到输出信息中MSVC版本:
【Caffe-Windows】Caffe1.1.0+VS2017+CUDA9.2+cuDNN9.2+OpenCV3.4.3+OpenBLAS+Windows配置教程_第5张图片

作为一个例子,我的MSVC版本为19.16.XXXXX.X

3. 编辑\caffe\cmake\WindowsDownloadPrebuiltDependencies.cmake

在第13行后面添加:
e.g.
根据上面CMake的结果1916和我的Python版本2.7:
(若Python版本为3.5则将27改为35)

set(DEPENDENCIES_URL_1916_27 "${DEPENDENCIES_URL_BASE}/v${DEPENDENCIES_VERSION}/${DEPENDENCIES_NAME_1900_27}${DEPENDENCIES_FILE_EXT}")
set(DEPENDENCIES_SHA_1916_27 "17eecb095bd3b0774a87a38624a77ce35e497cd2")

4. Dependencies相关

再次Configure,可能会报以下错误:
Something went wrong while dowloading dependencies could not open caffe-builder-config.cmake
根据提示为dependencies下载错误。

解决方案A

参照【s3.amazonaws.com】【github.com】拒绝了我们的连接请求->解决方案进行解决。

解决方案B

前往 https://github.com/willyd/caffe-builder/releases 下载机器上Visual Studio与Python版本所对应的dependencies:
【Caffe-Windows】Caffe1.1.0+VS2017+CUDA9.2+cuDNN9.2+OpenCV3.4.3+OpenBLAS+Windows配置教程_第6张图片

VS Version Python Version libraries_
VS 2013 2.7 v120_x64_py27
VS 2015/VS2017 2.7 v140_x64_py27
VS 2015/VS2017 3.5 v140_x64_py35

将下载好的bz2文件放在C:\Users\[USERNAME]\.caffe\dependencies\download
解压bz2文件到C:\Users\[USERNAME]\.caffe\dependencies

5. OpenCV相关

若采用上述解决方案A,再次Configure遇到报错:

CMake Warning at C:/Users/Skaldak/.caffe/dependencies/libraries/OpenCVConfig.cmake:166 (message):
  Found OpenCV Windows Pack but it has no binaries compatible with your
  configuration.

  You should manually point CMake variable OpenCV_DIR to your build of OpenCV
  library.
Call Stack (most recent call first):
  cmake/Dependencies.cmake:114 (find_package)
  CMakeLists.txt:80 (include)


CMake Error at cmake/Dependencies.cmake:114 (find_package):
  Found package configuration file:

    C:/Users/Skaldak/.caffe/dependencies/libraries/OpenCVConfig.cmake

  but it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to be
  NOT FOUND.
Call Stack (most recent call first):
  CMakeLists.txt:80 (include)

将解压好的\opencv\build目录下的
\bin文件夹,
\etc文件夹,
\include文件夹,
\x64文件夹,
OpenCVConfig.cmake
OpenCVConfig-version.cmake
拷贝到C:\Users\[USERNAME]\.caffe\dependencies\libraries下覆盖。

6. BLAS相关(编辑\caffe\cmake\Dependencies.cmake)

Caffe下载的dependencies中包含OpenBLAS,然而默认CMake选项为ATLAS,需要修改。
编辑第124行:

set(BLAS "Open" CACHE STRING "Selected BLAS library")

步骤9:生成工程

再次Configure,成功。Generate,成功。

你可能感兴趣的:(Caffe)