【Caffe安装】caffe安装系列——史上最详细的安装步骤_caffe需要安装吗?-程序员宅基地

技术标签: 【Caffe 及 应用实例】  

说明

  • 网上关于caffe的安装教程非常多,但是关于每一步是否操作成功,出现了什么样的错误又该如何处理没有给出说明。因为大家的操作系统的环境千差万别,按照博客中的教程一步步的安装,最后可能失败——这是很常见的哦。有的教程甚至省略了一些细节部分,让小白更不知道如何判断每一步是否操作成功,如何处理出现的错误。
  • 作者花费了很长时间才成功地将caffe装完,期间遇到好多错误,多次重装操作系统。现在将经验写下来,一方面为了和大家分享,讨论;另一方面是为了记录一下下~~~

环境

操作系统: Ubuntu 14.04
GCC/G++:4.7.x
OpenCV: 2.4.11和3.0.0
Matlab :R2014b(a)
Python: 2.7

安装步骤

介绍

0.准备工作

  • 安装Ubuntu 14.04(15.04),最好安装较新版本的Ubuntu。为什么选择Ubuntu呢?一方面,个人使用习惯,感觉Ubuntu安装软件等特别方便,使用特别顺手;另一方面,caffe项目最初貌似在Ubuntu上开发的,原生嘛。
  • 安装过程需要下载东东,因此需要联网
  • 安装

1.安装GCC4.7和G++4.7并降级

  • 为什么要先安装GCC和G++,并需要降级呢?
  • Ubuntu14.04版本默认的GCC和G++都是4.8。而Matlab默认支持的mex编译器是GCC4.7.x和G++4.7.x。因此需要额外安装GCC4.7和G++4.7并降级。
  • 为什么需要先安装编译器GCC和G++,而不是先安装显卡驱动和cuda等等呢?
  • 首先,先安装显卡驱动,后安装GCC并降级的安装顺序过程中,遇到了很多问题。比如,在安装CUDA SAMPLES的过程中,遇到了问题/usr/bin/ld: cannot find –lGL,后面通过网上教程,重新连接该库文件,仍然不能通过OpenCV的编译。但是,先安装GCC,再安装显卡驱动,就不会遇到这个问题了。
  • 其次,请先看下图。这是在成功地安装完显卡驱动之后,查看加载的显卡的版本信息时返回的结果。注意,包含了GCC4.7.3。说明,显卡安装过程中,会和GCC的版本产生联系。。。。这也就不不难理解为什么在编译Cuda Samples过程中会遇到上面的问题。
    这里写图片描述

  • 所以,请先安装GCC4.7和G++4.7,然后在执行下面的步骤。

2.安装NVIDIA显卡驱动

  • 为什么需要安装NVIDIA显卡驱动,Ubuntu没有自带的显卡驱动吗?
  • Ubuntu自带的显卡驱动是开源的Nouveau,据说是一个比较烂的东东。而且,最关键的是cuda不支持Nouveau。如果想使用cuda进行GPU计算,必须安装NVIDIA显卡驱动。
  • 选择哪个版本的显卡驱动呢
  • 这个问题需要结合操作系统,显卡和个人需求来讨论。
  • 操作系统影响显卡驱动的版本。比如,我在Ubuntu14.04 Server上安装NVIDIA-352显卡驱动,说是由于dkms,安装失败。目前,通过apt-get方式可以安装的最新NVIDIA显卡驱动是NVIDIA-346。
  • 显卡嘛,硬件当然要和驱动适应才行
  • 个人需求,主要从cuda的角度考虑。比如cuda7.5需要显卡驱动最低版本是nvidia-352;cuda7.0需要显卡驱动最低版本是nvidia-336;cuda6.5需要显卡驱动最低版本是nvidia-33*;其他的记不清楚啦。。。
  • 显卡驱动的安装方式有哪些
  • 方法一:去NVIDIA官网下载相应的驱动二进制安装包,然后安装。
  • 方法二:通过apt-get来安装。
  • 区别:apt-get安装方便,但是不能安装最新的显卡驱动,目前ubuntu14.04通过apt-get可以安装nvidia-346显卡。
  • 安装过程中注意事项:①需要关闭显示管理器,②二进制安装需要修改文件,并重启。

