1、环境配置
下载官方代码,选择Windows分支的版本
查看其README.md文件,其中对环境的要求都已说明,且可以配置多个版本;
Visual Studio 2015, CPU only, Python 3.5: Caffe Release, Caffe Debug
Visual Studio 2015, CUDA 8.0, Python 3.5: Caffe Release
Visual Studio 2015, CPU only, Python 2.7: Caffe Release, Caffe Debug
Visual Studio 2015,CUDA 8.0, Python 2.7: Caffe Release
Visual Studio 2013, CPU only, Python 2.7: Caffe Release, Caffe Debug
由于我电脑GPU性能比较好,所以配置了带有cuda版本的caffe,首先就是按照要求安装相应版本的CUDA版本和CUDNN版本,我安装的版本为CUDA8.0和CUDNN5.0,具体安装过程比较简单,不再赘述;然后就是安装python,我安装的版本为python3.5,也可以安装python2.7版本的,可以允许电脑存在多个cuda和python版本,但是默认一定要设置为caffe需要的版本环境。
2、编译
下载caffe-windows代码解压后,找到scripts文件夹下的build_win.cmd文件
这个是专门用于在Windows下编译caffe的官方文件,不过需要根据自己配置环境的情况进行一些修改;如下所示
else (
:: Change the settings here to match your setup
:: Change MSVC_VERSION to 12 to use VS 2013
:: 根据自己vs版本设置,2013就是12,2015就是14,我的是14
if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14
:: Change to 1 to use Ninja generator (builds much faster)
:: 这里由于我使用的cmake编译,未使用ninja,所有设置为了0
if NOT DEFINED WITH_NINJA set WITH_NINJA=0
:: Change to 1 to build caffe without CUDA support
:: 这里我使用了cuda,所有设置为0,若是CPU版本则设置为1;
if NOT DEFINED CPU_ONLY set CPU_ONLY=0
:: Change to generate CUDA code for one of the following GPU architectures
:: [Fermi Kepler Maxwell Pascal All]
:: 此处一定要注意,如果安装了多个cuda版本,需要将其设置为All,不然会报出compute_arch不支持的错误;
if NOT DEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=All
:: 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
:: 此处就是编译vs的版本,是Release还是Debug版本,我的是Release
if NOT DEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release
:: Set to 1 to use NCCL
:: 是否使用多卡训练
if NOT DEFINED USE_NCCL set USE_NCCL=0
:: 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)
:: 选择python版本,我使用是python 3.5,所以修改为3
if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=3
:: Change these options for your needs.
:: 这里选择需要的选项,我需要python,所以将python选项设置为了1,如果需要MATLAB,则将其也设置为1
if NOT DEFINED BUILD_PYTHON set BUILD_PYTHON=1
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
:: 生成安装文件,所以需要设置为1
if NOT DEFINED RUN_INSTALL set RUN_INSTALL=0
)
如果使用了CUDNN,还需要将其路径添加到其中,即 -DCUDNN_ROOT=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0^
:: 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
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\.."
之后就可以在cmd中运行build_win.cmd文件了,但是由于需要下载相应的依赖包,可能会由于下载时间太长导致编译失败,所以,可以先下载好对应版本的依赖包,放入相应的文件夹内,从而节省大量编译时间;依赖包地址,从中选择合适的文件;
由于我使用的是vs2015,python3.5,所以对应的就是libraries_v140_x64_py35_1.1.0.tar.bz2;将其下载后解压到相应目录下,默认目录为C:\Users\Administrator.caffe\dependencies\libraries_v140_x64_py35_1.1.0
之后为了防止其继续下载,需要找到cmake文件夹下的WindowsDownloadPrebuiltDependencies.cmake文件,注释其中下载文件的部分;这样运行build_win.cmd文件时就不会重复下载依赖包了。
最后运行build_win.cmd文件,等待编译完成,时间有点长,最终编译完成,可能会有很多警告,可以忽略,没有错误就行。
3、在VS中生成解决方案
选择需要生成的版本,没有报错则编译成功。