【转载来的文章:如有侵权,请联系我!我将马上删除!】

首先声明一下,如标题,本教程是caffe在windows系统上的配置方法,而且是github上官方BVLC/caffe目前推荐的配置方法,并不是使用微软的caffe-windows。之前很多人是用的微软的caffe配置,本教程真不是。

适用平台

64位 windows 10、64位 windows 7(我第一次安装配置的是win10,现在用win7安装给大家做个演示,有一些截图是win10上的,不过没影响的,win8我就不清楚了。。)

caffe简单介绍

caffe是用C++语言编写的深度学习框架,作者是伯克利大学的博士贾扬清(一听就知道是中国人,好像2016年才毕业,因为开发这个框架,他耽误了博士的学业,但正是因为这个框架,才能被这么多人知道,看看github上的stars和followers就知道了,真牛!)。

caffe因为是开源的,所以可以直接修改其C++源码,调整基本的layer结构和求解算法等。当然除了使用C++外,caffe还提供python、matlab接口,十分友好(心中再次崇拜并感激贾扬清一下)。

caffe目前主要用于深度学习下的图像处理方面,也就是支持卷积神经网络CNN多一点,如果是要用RNN网络,还是用tensorflow吧。

由于深度学习训练网络需要大量的数据集和大量的浮点计算,而CPU计算能力有限,所以深度学习任务都会使用到GPU,来加速神经网络的训练。国科大深度学习课的老师说过“无GPU,不科研”,可见GPU对目前人工智能领域来说必不可少。没GPU,还是不要搞深度学习了。

现在,深度学习用的GPU都是NVIDIA厂的,笔者就是用的该厂的GPU(1060 6GB,还行吧)。caffe作为目前十分流行的深度学习框架,当然是支持使用GPU加速的,而且NVIDIA厂明确表明支持caffe,所以大家可以放心使用。(NVIDIA偏老的GPU我就不知道了,大家可以试试)

前期准备

  1. 首先从BVLC/caffe上下载caffe源码,选择好路径后下载。下载过后,会得到一个caffe-windows.zip文件。
  2. 将该文件解压到你指定的位置,进行下一步。
  3. 确定你是不是有NVIDIA的GPU,需不需要用GPU加速,如果不用GPU加速的话,可以跳过下面的cuda安装和cudnn配置,直接配置caffe;如果需要用GPU,则需要在NVIDIA官网上分别下载安装cuda和cdunn,下载地址在下面给出。
  4. 按照官方建议,需要使用cmake,所以需要先下载 cmake并安装,给出的这个cmake链接是64位的,直接下载安装,全英文界面,所有选项保持默认即可,一直点击下一步,直到安装完成。

环境配置

cuda和cudnn配置(不是使用NVIDIA GPU加速的话请掠过)

cuda和cudnn都是NVIDIA(英伟达)公司提供给开发者使用的运算平台,简而言之就是用GPU干你想干的事。

  1. 下载并安装cuda,一定要选择对应的版本,要不然会安装失败的。现在我演示的是64位win7,所以就选择对应的版本下载。安装过程比较简单,双击安装,选项建议都默认(有些人不喜欢把东西放在C盘,建议还是放在C盘,毕竟是开发工具),一直点击确认或者下一步,直至安装成功即可。 
  2. 下载cudnn,这是用来加速深度网络训练的。下载cudnn需要登陆,你可以直接用邮箱注册一个,然后登陆下载就好了。
  3. 下载完后,你会发现,cudnn不是一个软件,而是一个压缩包,我下载的就是:cudnn-8.0-windows10-x64-v6.0.zip(有人私信说caffe还是没有编译成功,我看了一下发现是cudnn版本问题,前面的cuda安装的是8.0,所以cudnn应该用的是cudnn-8.0-windows10-x64-v6.0.zip,而不是其他版本)。这个包需要解压缩,得到一个名为cuda的文件夹,为了不与前面安装的cuda混肴,用红色表示。
  4. 配置cudnn。cudnn解压后得到的cuda文件夹下有bin、include、lib三个子文件夹,现在需要将这三个文件夹下的东西分别放到之前cuda的安装目录下的对应文件夹下。之前已经安装过cuda,cuda的安装目录默认为:C:\Program Files\NVIDIA GPU Computing Toolkit\,现在就只需要: 
    -将cudnn解压后得到的cuda文件夹下的bin下的cudnn64_6.dll(cudnn后面的数字可能不一样,这就是版本问题,如果是cuda 8.0 建议搭配我这个版本的cudnn,否则可能会出现问题)文件拷贝到cuda安装目录下的bin目录下; 
    -将cudnn解压后得到的cuda文件夹下的lib文件夹下的x64文件夹下的cudnn.lib拷贝到cuda安装目录下的lib文件夹下的x64目录下 
    -将cudnn解压后得到的cuda文件夹下的include文件夹下的cudnn.h拷贝到cuda安装目录下include文件夹下 
    可能上面讲的可能有点啰嗦,但是希望你们能看懂啦。