3.安装cuda和cudnn

  • 安装cuda的方式有哪些?
  • 方法一:官网下载cuda开发包的二进制安装包进行安装。
  • 方法二:官网下载cuda开发包的deb文件进行安装。
  • cuda版本的选择问题?
  • 根据个人需求和操作系统来决定,显卡驱动版本。
  • cuda6.5是一个分界点,cuda6.5支持compute_11,compute_12. etc. compute_1X系列架构;从cuda7.0开始,不支持compute_1X系列架构,最低是compute_20架构。
  • cuda对显卡驱动有要求。比如cuda7.5需要显卡驱动最低版本是nvidia-352;cuda7.0需要显卡驱动最低版本是nvidia-336;cuda6.5需要显卡驱动最低版本是nvidia-33*;其他的记不清楚啦。因此,结合自己操作系统可以安装的NVIDIA显卡驱动来决定选择哪个版本的cuda。
  • 为什么安装cudnn?
  • cudnn可以简单的理解为CUDa cNN,即在GPU上做卷积运算。最近几年,深度学习很火,尤其是CNN(卷积神经网络)。通过cudnn,可以极大的提高CNN训练速度。简单的说,实用GPU是为了快,实用cudnn是为了更快。

4.安装Matlab

  • 在Ubuntu中安装Matlab比较简单,除了几个注意事项,和Windows中安装没有区别。
  • 为什么需要安装Matlab?
  • caffe有Matlab的接口,因此如果需要使用Matlab调用caffe,进行编程,就需要安装Matlab。如果你觉得使用C或Python编程比较难,就请安装Matlab。当然如果不需要,并且后面不会编译caffe生成Matlab的接口,就不需要安装Matlab了。这个纯粹根据个人需求来定。
  • Matlab是商业软件,请自行百度下载。。。【主要是太大了,不方便提供】

5.安装OpenCV

  • 为什么需要安装OpenCV?
  • caffe是用来做深度学习的,深度学习的一大应用对象就是图像和视频。而OpenCV是目前最火的开源计算机视觉库,非常多的项目多用到了OpenCV,当然caffe也依赖OpenCV。所以,需要安装OpenCV,否则无法使用caffe哦。。。
  • OpenCV安装简单吗?
  • 答案是因人而异。有的人觉得简单,可以自己弄,有的人觉得难,没关系,大神们有写的安装脚本点此*下载,运行一下就OK了。
  • 但是,使用别人脚本安装的方法,也会遇到一些问题。如果遇到问题,请Google解决。
  • 最简单的方式是使用我修改过的脚本,按照顺序执行12345个脚本,基本不需要修改就能成功安装。
  • 最后提醒,安装OpenCV是挺麻烦的,请耐心安装,编译不过的话,查看错误Google,解决了再编译,一遍遍的尝试,最后就能解决问题了。
  • 应该安装OpenCV哪个版本呢?
  • OpenCV的版本和cuda的版本最好匹配。这样子安排的目的是为了减少错误出现的概率。比如,我无错误编译成功的组合有【cuda7.0 + opencv3.0】,【cuda6.5+opencv2.11】。
  • 应该安装最新的,又不该安装最新的。呵呵,好别扭哦。针对于低版本的cuda,最好安装opencv2.x。而且是opencv2.x中最新的。
  • 低版本cuda安装opencv2.x的原因是,opencv的一些文件中涉及一些关于cuda架构的设置,opencv2.x中有支持相应的架构的配置。从这个角度看,cuda6.5是最保险的, 因为它既支持compute_1x,也支持更高的架构。

6.安装Python相关依赖

  • 为什么要安装python相关依赖???
  • 首先,python在linux中应用非常的广泛,很多项目都会涉及python,caffe也不例外。
  • 其次,caffe提供了python的接口,为了后面使用,也需要这些依赖。
  • 这些依赖都可以通过apt-get安装吗?
  • 答案是否定的。
  • 首先,google一下apt-get vs pip,查看两者区别。
  • 其次,安装theano的时候,发现apt-get安装的numPy和sciPy无法通过测试,并且造成theano测试失败。使用pip安装成功。参考《Ubuntu14.04安装Theano详细教程》
  • 最后,在安装caffe的过程中,发现有几个python依赖包必须通过pip安装(即自行编译),否则无法成功地编译caffe。

