Caffe Windows 配置

"Caffe for Windows10"

Posted by Canary on April 12, 2018

前言

学校服务器的资源已经被兄弟们占满了,没有办法,只好在自己的笔记本下尝试安装单机版Caffe,以备不时之需!

环境

  • Windows10家庭版
  • GPU Nvidia M1200
  • Visual Srudio Community 2015 Update 1
  • Cmake 3.11.0
  • Git
  • Python 3.5.3
  • Matlab 2014a
  • CUDA 8.0
  • cuDNN 5.0.5

资源地址

  1. 伯克利BVLC(Berkeley Vision And Learning Center) 版。 https://github.com/BVLC/caffe 下载源码,在这里我使用D:\GitHub Repository用作根文件夹:
     git clone https://github.com/BVLC/caffe.git
     cd caffe
     git branch -a
     git checkout windows
    
  2. cuda_8.0.61_win10.exe下载地址。cuda_8.0.61_win10

    安装完成后,在系统环境变量会有如下环境变量:

     CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
     CUDA_PATH_V8_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
     NVCUDASAMPLES8_0_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
     NVCUDASAMPLES_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
     NVTOOLSEXT_PATH=C:\Program Files\NVIDIA Corporation\NvToolsExt\
    
  3. cuDNN 下载需要注册账号。就不提供地址了,认准版本号就可以。下载完之后,将压缩包解压到CUDA安装目录中,比如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0;或者定义CUADD_ROOT缓存变量指向解压缩cuDNN文件的位置,比如D:/caffe/cudnn-8.0-windows10-x64-v5.1/cuda,使用这种方法,则需要修改build\_win.cmd文件,待会再说。

  4. Python 3.5.3 我使用了Anaconda3,通过创建虚拟环境安装。

     conda create -n Caffe_3_5 python=3.5.3
    

    然后将新创建的虚拟环境添加到Path环境变量:

     C:\ProgramData\Anaconda3\envs\Caffe_3_5
     C:\ProgramData\Anaconda3\envs\Caffe_3_5\Scripts
    

    要成功构建python界面,您需要添加以下conda通道:

     conda config --add channels conda-forge
     conda config --add channels willyd
    

    同时使用conda在新建的Caffe_3_5中安装下列软件包:

     conda install -n Caffe_3_5 --yes cmake ninja numpy scipy protobuf==3.1.0 six scikit-image pyyaml pydotplus graphviz
    
  5. Matlab 2014a 的安装不赘述,没压力!

    添加Path环境变量

     C:\Program Files\MATLAB\R2014a\runtime\win64
     C:\Program Files\MATLAB\R2014a\bin
     C:\Program Files\MATLAB\R2014a\polyspace\bin
    

    添加环境变量MATLAB_ROOT_DIR:

     C:\Program Files\MATLAB\R2014a
    
  6. Cmake安装也不赘述。

    添加Path环境变量

     C:\Program Files\CMake\bin
    

开始编译Caffe之前的准备工作

在这里我是用Cmake.gui这个工具进行生成vs工程文件的。

  • 设置 源代码路径:D:/GitHub Repository/caffe-windows
  • 设置 生成build路径:D:/GitHub Repository/caffe-windows/build/x64

  • 点击[Configure],弹窗:

  • 下载完之后,或者再次点击[Configure]之后,出现了报错,通过把BLAS设置为OPEN即可 ,当然根据需要,我在面板继续修改参数,我勾选Build_python,使caffe支持python接口;勾选Build_python_layer,使caffe支持python语言自定义层,设置python_version属性为3,指定python版本是3.0+;勾选Build_matlab,使caffe支持Mallab接口:

  • 然后再次点击[Configure]即可,可能最后还会出现几个Warning,关于Boost的,好像没有影响。

  • 最后点击[Generate]按钮,生成vs工程文件。

去到生成build的路径里,发现Caffe.sln,真是顺眼。

使用VS2015编译Caffe

用vs2015打开 D:\GitHub Repository\caffe-windows\build\x64\Caffe.sln。编译整个Caffe.sln下面的工程

等待若干时刻(检查你CPU强劲程度的时候到了),编译成功后,生成INSTALL工程,这样完整的debug和release版本就安装到D:\GitHub Repository\caffe-windows\build\x64\install目录下了。

在D:\GitHub Repository\caffe-windows\build\x64\install\bin目录下shift+右键调出Windows PorweShell,敲入.\caffe.exe -version,cooooool。

如果要运行caffe自己提供的测试用例,项目入口是runtest工程。运行runtest工程。跑全部测试用例。 具体测试内容在test.testbin工程。

官方使用build_win.cmd编译Caffe

传送门

因为我们没有定义APPVEYOR,所以直接拉到else(大约69行)以后,修改:

@echo off
@setlocal EnableDelayedExpansion

:: Default values
if DEFINED APPVEYOR (

    :: ----这里有很多代码,在这里忽略了,因为不需要改动。

) 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)
    if NOT DEFINED WITH_NINJA set WITH_NINJA=0
    :: ----Change to 1 to build caffe without CUDA support
    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]
    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=3
    :: ----Change these options for your needs.
    :: ----caffe支持python接口
    if NOT DEFINED BUILD_PYTHON set BUILD_PYTHON=1
    :: ----使caffe支持python语言自定义层
    if NOT DEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1
    :: ----使caffe支持Mallab接口
    if NOT DEFINED BUILD_MATLAB set BUILD_MATLAB=1
    :: ----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


)

::----这里有很多代码,在这里忽略了,因为不需要改动。

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: ============================================================

::----这里有很多代码,在这里忽略了,因为不需要改动。

:: ----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\cuda ^
      "%~dp0\.."

::----这里有很多代码,在这里忽略了,因为不需要改动。

popd
@endlocal

不出意外,双击build_win.cmd运行,检查系统打印出来的配置是不是和自己设置的一致。

开始编译,一切顺利的话,等待若干时间(这就得看CPU给不给力了)就编译好了。

测试Caffe编译结果

接下来运行一下caffe项目自带的examples里的00-classification的代码来验证一下caffe是否能够正常运行

打开anaconda的命令行,进入caffe的examples目录,运行jupyter-notebook

我这边是一路顺畅!!

将pyCaffe加入系统变量

在当前用户的变量和系统变量我都新添加PYTHONPATH变量,并将路径指向caffe的根目录的python文件夹上,比如我的D:\GitHub Repository\caffe\python

我其实不太了解,当我只在系统变量添加PYTHONPATH时,并没有用。而当我在当前用户的变量添加PYTHONPATH时,成功import caffe。真是怪哉!

caffe的Matlab接口部署

D:\GitHub Repository\caffe\matlab\+caffe\private的Debug和Release文件夹里都有caffe_.mexw64文件,将其中一个(我使用的是Release里边的)拷贝到D:\GitHub Repository\caffe\matlab\+caffe\private

打开Matlab 2014a,点击面板设置路径,添加路径:

D:\GitHub Repository\caffe\matlab

运行以下命令:

caffe.run_tests()

好像第一次运行还是会报错,然后我通过在matlab里,将路径定位到D:\GitHub Repository\caffe\matlab\+caffe\private之后,在运行caffe.run_tests()就成功了。然后第二次之后,就不需要在特定的文件夹都可以运行成功,不明白为什么,不过不想纠结了,反正我不用Matlab(个人觉得Matlab的代码一点美感都没)。

可以参考该博客微软官方caffe之 matlab接口配置

知识共享许可协议本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。欢迎转载,并请注明来自:黄钢的博客 ,同时保持文章内容的完整和以上声明信息!