caffe安装系列——综述

2023-05-16

博客新址: http://blog.xuezhisd.top
邮箱:xuezhisd@126.com


说明

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

环境

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

安装步骤

  • 综述
  • 0.准备工作
  • 1.安装GCC4.7和G++4.7并降级
  • 2.安装显卡驱动
  • 3.安装cuda和cudnn
  • 4.安装Matlab
  • 5.安装OpenCV
  • 6.安装Python依赖包
  • 7.安装caffe

介绍

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。

7.安装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主页》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

caffe安装系列——综述 的相关文章

  • 机器人工具箱 V9.10(Robotics Toolbook) (1):建立机器人模型

    机器人学工具箱 xff08 Robotics Toolbook for Matlab 是matlab中专门用于机器人仿真的工具箱 xff0c 在机器人建模 轨迹规划 控制 可视化方面使用非常方便 创建机器人的两个最重要的函数是 xff1a
  • 机器人动力学方程的性质

    一个 n 连杆的机器人的动力学方程含有很多项 特别是全部是转动关节的机械臂 让人看着害怕 但是 机器人动力学方程含有一些有助于开发控制算法的重要性质 其中最重要的是反对称性 无源性 有界性和参数的线性性 反对称性 skew aymmetry
  • LaTEX、 Aurora、 markdown常用数学符号

    在用 LaTEX 的时候 xff0c 公式排版中经常用到各种数学符号 xff0c 平时在编写 word 文档时 xff0c 应用 Aurora 编辑公式时也经常用到 xff0c 就是在CSDN 中用markdwon 编辑公式的时候也要用到
  • 机器人(机械臂)动力学建模方法(Newton-Euler equation)

    牛顿 欧拉公式 xff08 Newton Euler equation xff09 根据中间连杆上的力 力矩平衡关系上推断出来的 它的解具有递归的形式 xff0c 前向递归用于连杆的速度 加速度的传递 xff0c 后向递归用于力的传递 参数
  • 基于重力补偿的 PD 控制

    PD 控制是常规的控制方法 xff0c 设计简单 xff0c 用李雅普诺夫方法证明简单 xff0c 不需要系统的模型 xff0c 是无模型控制中的基本方法 令 q T q T 为系统的状态向量 xff0c 其中 xff1a q 61 q d
  • 矩阵的 Jordan 标准型

    如果把矩阵化成对角矩阵 xff0c 关于矩阵的函数计算问题就会大大简化 但一般的矩阵未必与对角矩阵相似 矩阵的标准型有多重 xff0c Jordan xff08 约当 xff09 标准型是最接近对角矩阵的形式 xff0c 在控制理论中经常用
  • 滑膜控制的基本原理

    滑动模态的定义 人为设定一经过平衡点的相轨迹 xff0c 通过适当设计 xff0c 系统状态点沿着此相轨迹渐近稳定到平衡点 xff0c 或形象地称为滑向平衡点的一种运动 xff0c 滑动模态的 滑动 二字即来源于此 滑模控制的优点 xff1
  • 基于策略的设计 vs 多继承

    基于策略的设计是对多继承的超越 基于策略的设计 xff08 Policy Based Design xff09 包含两个重要的部分 xff1a 策略类 xff08 Policy Classes xff09 和一个具有极大张力的核心 许 多人
  • linux 如何以树形结构显示文件目录结构

    linux 如何以树形结构显示文件目录结构 1 linux 如何显示文件信息 一般可用 ls 命令来查看文件的信息 xff1a ls OPTION FILE 如 xff1a ls 显示所有文件 ls 1 显示所有文件 xff08 按行显示
  • ROS学习(五):package.xml 文件

    package xml 文件 和 manifest 文件类似 xff0c 描述功能包的属性 xff0c 包括功能包的名字 版本号 作者 维护者 通行证 以及所以来的功能包 http wiki ros org catkin package x
  • ROS Gazebo(一):安装与使用

    gazebo 可以主要用来进行机器人动力学的仿真 一 安装和开始 完整安装时已经安装好 xff08 ros kinetic desktop full ros jade desktop full xff0c ros indigo deskto
  • 如何在window系统VS中设置boost编程环境

    在windows系统中设置boost编程非常简单 xff1a 1 下载boost软件包 网址 xff1a http www boost org 最新版 xff1a http www boost org users history versi
  • 个人信用报告机构查询中有:深圳前海微众银行股份有限公司,为什么???

    最近 xff0c 网上各路专家纷纷现身解读新版征信 xff0c 我就查询了一下自己的 xff0c 发现一条被 深圳前海微众银行股份有限公司 查询的记录 xff0c 不理解 xff0c 惊讶带恐慌 随后查询了一下相关的知识 查询报告流程 ht
  • 各种平板显示技术比较

    各种平板显示技术简介 CRT发展历史 CRT xff08 Cathode Ray Tube xff09 即阴极射线管 xff0c 作为成像器件 xff0c 它是实现最早 应用最为广泛的一种显示技术 阴极射线管 xff08 CRT xff09
  • k8s网络与本地开发环境网络互通方案(一)

    现状 k8s集群内是有一套完整网络环境 我们不能直接通过IP访问到k8s集群内的pod 或者service 只能通过nodeport 或者ingress 才能访问到服务 痛点 开发人员进行微服务开发的时候需要通过服务发现进行Pod级服务的直
  • Opencv 3.4 中P3P位姿估计算法解析

    先上图 xff0c Opencv3 4中用两种算法实现P3P位姿估计问题 一种是基于距离P3P算法问题 xff08 算法1 xff1a P3P xff09 xff0c 一种是基于矩阵P3P算法问题 xff08 算法2 xff1a aP3P
  • 套接字

    套接字 socket 套接字 socket 是一个抽象层 应用程序可以通过它发送或接收数据 可对其进行像对文件一样的打开 读写和关闭等操作 套接字允许应用程序将I O插入到网络中 并与网络中的其他应用程序进行通信 网络套接字是IP地址与端口
  • 单片机_PWM输出原理详解

    单片机 PWM输出原理详解 理论篇 博主自己的经历告诉我 xff0c PWM波的理解和应用确实还是挺重要的 xff0c 这里专门花一期详细介绍一下 什么是PWM xff1f PWM xff0c 英文名Pulse Width Modulati
  • 命令远程执行小结

    远程执行命令 xff08 command remote execution xff09 主要可以使用如下几个命令 1 rexec 2 rsh amp rlogin 3 ssh 1 rexec 顾名思义 xff0c 就是remote exec
  • 去除多余的Merge branch提交

    去除多余的Merge branch提交 在项目开发中 xff0c 经常会有这样的情况发生 xff0c 开发完了一个新功能 xff0c 提交到远程仓库时 xff0c 发现提交失败 xff08 其他同事已对其做了更改 xff09 xff0c 先

