笔记本是双显卡,读研的时候成功的在Ubuntu下配置好了一次Caffe,并且完成了深度学习的实验,前不久因为一个小的问题,导致NVIDIA驱动出了问题,以后再也没有在Ubuntu下成功配置好Caffe,不浪费时间在双显卡配置上了,转移到Windows下,正好也方便整理笔记。
首先是我的安装过程中需要注意的问题,其实大部分问题都是阅读完整个文档都可以解决,但是通常不喜欢阅读英文文档,或者一眼带过,很容易丢掉一些细节,介绍完我的安装步骤和问题,我顺手翻译了一下官方的文档。
1 Clone仓库,并修改当前路径到caffe目录,切换到Windows分支:
C:\Projects> git clone https://github.com/BVLC/caffe.git C:\Projects> cd caffe C:\Projects\caffe> git checkout windows 第一次尝试构建 C:\Projects\caffe> scripts\build_win.cmdCMake出错,我安装了两个CMake,一个是2.8,一个是3.7,前者是编译Qt用的,并且还在使用,不想删掉,在Win10的环境变量中支持排序,将CMake3.7排在前面,就解决了CMake版本的问题,其实这里完全可以删掉2.8,但是我想留着以后编译Qt4.X的时候使用。 3 继续编译,Ninja找不到,我本机没有安装Ninja,但是在build_win.cmd批处理文件中默认是使用Ninja,把编译选项修改就可以了if NOT DEFINED WITH_NINJA set WITH_NINJA=0 4 继续编译,下载依赖项失败,手动打开Python下载依赖项的脚本,会看到下面的代码:
WIN_DEPENDENCIES_URLS = { ('v120', '2.7'):("https://github.com/willyd/caffe-builder/releases/download/v1.0.1/libraries_v120_x64_py27_1.0.1.tar.bz2", "3f45fe3f27b27a7809f9de1bd85e56888b01dbe2"), ('v140', '2.7'):("https://github.com/willyd/caffe-builder/releases/download/v1.0.1/libraries_v140_x64_py27_1.0.1.tar.bz2", "427faf33745cf8cd70c7d043c85db7dda7243122"), ('v140', '3.5'):("https://github.com/willyd/caffe-builder/releases/download/v1.0.1/libraries_v140_x64_py35_1.0.1.tar.bz2", "1f55dac54aeab7ae3a1cda145ca272dea606bdf9"), }对应不同的编译器版本和Python版本,选择一个合适的,我这里是140和3.5,手动下载依赖项,并拷贝到scripts\build目录下,解压到当前文件夹,就会出现一个libraries的目录,这就是所有的依赖项(还有OpenCV都在里面),继续编译,如果编译器和Python的版本都是对的,那么就会编译成功,大约需要16分钟。
下面是翻译的文档,参考Caffe-Windows项目:
Caffe的Windows版本是一个实验性的、社区版,是由Guillaume Dumont (@willyd)这个人主持开发的,目前正在开发过程中。 这是Caffe仓库的一个分支,分支名是Windows,这个分支就是提供一个在Windows上的Caffe框架。
在appveyor 上的持续化集成CI环境编译构建生成的二进制文件也可以下载,根据不同的配置有如下几个版本。
Visual Studio 2015, CPU only, Python 3.5: Caffe Release
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
这些链接是关联的CI环境生成的文件,应该会发生变化,需要下载的请关注Caffe的Github
保证CMake和Python都已经添加到环境变量了,如果有多个CMake版本的话,保证CMake3.4或者更高版本的变量值排在低版本的前面,系统会找到第一个符合的版本,若是低版本的没有使用,可以去除低版本的环境变量,现在Windows10 支持调整环境变量顺序。
最快的方式在Windows上上手Caffe,只需要在Windows的命令行中执行下面的命令(假设C:\Projects是我们创建的目录,用来编译Caffe):
:: 从GitHub上clone 仓库 C:\Projects> git clone https://github.com/BVLC/caffe.git :: 跳转到目录中 C:\Projects> cd caffe :: 切换到Windows分支(远程分支,在本地创建并关联到远程分支), C:\Projects\caffe> git checkout windows :: Edit any of the options inside build_win.cmd to suit your needs C:\Projects\caffe> scripts\build_win.cmd上面的代码Windows可以存储到支持的脚本文件,冒号表示注释,扩展名是.cmd,也可以直接在命令行中输入。
其中build_win.cmd也是一个脚本文件,这个脚本用来下载依赖项,创建Visual Studio工程文件(或者Ninja构建文件),并且构建发布的配置,默认情况下,所有需要的DLL都必须拷贝到用到他们的二进制文件旁边(如果可能的话,可以创建硬链接),如果期望禁用这个选项,需要修改这个脚本文件中关于CMake的配置选项,将-DCOPY_PREREQUISITES=0。预编译的二进制库文件,也提供了一个prependpath.bat批处理文件,这个批处理文件可以临时的修改环境变量,让需要的DLL都可以找到。
下面是一些比较复杂的在构建Caffe过程中一些步骤的描述:
默认情况下,CMake会根据编译器版本和Python版本下载和解压预编译好的依赖项,会在build文件夹下创建一个叫作libraries 的目录,这个目录中包含了所有的需要的依赖项。你也可以这样做,根据在caffe-builder中的README自己手动的编译这些依赖项。
使用cuDNN最简单的方式是将cuDNN解压后的cuda目录中的内容拷贝到CUDA工具包的安装目录下,比如,如果是安装的CUDA8.0,然后下载cudnn-8.0-windows10-x64-v5.1.zip,那么应该将cuda目录中的文件拷贝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0对应的目录下。另外,也可以定义一个CUDNN_ROOT的缓存变量用来只想解压后的cuDNN目录,比如,解压目录是C:/Projects/caffe/cudnn-8.0-windows10-x64-v5.1/cuda,那么,对应的build_win.cmd脚本文件中的CMake的配置就会变成下面样子(其实就是添加一个编译选项),
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% ^ -DCUDNN_ROOT=C:/Projects/caffe/cudnn-8.0-windows10-x64-v5.1/cuda ^ -C "