教程 | Caffe在Windows10系统上安装与配置

  • 2019 年 11 月 29 日
  • 筆記

软件下载与安装

预先安装软件与版本

  • CMake 3.13.4
  • Anaconda with Python 2 on 64-bit Windows
  • ninja-win
  • VS2015 64bit
  • Git-2.19.0-64-bit

Anaconda软件下载

https://www.anaconda.com/distribution/#download-section

下载Caffe-windows的源码

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

下载之后,我本地地址为 D:/projects/caffe

打开caffescripts build_win.cmd 文件,  把python2的路径修改指向Anaconda  设置WITH_NINJA=0即可。

Caffe编译

直接运行build_win.cmd文件即可,在执行之前可以先检查一下python的版本,Caffe-windows只支持python2.7与python3.5两个python版本,其它都不支持!我的执行如下:

执行完成之后,到scripts/build文件夹下,双击Caffe.sln在VS2015中打开,执行ALL_BUILD之后,如下图所示:

全部38个模块编译完成!

上面步骤中经常会遇到下面的两个错误

错误一:

fatal error c1083: 无法打开包括文件: “caffe/include_symbols.hpp”: no such file or directory

打开build_win.cmd,

把所有

WITH_NINJA=1  统统改为  WITH_NINJA=0,

然后再重新运行即可。

错误二:

Could not find url for MSVC version = 1900 and Python version=3.6

记得把系统的python路径改到C:ProgramDataAnaconda2即可

Caffe Python配置与测试

完成编译之后,切换到caffepythoncaffe目录下,可以看到生成的pyhton安装包。手动把caffepython下的caffe文件夹整个拷贝到Anaconda2Libsite-packages下面。然后打开windows的命令行窗口,执行如下:

说明caffe python完全可以正常使用拉!

常会遇到的问题见下面的两张图

解决办法:

升级下面两个安装包到指定版本即可解决!

  • scipy-1.2.2
  • pillow-4.3.0

另外记得安装VS的时候一定记得把VC++勾上!

最后打开Anaconda自带的Spyder,亲测Caffe导入可用!

附上修改后的build_win.cmd文件:

@echo off  @setlocal EnableDelayedExpansion    :: Default values  if DEFINED APPVEYOR (      echo Setting Appveyor defaults      if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14      set WITH_NINJA=0      if NOT DEFINED CPU_ONLY set CPU_ONLY=1      if NOT DEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Auto      if NOT DEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release      if NOT DEFINED USE_NCCL set USE_NCCL=0      if NOT DEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0      if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=2      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 NOT DEFINED PYTHON_EXE set PYTHON_EXE=python      if NOT DEFINED RUN_TESTS set RUN_TESTS=1      if NOT DEFINED RUN_LINT set RUN_LINT=1      if NOT DEFINED RUN_INSTALL set RUN_INSTALL=1        :: Set python 2.7 with conda as the default python      if !PYTHON_VERSION! EQU 2 (          set CONDA_ROOT=C:ProgramDataAnaconda2      )      :: Set python 3.5 with conda as the default python      if !PYTHON_VERSION! EQU 3 (          set CONDA_ROOT=C:Miniconda35-x64      )      set PATH=!CONDA_ROOT!;!CONDA_ROOT!Scripts;!CONDA_ROOT!Librarybin;!PATH!        :: Check that we have the right python version      !PYTHON_EXE! --version      :: Add the required channels      conda config --add channels conda-forge      conda config --add channels willyd      :: Update conda      conda update conda -y      :: Download other required packages      conda install --yes cmake ninja numpy scipy protobuf==3.1.0 six scikit-image pyyaml pydotplus graphviz        if ERRORLEVEL 1  (        echo ERROR: Conda update or install failed        exit /b 1      )        :: Install cuda and disable tests if needed      if !WITH_CUDA! == 1 (          call %~dp0appveyorappveyor_install_cuda.cmd          set CPU_ONLY=0          set RUN_TESTS=0          set USE_NCCL=1      ) else (          set CPU_ONLY=1      )        :: Disable the tests in debug config      if "%CMAKE_CONFIG%" == "Debug" (          echo Disabling tests on appveyor with config == %CMAKE_CONFIG%          set RUN_TESTS=0      )        :: Disable linting with python 3 until we find why the script fails      if !PYTHON_VERSION! EQU 3 (          set RUN_LINT=0      )    ) else (      :: 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      :: Change to 1 to use Ninja generator (builds much faster)      set WITH_NINJA=0      :: Change to 1 to build caffe without CUDA support      if NOT DEFINED CPU_ONLY set CPU_ONLY=1      :: 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      :: 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      :: 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)      if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=2      :: Change these options for your needs.      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      if NOT DEFINED RUN_INSTALL set RUN_INSTALL=0  )    :: Set the appropriate CMake generator  :: Use the exclamation mark ! below to delay the  :: expansion of CMAKE_GENERATOR  if %WITH_NINJA% EQU 0 (      if "%MSVC_VERSION%"=="14" (          set CMAKE_GENERATOR=Visual Studio 14 2015 Win64      )      if "%MSVC_VERSION%"=="12" (          set CMAKE_GENERATOR=Visual Studio 12 2013 Win64      )      if "!CMAKE_GENERATOR!"=="" (          echo ERROR: Unsupported MSVC version          exit /B 1      )  ) else (      set CMAKE_GENERATOR=Ninja  )    echo INFO: ============================================================  echo INFO: Summary:  echo INFO: ============================================================  echo INFO: MSVC_VERSION               = !MSVC_VERSION!  echo INFO: WITH_NINJA                 = !WITH_NINJA!  echo INFO: CMAKE_GENERATOR            = "!CMAKE_GENERATOR!"  echo INFO: CPU_ONLY                   = !CPU_ONLY!  echo INFO: CUDA_ARCH_NAME             = !CUDA_ARCH_NAME!  echo INFO: CMAKE_CONFIG               = !CMAKE_CONFIG!  echo INFO: USE_NCCL                   = !USE_NCCL!  echo INFO: CMAKE_BUILD_SHARED_LIBS    = !CMAKE_BUILD_SHARED_LIBS!  echo INFO: PYTHON_VERSION             = !PYTHON_VERSION!  echo INFO: BUILD_PYTHON               = !BUILD_PYTHON!  echo INFO: BUILD_PYTHON_LAYER         = !BUILD_PYTHON_LAYER!  echo INFO: BUILD_MATLAB               = !BUILD_MATLAB!  echo INFO: PYTHON_EXE                 = "!PYTHON_EXE!"  echo INFO: RUN_TESTS                  = !RUN_TESTS!  echo INFO: RUN_LINT                   = !RUN_LINT!  echo INFO: RUN_INSTALL                = !RUN_INSTALL!  echo INFO: ============================================================    :: Build and exectute the tests  :: Do not run the tests with shared library  if !RUN_TESTS! EQU 1 (      if %CMAKE_BUILD_SHARED_LIBS% EQU 1 (          echo WARNING: Disabling tests with shared library build          set RUN_TESTS=0      )  )    if NOT EXIST build mkdir build  pushd build    :: Setup the environement for VS x64  set batch_file=!VS%MSVC_VERSION%0COMNTOOLS!....VCvcvarsall.bat  call "%batch_file%" amd64    :: 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% ^        "%~dp0.."    if ERRORLEVEL 1 (    echo ERROR: Configure failed    exit /b 1  )    :: Lint  if %RUN_LINT% EQU 1 (      cmake --build . --target lint  --config %CMAKE_CONFIG%  )    if ERRORLEVEL 1 (    echo ERROR: Lint failed    exit /b 1  )    :: Build the library and tools  cmake --build . --config %CMAKE_CONFIG%    if ERRORLEVEL 1 (    echo ERROR: Build failed    exit /b 1  )    :: Build and exectute the tests  if !RUN_TESTS! EQU 1 (      cmake --build . --target runtest --config %CMAKE_CONFIG%        if ERRORLEVEL 1 (          echo ERROR: Tests failed          exit /b 1      )        if %BUILD_PYTHON% EQU 1 (          if %BUILD_PYTHON_LAYER% EQU 1 (              :: Run python tests only in Release build since              :: the _caffe module is _caffe-d is debug              if "%CMAKE_CONFIG%"=="Release" (                  :: Run the python tests                  cmake --build . --target pytest                    if ERRORLEVEL 1 (                      echo ERROR: Python tests failed                      exit /b 1                  )              )          )      )  )    if %RUN_INSTALL% EQU 1 (      cmake --build . --target install --config %CMAKE_CONFIG%  )    popd  @endlocal