随机推荐

  • 5 Ways To Fix Slow 802.11n Speed

    http www cnblogs com jjkv3 archive 2012 04 22 2464919 html o you went and bought a shiny new 802 11n router and were all
  • Linux下UTF-8字符编码问题

    这中间选自论坛我份发的帖子 地址是 xff1a http topic csdn net u 20101110 17 cab8cfc9 9ac6 47ce 98b4 e503e75e3e48 html seed 61 1835214465 a
  • Linux IPC总结(全)

    IPC进程间通信 Inter Process Communication 就是指多个进程之间相互通信 xff0c 交换信息的方法 Linux IPC基本上都是从Unix平台上继承而来的 主要包括最初的Unix IPC xff0c Syste
  • Zebra-VTYSH源码分析和改造(序)

    最近公司一网络产品需要在WEB和SNMP的基础上添加CLI接口 本身CLI xff08 Command Line Interface xff09 在产品中借助某芯片有简单ssdk sh xff0c 由于客户要求CLI要想Cisco那样 xf
  • Zebra-VTYSH源码分析和改造(一):Zebra软件架构

    1 Zebra 功能认识 ZEBRA 提供了一个类Cisco命令行的分级多用户命令解析引擎 VTY xff08 Virtual Terminal xff09 它是类似于Linux Shell的虚拟终端接口 xff0c 负责对访问的安全验证
  • 升级WEXT到NL80211/CFG80211

    内容包括 xff1a 1 分析两者的区别 2 分析两者的架构 xff0c 重点在后者 3 如何将在WE架构中用到的standard和private的command在新的架构中实现 请等待
  • 2011,我和CSDN亲密接触的一年

    从CSDN刚刚发出这次征文活动的时候 xff0c 就有一种想参加的冲动 xff0c 总想说些什么 xff0c 迟迟直到今天才开始下笔 和大家一样 xff0c 我也是一名普通的计算机研发人员 xff0c 说挨踢者也行 xff0c 说码农亦可
  • Zebra-VTYSH源码分析和改造(三):添加定制命令

    一 视图介绍 由上面几篇文章分析可见 xff0c 所有的命令都是包含在node中的 xff0c 根据Cisco或者H3常见路由器或者交换机的CLI格式可见 xff0c 一个node就对应着一个视图 xff08 View xff09 常用的视
  • Bringup wifi driver to android 6.0

    1 android root system core rootdir init rc mkdir data misc systemkeys 0700 system system mkdir data misc wifi 0770 wifi
  • global命令详解

    发信人 vale 浅谷 信区 VIM 标 题 global命令详解 发信站 水木社区 Fri Jun 15 17 05 55 2007 站内 global命令是Vim最强大的命令之一 xff08 个人认为是No 1 xff09 xff0c
  • [简单总结] WiFi中的RTS和CTS简单回顾

    通信协议中的RTS CTS协议 xff1a 即请求发送 允许发送协议 xff0c 相当于一种握手协议 xff0c 主要用来解决 34 隐藏终端 34 问题 34 隐藏终端 34 xff08 Hidden Stations xff09 是指
  • 蓝牙技术谈之跳频技术(一)

    跳频技术 Frequency Hopping Spread Spectrum xff1b FHSS 在同步 且同时的情况下 xff0c 接收两端以特定型式的窄频载波来传送讯号 xff0c 对于一个非特定的接收器 xff0c FHSS所产生的
  • Ubuntu自学笔记二

    磁盘管理 dev sd 文件 xff0c 此类文件是磁盘设备文件 xff0c 并不能直接访问磁盘 xff0c 必须要将磁盘挂载到某一个目录下才可以访问 dev sdb和 dev sdb1是U盘的设备文件 xff08 每个人的电脑U盘设备文件
  • 机器视觉设计,如何正确的选择相机和镜头?

    1 相机选择步骤 xff1a 目标物尺码 61 预估实际视场 0 75 根据精度算出分辨率 xff0c 预计出的实际视场 项目要求精度 61 相机的分辨率 根据相机分辨率大小 xff0c 选择合适的相机 xff0c 如果分别率一样的情况下
  • VCC、VDD、VSS以及VBAT的区别

    在STM32 的学习中 xff0c 发现有几种看起来相关的名称 xff0c 分别是VCC VDD VSS VBAT xff0c 在经过搜索查找之后 xff0c 总结如下 xff1a 1 VCC的C是Circuit的意思 xff0c 是指整个
  • vue中单个js写法

    1 vue export default 可以写很多东西 xff0c 包括变量和方法 xff0c 对象等 xff0c 只要是想作为开放的接口都可以写 xff0c 在 vue文件中一般写上data 以及method等 xff0c data指的
  • Ubuntu14.04安装Theano详细教程

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 因为最近需要学习深度学习 xff0c 因此想要配置Theano xff0c 来开发深度学习算法 但是发现Theano安装总是出
  • Ubuntu-安装-cuda7.0-单显卡-超详细教程

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 一 说明 本教程是在台式机上安装的 xff0c 只有一个NVIDIA显卡 操作系统是Ubuntu 14 04 64bit 双显
  • 使用Putty无法远程登录,显示服务器拒绝连接

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com putty连接不到linux的原因总结为以下几种情况 局域网内的两台电脑IP冲突 当使用DHCP自动分配IP时 xff0c 两
  • caffe安装系列——综述

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 说明 网上关于caffe的安装教程非常多 xff0c 但是关于每一步是否操作成功 xff0c 出现了什么样的错误又该如何处理没