安装Visual Studio 2013

Visual Studio 2013是微软的开发神器,简称VS2013。只要开发平台是windows的程序员,相信就都用过VS。编译caffe就要使用VS2013,据说VS2015也可以,2017就不行,不过这个我也没有试过。VS2013的安装比较简单,我也不多少说了,安装包、激活工具网上也是一大堆,在此就是提醒一下,记得要装这个工具哦。

使用cmake生成caffe的VS2013的项目文件

CMake是一个跨平台的安装(编译)工具,可以通过一些命令输出各种各样的makefile或者project文件,具体这个工具我也没怎么用过,目前的理解就是将caffe官方提供的源码转成VS2013的项目文件,然后就可以使用VS2013编译caffe。

不过,这一步才是最让人心烦的。 
其实caffe的windows分支并不是由贾扬清本人负责的,而是一个叫willyd的人,这个人比较不靠谱,官方的window版编译说明也是他写的,所以很多人走了很多弯路,最终才选择了微软的caffe-windows那条路。(我偏不信邪,终于给他编译通了)

首先打开之前安装好的cmake,界面如下:

红色箭头指的就是你下载的caffe源代码解压后的根目录,cmake通过源码configure好caffe项目文件后,会生成一个新的目录,这个目录你需要自己新建,绿色箭头就是你指定的这个目录。配置好这两个后,直接点击左下方的configure按钮,这个时候cmake会让你选择用什么编译器,这个时候就选择之前安装的Win64位VS2013就可以了,如下图:

选择好版本后,点击finish按钮,cmake就开始工作了。然而一定会遇到错误,这是一定的!有些人的错误顺序不一样,还请先看完下面全部的错误分析,再查看自己是哪里错了,对症下药:

  • 错误1:Could not find url for MSVC version = 1800 and Python 3.5…这个时候是因为之前,我有玩过tensorflow,所以电脑装了python3.5,cmake会以为你需要caffe的python接口, 然后会自动勾选python的相关项,就会出现错误,这个时候取消勾选蓝色区域的选项就行。 
  • 然后就会出现第二个错误,这个错误和第一个错误基本上是一样的,都是python接口的问题。错误显示:
Building without python. Prebuilt dependencies will default to Python 2.7
Downloading prebuilt dependencies to C:/Users/你的用户名/.caffe/dependencies/download/libraries_v120_x64_py27_1.1.0.tar.bz2
  • 1
  • 2

通过提示发现,原来是一定会针对python适配的,就算你不用python,默认也会设置为python2.7,然后就会下载一个依赖包libraries_v120_x64_py27_1.1.0.tar.bz2(其中的py27表示是python2.7)。然而,因为国内的墙比较结实(长城屹立不倒!),最后会出现无法下载,导致configure失败,这个时候就说说这个叫willyd的人了,之前是可以直接下载这个依赖包的,现在不行了,非要要下载一个别的软件编译出这个依赖包,但是没有必要,我们直接下载这个依赖包,然后把它放在C:/Users/你的用户名/.caffe/dependencies/download/下,然后再configure。(当然你如果非要用python接口,你可以按照官网的要求编译去这个依赖包,然后configure)

当然有人私信我,说cmake也能下载这个包,不用我这个链接下载也行,这样当然好了。

  • 紧接着会出现第三个错误: 

具体错误是由于BLAS,这个是一个用于计算的库,它有多个版本,比如图中BLAS右边的Atlas版本,由于我们没有安装过这个,所以将Atlas修改为Open。 
如果是不使用GPU加速,记得勾选CPU_Only这个选项,然后再configure一下,就不会有错了,有错你来找我,就是这么自信。

在完全没有错误的configure done之后(如上图就是成功了的),再点击Generate按钮,显示done以后,再点击Open Project。这个时候系统就会使用VS2013打开生成好的caffe项目文件。VS2013打开caffe项目后,会经过一段时间的加载,这个时候一定要等到它成功加载完所有的文件后,再进行下一步。

使用VS2013编译caffe

  1. 待caffe加载完成后,鼠标右击ALL_BUILD,将其设为启动项,如下图: 

  2. 然后右击ALL_BUILD上面的 解决方案’Caffe’ , 点击属性,打开属性页,然后修改下图中勾画出的部分,配置改为Release,平台改为x64,点击配置管理器,在上面也做相同修改。修改完成之后,点击确定即可。 

  3. 完成配置后,现在开始编译了!同样,鼠标右击 解决方案’Caffe’ ,点击 生成解决方案 选项即可。

  4. 接下来就是一段漫长的编译过程。编译完成后,VS2013下方的输出会显示成功多少个,失败多少个,如果有失败的,那么请重新编译。下面就是全部编译成功后的结果: 