6.安装caffe

  • 再重复一遍,请在上面所有步骤成功执行的前提下,安装caffe,否则编译肯定不会通过的。
  • caffe源代码能不能直接拿过来编译呢?
  • 不能。至少需要修改一个文件Makefile.config。该文件给caffe编译提供了必要的信息。
  • 如果opencv的版本是3.0,还需要修改其他项。
  • 其他的请参考安装caffe的教程

总结

  • 至此,ubuntu下安装caffe的工作已经结束了。如果你完全按照本教程操作,相信你一定已经成功安装caffe了,并且对caffe有了一定的了解。
  • 世上无难事只怕有坚持,安装过程虽然很复杂,但是只要坚持,不断的Google解决它,caffe就一定能安装。
  • 错误不可怕,它是成功的障碍,同时也为我们成长提供了阶梯——所谓的能力,很大一部分是通过不断解决问题来获取的。
  • 下面开始学习如何使用caffe做深度学习的研究喽,祝大家学习愉快。。。

参考

《Caffe + Ubuntu 15.04 + CUDA 7.0 新手安装配置指南》——欧新宇
这个教程很好,请查看本教程的过程中,结合欧新宇的教程一并查看。
《caffe - GitHub主页》

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/haoji007/article/details/52081273

智能推荐

ubuntu安装mysql8.0-程序员宅基地

文章浏览阅读1.2w次,点赞57次,收藏162次。2022-10-25T03:11:58.419768Z mysqld_safe mysqld from pid file /var/lib/mysql/iZbp1eamp4b3cwkc1a2mkbZ.pid ended 后按回车。这个mysql安装的我很累,特别是修改root登录密码那一步,如果安装的旧版本就不用看我这篇文章了,如果安装的8.0以上的可以参考本篇文章一步一步进行安装即可。以后会出现下面内容,直接按回车。_ubuntu安装mysql8.0

echarts柱状图自定义hover上去的显示内容_自定义柱状图悬浮展示内容echarts-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏14次。在option->toottip对象里面加formatter函数,代码如下:注意:参数params是series数组里面的每一个对象,params[i].data是返回具体的数值,如params[0].data依次返回11,22,33,44,55,66,77,88,99,78,78,199详情请查看官方文档:https://www.echartsjs.com/zh/option.html..._自定义柱状图悬浮展示内容echarts

IC基础知识(六)SV中default input #1 output #1的解释_default input #1step-程序员宅基地

文章浏览阅读4.7k次,点赞7次,收藏49次。SV中default input #1 output #1的解释_default input #1step

DataFrame基础知识-程序员宅基地

文章浏览阅读4.2k次,点赞11次,收藏13次。DataFrame:可以看出分布式Row对象的集合,在二维表数据集的每一列都带有名称和类型,这些就是schema(元数据)Select:col:某一列,as:重命名 filter:过滤groupBy() ,对记录进行分组sort排序。,并且可以从很多数据源中创建,如结构化文件、外部数据库、Hive表等数据源。DataFrame提供了两种语法风格,1 DSL风格语法,2 SQL语法风格。DataFrame:除了提供比RDD更丰富的算子外,更重要的特点是。,DataFrame可以完成RDD的绝大多数功能。_dataframe

Linux系统产生随机数/dev/random 和 /dev/urandom_/dev/random 安全随机数-程序员宅基地

文章浏览阅读942次。1. 基本介绍    /dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两个设备的任务,是提供永不为空的随机字节数据流。很多解密程序与安全应用程序(如SSH Keys,SSL Keys等)需要它们提供的随机数据流。  这两个设备的差异在于:/dev/random的random pool依赖于系统中断,因此在系统的中断数不足时,/dev/random设备..._/dev/random 安全随机数

递归最佳实践_递归 翻译字典 最佳实践-程序员宅基地

