Windows 10 & Visual Studio 2015 配置 Caffe
来源:互联网 发布:怎么加入淘宝类目群 编辑:程序博客网 时间:2024/04/25 08:42
笔记本是双显卡,读研的时候成功的在Ubuntu下配置好了一次Caffe,并且完成了深度学习的实验,前不久因为一个小的问题,导致NVIDIA驱动出了问题,以后再也没有在Ubuntu下成功配置好Caffe,不浪费时间在双显卡配置上了,转移到Windows下,正好也方便整理笔记。
首先是我的安装过程中需要注意的问题,其实大部分问题都是阅读完整个文档都可以解决,但是通常不喜欢阅读英文文档,或者一眼带过,很容易丢掉一些细节,介绍完我的安装步骤和问题,我顺手翻译了一下官方的文档。
我的安装步骤
1 Clone仓库,并修改当前路径到caffe目录,切换到Windows分支:
- 1
- 2
- 3
- 第一次尝试构建
- 1
CMake出错,我安装了两个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下载依赖项的脚本,会看到下面的代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
对应不同的编译器版本和Python版本,选择一个合适的,我这里是140和3.5,手动下载依赖项,并拷贝到scripts\build
目录下,解压到当前文件夹,就会出现一个libraries
的目录,这就是所有的依赖项(还有OpenCV都在里面),继续编译,如果编译器和Python的版本都是对的,那么就会编译成功,大约需要16分钟。
下面是翻译的文档,参考Caffe-Windows项目:
Windows Caffe声明
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
Windows 配置Caffe
需求
- Visual studio 2013或者2015
- CMake3.4或者更高版本(用于支持Visual Studio 和 Ninja)
依赖选项
- Python用于支持pycaffe,选择Anaconda Python 2.7 or 3.5 x64 (or Miniconda),直接安装Anaconda,过程简单
- MATLAB用于支持Matcaffe
- CUDA 7.5或者8.0,8.0的话需要使用Visual Studio 2015
- cnDNN v5
保证CMake和Python都已经添加到环境变量了,如果有多个CMake版本的话,保证CMake3.4或者更高版本的变量值排在低版本的前面,系统会找到第一个符合的版本,若是低版本的没有使用,可以去除低版本的环境变量,现在Windows10 支持调整环境变量顺序。
配置并且编译Caffe
最快的方式在Windows上上手Caffe,只需要在Windows的命令行中执行下面的命令(假设C:\Projects是我们创建的目录,用来编译Caffe):
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
上面的代码Windows可以存储到支持的脚本文件,冒号表示注释,扩展名是
.cmd
,也可以直接在命令行中输入。
其中build_win.cmd
也是一个脚本文件,这个脚本用来下载依赖项,创建Visual Studio工程文件(或者Ninja构建文件),并且构建发布的配置,默认情况下,所有需要的DLL都必须拷贝到用到他们的二进制文件旁边(如果可能的话,可以创建硬链接),如果期望禁用这个选项,需要修改这个脚本文件中关于CMake的配置选项,将-DCOPY_PREREQUISITES=0
。预编译的二进制库文件,也提供了一个prependpath.bat批处理文件,这个批处理文件可以临时的修改环境变量,让需要的DLL都可以找到。
下面是一些比较复杂的在构建Caffe过程中一些步骤的描述:
安装Caffe的依赖项
默认情况下,CMake会根据编译器版本和Python版本下载和解压预编译好的依赖项,会在build文件夹下创建一个叫作libraries
的目录,这个目录中包含了所有的需要的依赖项。你也可以这样做,根据在caffe-builder中的README自己手动的编译这些依赖项。
使用 cuDNN
使用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的配置就会变成下面样子(其实就是添加一个编译选项),
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
另外一种方式是打开CMake的GUI工具,设置变量,然后点击Generate按钮
仅对CPU构建
如果没有安装CUDA,那么Caffe默认是仅对CPU构建,但是如果已经安装了CUDA,但是还是想只对CPU构建,那么可以修改CMake的编译选项-DCPU_ONLY=1
。
使用Python接口
推荐使用Anaconda 或者Miniconda这两个Python发布版本(非常简单),为了能成功的编译除Python接口,需要安装下面的包:
- 1
你也将会需要使用protobuf Python包,这个包是与预编译的依赖项兼容的,这个包的安装命令是:
- 1
如果已经安装了额Python,那么将会默认编译Python接口和Python层,如果你想禁用Python层和Python构建版本,那么需要分别修改CMake的编译选项:-DBUILD_python_layer=0
和-DBUILD_python=0
。
使用Python接口的时候,需要添加C:\Projects\caffe\python
到环境变量,并把C:\Projects\caffe\python\caffe
拷贝到site_packages
目录下。
使用MATLAB接口
根据前面的步骤,然后使用-DBUILD_matlab=ON
的编译选项。
改变当前路径到C:\Projects\caffe\matlab
,然后运行下面的命令,运行测试:
- 1
如果所有的测试都过了,可以测试是否所有的分类的demo都工作。首先,从目录C:\Projects\caffe
中运行python scripts\download_model_binary.py models\bvlc_reference_caffenet
从model zoo中下载预先训练好的caffemodel,然后改变当前路径到C:\Projects\caffe\matlab\demo
,然后运行classification_demo
。
使用Ninja产生器
如果想更快的构建,可以选择使用Ninja产生器替换Visual Studio,为了能这样做,在构建脚本文件中修改选项set WITH_NINJA=1
,通过conda命令,从GitHub上下载并且安装Ninja:
- 1
- 2
当使用Ninja的时候,不会产生Visual Studio解决方案文件,Ninja是与make一个体系的,一个选择是使用Visual Studio Code并且使用CMake 扩展和C++扩展。
构建一个共享库
CMake可以被用来构建一个共享库,不仅仅是默认的静态库,为了做到这一点,需要Follow前面的步骤,并且使用-DBUILD_SHARED_LIBS=ON
编译选项。需要注意的是,一些测试(具体一些是solver相关的测试)会挂掉,原因是测试的执行文件和Caffe的库不共享在protobuf库中的静态对象。
已知的问题
- GPUTimer 相关的测试总是挂掉,这个貌似是以为Unix与Windows的不同
- 构建共享库会挂掉测试
- 只有使用Ninja产生器,共享库构建才工作
- Windows 10 & Visual Studio 2015 配置 Caffe
- Windows 10 & Visual Studio 2015 配置 Caffe
- Visual Studio 2015 Caffe配置
- caffe-windows and ECO visual studio 工程配置及编译
- caffe-windows and ECO visual studio 工程配置及编译
- caffe Visual Studio 安装配置
- Caffe+windows7+Visual Studio 2015+Python+CPU配置记录
- Caffe+Windows7+Visual Studio 2015+Python+CPU配置记录
- Windows10 & Visual Studio 2015 测试Caffe
- Visual studio 2015 community + Windows Driver Kit 10 +Vmware 11 配置驱动开发环境
- windows + visual studio 2010 配置SVN
- windows + visual studio 2010 配置SVN
- windows + visual studio 2010 配置SVN
- windows + visual studio 2010 配置SVN
- windows + visual studio 2010 配置SVN
- windows + visual studio 2010 配置SVN(1)
- windows + visual studio 2010 配置SVN(2)
- windows + visual studio 2010 配置SVN(1)
- Builder设计模式构建万能Dialog
- Linear布局与Constraint布局
- 问题1
- Linux-字符设备-数据结构
- Scala_类
- Windows 10 & Visual Studio 2015 配置 Caffe
- python_类型转换
- nginx 出现413 Request Entity Too Large问题的解决方法 标签: nginxphpuploadrequesttoo large 2015-05-07 00:07 704
- Jquery操作checkbox复选框
- 19AWorld Football Cup
- winsows10下用ninja编译配置caffe
- Mysql 默认密码
- C/C++之读写文件
- cocos2d-x 在安卓平台上 pvr.gz 资源文件异常问题