0. 声明
当前版本C1.0(仅做参考)。
作者联系方式:E-mail: WindForest@yeah.net
首先将本文使用到的各工具版本列出如下:
项 | 值 |
---|---|
编译/目标操作系统 | Windows 10 20H2 x64 |
本文使用的VS版本 | Virtual Studio 2015 (VC14) |
本文操作步骤支持的CUDA版本 | CUDA8.0 |
本文配合使用的cuDNN版本 | cuDNN7.1.3 |
Python版本 | Anaconda Python3.5.4 |
Caffe源 | https://github.com/BVLC/caffe/tree/windows |
本机CPU信息 | Intel® Core™ i7-5500U CPU @ 2.40GHz |
本机GPU信息 | NVIDIA GeForce 940M(算力5.0) |
[建议]
所有的程序或环境最好使用其默认目录,以避免不必要地在环境配置上浪费时间。如果你的电脑C盘没有足够的空间,不如换一块大容量的SSD。
1. VS和CUDA的版本选择
Caffe框架以源码提供,因此首先需要安装 Virtual Studio 2015(VC14) ,按照网上一些资料所述,VS2013(VC12)也可以编译Caffe1.x,但是考虑到目标项目提供的示例程序是基于VC14创建的,这里选择VS2015版本。
若需编译Caffe的GPU版本,则CUDA和cuDNN也需要安装。高版本CUDA/cuDNN中有一些API变动,因此考虑到源码说明文件中给出的建议,使用CUDA8.0版本。
VS的安装应该在CUDA之前,以便于CUDA安装过程中增加对VS的支持,安装时需要英文语言包支持、Python Tools支持以及Windows SDK支持。而后将cuDNN解压,将其中的文件复制到CUDA安装目录的同名文件夹下,并将CUDA安装目录中的 .\lib\x64 目录添加进系统环境变量。
2. Python环境配置
安装Anaconda3,查找相关资料更换镜像源以加快下载速度。在Anaconda .Navigator中新建环境或在Anaconda Powershell Prompt中执行以下语句新建环境:
conda create --name caffe-python3 python=3.5.4
[注意]
如果在图形界面中创建Python3.5的环境,默认安装的版本为Python3.5.6。
考虑到项目适配,我使用的是Python3.5.4,其它小版本或许也行,但是本人没进行过尝试。
在Anaconda .Navigator中进入该环境的命令提示符界面或在Anaconda Powershell Prompt中执行以下语句激活环境:
conda activate caffe-python3
使用以下命令安装依赖包:
pip install numpy scipy protobuf scikit-image matplotlib pandas
[注意]
这些环境必须使用pip安装而非conda,否则可能出现import caffe后python无报错退出的情况。
如果安装速度过慢,可参考相关资料为pip更换国内镜像源。
3. Caffe的适配和编译
下载Caffe-Windows-BVLC工程,修改 ./scripts/build_win.cmd 文件:
-
修改编译开关
... :: Change the settings here to match your setup :: Change MSVC_VERSION to 12 to use VS 2013 if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14 --使用VS2015 :: Change to 1 to use Ninja generator (builds much faster) if NOT DEFINED WITH_NINJA set WITH_NINJA=0 --不使用Ninja编译器 :: Change to 1 to build caffe without CUDA support if NOT DEFINED CPU_ONLY set CPU_ONLY=0 --关闭CPU版本编译 :: Change to generate CUDA code for one of the following GPU architectures :: [Fermi Kepler Maxwell Pascal All] if NOT DEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Auto --自动匹配CUDA :: Change to Debug to build Debug. This is only relevant for the Ninja generator the Visual Studio generator will generate both Debug and Release configs if NOT DEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release --编译Release版本 :: Set to 1 to use NCCL if NOT DEFINED USE_NCCL set USE_NCCL=1 :: Change to 1 to build a caffe.dll if NOT DEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0 :: Change to 3 if using python 3.5 (only 2.7 and 3.5 are supported) if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=3 --使用Python3 :: Change these options for your needs. if NOT DEFINED BUILD_PYTHON set BUILD_PYTHON=1 --编译PyCaffe if NOT DEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1 if NOT DEFINED BUILD_MATLAB set BUILD_MATLAB=0 :: If python is on your path leave this alone if NOT DEFINED PYTHON_EXE set PYTHON_EXE=python :: Run the tests if NOT DEFINED RUN_TESTS set RUN_TESTS=0 :: Run lint if NOT DEFINED RUN_LINT set RUN_LINT=0 :: Build the install target if NOT DEFINED RUN_INSTALL set RUN_INSTALL=0 ...
[注意]
若不启用NCCL,可能导致编译成功、导入包成功,但无法进行GPU训练的情况。
-
全局搜索 cmake -G ,增加CUDNN路径:
... 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\v8.0 ^ "%~dp0\.." ...
-
全局搜索 CONDA_ROOT ,在对应Python版本处增加Python安装路径:
... :: Set python 3.5 with conda as the default python if !PYTHON_VERSION! EQU 3 ( set CONDA_ROOT=C:\Users\Hello\anaconda3\envs\caffe-python3 ) ...
开始编译之前,首先需要安装CMake,CMake没有版本限制,直接安装最新版即可。而后执行该脚本生成VS工程,生成过程中若出现 libraries_v140_x64_py35_1.1.0.tar.bz2 下载过慢的情况,可手动下载该文件后复制到目标目录再次运行脚本。
[注意]
执行编译脚本应当在Anaconda终端中对应的环境下进行,否则可能识别到Anaconda之外的Python环境。
使用VS2015打开 ./scripts/build/Caffe.sln 工程并在 Release x64 模式下生成解决方案,此时 ./python/caffe 目录下的内容即为最终的PyCaffe。
4. PyCaffe安装和测试
将 ./python/caffe 目录拷贝到 C:\Users\用户名\anaconda3\envs\caffe-python3\Lib\site-packages 即可完成安装,在 caffe-python3 的conda-python环境下执行import caffe没有报错。
使用PyCaffe自带的mnist手写数字识别的示例进行验证的过程参见 参考2:Caffe的运行mnist手写数字识别 。
参考
————2021-4-8@燕卫博————