文章浏览阅读273次。可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了!可能也有一大部分人知道递归,也能看的懂递归,但在实际做题过程中,却不知道怎么使用,有时候还容易被递归给搞晕。也有好几个人来问我有没有快速掌握递归的捷径啊。说实话,哪来那么多捷径啊,不过,我还是想写一篇文章,谈谈我的一些经验,或许,能够给你带来一些帮助..._递归 翻译字典 最佳实践

随便推点

Forecasting at Scale论文------Prophet预测模型-程序员宅基地

文章浏览阅读3.1k次。预测是一项常见的数据科学任务,可帮助组织进行容量规划,目标设置和异常检测。 尽管它很重要,但是要生成可靠的高质量预测仍面临着严峻的挑战,尤其是在存在各种时间序列且具有时间序列建模专业知识的分析师相对较少的情况下。 为了解决这些挑战,描述了一种实用的“大规模”预测方法,该方法将可配置模型与环路分析员绩效分析相结合。论文中提出了一种模块化回归模型,该模型具有可解释的参数,可以由具有分析能力的分析师直观..._forecasting at scale

MonkeyRunner不是内部或外部命令,也不是可运行的程序的两种解决办法_为什么说monkey不是内部程序-程序员宅基地

文章浏览阅读5.6k次,点赞3次,收藏6次。前两天使用monkeyrunner都还是好好的,今天不知道电脑为啥抽风就运行不了报错“monkeyrunner不是内部或外部命令,也不是可运行的程序或批处理文件。”环境变量也没有问题,并没有修改过。研究了一番发现可能跟我用Android Studio把 SDK Tools从 25.1.3 更新到 26.0.2 版本有关系。更新之后 monkeyrunner.bat 文件的路径发生了改变,跑到了too_为什么说monkey不是内部程序

Apollo智能驾驶|apollo8.0新特性讲解-感知框架(2)-程序员宅基地

文章浏览阅读627次,点赞46次,收藏46次。百度Apollo开放平台自上线以来始终保持着创新和高频的自我迭代,从最开始聚焦于基础能力的搭建,走向侧重场景能力的发展,再升级为对平台工程易用性精益求精的追求。12月28日,百度Apollo开放平台面向所有开发者,正式推出了Apollo自动驾驶开放平台的全新升级版本——Apollo 8.0,进一步夯实了平台的易用性,让开发者操作更简单易上手。_apollo8.0

QueryWrapper是什么?-程序员宅基地

文章浏览阅读1.7k次。是 MyBatis-Plus 框架中的一个查询条件构造器,用于构建 SQL 查询的条件。还提供了许多其他的方法来支持各种不同的查询条件,如模糊查询、范围查询、排序等。还有其他更多的方法和功能,可以根据具体的业务需求进行查阅和使用。,你可以通过链式调用方法来设置查询条件,例如使用。你可以根据具体的查询需求,使用适当的。方法来构建查询条件。方法执行查询,并返回结果。方法设置不等于条件等。_querywrapper

QSqlQuery 介绍-程序员宅基地

文章浏览阅读3.9k次。QSqlQuery类参考[sql模块]QSqlQuery类提供了一种执行和操纵SQL语句的方式。 详情请见……#include <qsqlquery.h>被QSqlCursor继承。所有成员函数的列表。公有成员QSqlQuery ( QSqlResult * r )QSqlQuery ( const QString & query = QString::null, QSqlDa..._qsqlquery

推荐一款IDEA插件Grep Console_grepconsole idea社区版2021看不清-程序员宅基地

文章浏览阅读2.0k次。话说,楼主之前9年多用的Java开发工具都是Eclipse,一直用着很不错。不过因为现在公司的小伙伴们大多都是用IDEA,所以逼迫自己一把,开始使用IDEA。真是不用不知道啊,IDEA真的是太好用了。以下我会整理一些IDEA使用的经验。Grep Console解决问题开发阶段,我们会经常看控制台打印的日志。但是不可能一行一行的一直盯着看吧。这时我们肯定会想到搜索功能,搜索后的效果是这个样子..._grepconsole idea社区版2021看不清

推荐文章

热门文章

相关标签