总结

到此,caffe算是配置好了,至于用法后面再讲。 
caffe其实之前已经配置过很多遍了,在windows下和linux下都配置过,windows配置比较复杂,坑也比较多,希望爱学习的你们看了我这篇,能踏平这些坑,愉快地在windows下使用caffe,好好搞深度学习。^_^

caffe-windows环境配置(github上官方BVLC/caffe的推荐配置方法详解)的更多相关文章

  1. Gradle在Windows环境与Linux上配置有哪些不同?

    我的开发环境:Windows + Android Studio + Gradle 2.8 all + Jenkins 公司CI 服务器环境: Linux + Gradle 2.10 bin + Jen ...

  2. 全真教程:Windows环境Jupyter Notebook安装、运行和工作文件夹配置

    全真教程:Windows环境Jupyter Notebook安装.运行和工作文件夹配置 @ 目录 全真教程:Windows环境Jupyter Notebook安装.运行和工作文件夹配置 一.Jupyt ...

  3. PHP XAMPP windows环境安装扩展redis 致命错误: Class 'Redis' not found解决方法

    PHP XAMPP windows环境安装扩展redis 致命错误: Class 'Redis' not found解决方法 1.电脑需要先安装redis服务端环境,并在安装目录下打开客户端redis ...

  4. 用Advanced Installer制作DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版详解

    关于 DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...

  5. [转载]windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解

    windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解 http://shashanzhao.com/archives/832.html 虽然是中文字,但是理解起来还是很困难,什么叫工 ...

  6. 【Python】Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在 ...

  7. Windows系统启动iis方法详解

    很多网友一般都用Windows 系统自带的iis服务器来配置web网站,在本地进行调试和修改后才正式上线.虽说操作不难,但是小白来说却无从下手,很多人根本不知道iss在哪,怎么启动,更谈不上配置或者其 ...

  8. robots.txt文件配置和使用方法详解

    robots.txt文件,提起这个概念,可能不少站长还很陌生:什么是robots.txt文件?robots.txt文件有什么作用?如何配置robots.txt文件?如何正确使用robots.txt文件 ...

  9. laravel 框架配置404等异常页面的方法详解(代码示例)

    本篇文章给大家带来的内容是关于laravel 框架配置404等异常页面的方法详解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在Laravel中所有的异常都由Handl ...

随机推荐

  1. spring-data-redis HashOperations

    spring-data-redis HashOperations /** * 从散列中删除给定的多个元素 * @param key 不能为null 散列的名称 * @param hashKeys 需要 ...

  2. Android 回调函数的理解,实用简单(回调函数其实是为传递数据)

    作者: 夏至,欢饮转载,也请保留这段申明 http://blog.csdn.net/u011418943/article/details/60139910 一般我们在不同的应用传递数据,比较方便的是用 ...

  3. RDP服务开启

    一.RDP协议概述 远程桌面协议(RDP, Remote Desktop Protocol)是一个多通道(multi-channel)的协议,让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电 ...

  4. vscode之快速生成vue模板

    文件-首选项-用户代码片段-搜索“vue”点击进入vue.json 复制这个片段 { "Vue component": { "prefix": "vu ...

  5. laravel框架实现数据的删除和修改

    //模型层的调用 <?phpnamespace App;use Illuminate\Support\Facades\DB;use Illuminate\Database\Eloquent\Mo ...

  6. 数据的双向绑定 Angular JS之开端篇

    接触AngularJS许了,时常问自己一些问题,如果是我实现它,会在哪些方面选择跟它相同的道路,哪些方面不同.为此,记录了一些思考,给自己回顾,也供他人参考. 初步大致有以下几个方面: 数据双向绑定 ...

  7. PDF 补丁丁 0.6.0.3282 版发布(修复内存漏洞)

    补丁丁的新测试版修复了旧版在导出图片.分析文件结构时的内存漏洞. 对于希望表达对本软件感情的用户,可点击“帮助”菜单的“关于本程序及作者”命令,用微信扫描里面的二维码表达您的谢意. 新的测试版正在制作 ...

  8. Linux SSH登录很慢的解决方法

    一:UseDNS OpenSSH在用户登录的时候会验证IP,它根据用户的IP使用反向DNS找到主机名,再使用DNS找到IP地址,最后匹配一下登录的IP是否合法.如果客户机的IP没有域名,或者DNS服务 ...

  9. FPGA型号解读

  10. Shell脚本的学习笔记一:变量

    三种变量: 局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量. 环境变量:所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需 ...