先前配置了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
从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。
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
记得不要开广告过滤
可执行文件其实是一个解压包,解压备用。
https://visualstudio.microsoft.com/zh-hans/downloads/
安装时勾选通用 Windows 平台开发(包括其子选项C++ 通用 Windows 平台工具)以及使用 C++ 的桌面开发。
建议按默认路径安装。
caffe支持Python版本为2.7和3.5,在以下网址找到对应版本下载安装并配置环境变量中的系统变量。
https://www.python.org/downloads/
若已安装其他版本Python,只需利用【上移】将所需版本Python的环境变量置于其上即可。
此时打开cmd输入python应得到类似如下输出:
(我的Python版本为2.7)
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)
即安装成功。
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
即安装成功。
前往https://www.lfd.uci.edu/~gohlke/pythonlibs/
找到numpy下载对应版本:
然后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
即安装成功。
https://developer.nvidia.com/cuda-downloads
按默认路径安装
https://developer.nvidia.com/cudnn
需要注册Nvidia账号。把压缩包内的bin、include、lib三个文件夹复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\文件夹下,覆盖原有的bin、include、lib。
https://cmake.org/download/
根据机器上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\.."
将CMake中source code路径配置到\caffe(即GitHub Desktop clone到的本地路径)并配置build路径(e.g. /caffe/build),build路径必须为新建的文件夹或空文件夹,路径若不存在会帮你新建。
单击Configure进行配置,可能会报错,弃之不理,找到输出信息中MSVC版本:
作为一个例子,我的MSVC版本为19.16.XXXXX.X
在第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")
再次Configure,可能会报以下错误:
Something went wrong while dowloading dependencies could not open caffe-builder-config.cmake
根据提示为dependencies下载错误。
参照【s3.amazonaws.com】【github.com】拒绝了我们的连接请求->解决方案进行解决。
前往 https://github.com/willyd/caffe-builder/releases 下载机器上Visual Studio与Python版本所对应的dependencies:
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
若采用上述解决方案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
下覆盖。
Caffe下载的dependencies中包含OpenBLAS,然而默认CMake选项为ATLAS,需要修改。
编辑第124行:
set(BLAS "Open" CACHE STRING "Selected BLAS library")
再次Configure,成功。Generate,成功。