Ubuntu16.04+caffe+CUDA8.0+cuDNN v5+python编译

2023-12-17 21:32

本文主要是介绍Ubuntu16.04+caffe+CUDA8.0+cuDNN v5+python编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Ubuntu16.04+caffe+CUDA8.0+cuDNN v5+python编译

此教程适用于对于刚接触caffe和ubuntu系统的同学,请一步一步耐心地跟着教程走,尽量避免踩坑。对于习惯Windows系统的人来说,接触Ubuntu也算是一种有趣的体验,感受仁爱吧!

1.安装Ubuntu16.04

在Win10系统上装上最新的稳定兼容版本Ubuntu16.04(不是我想踩坑而是14.04上也会有一些坑…),装双系统教程参照如下,亲测有效 安装ubuntu双系统 参照此教程还需注意的是,最好在Windows系统上给ubuntu系统分配内存时,可以给80G或以上(如果有足够的空间,可以按照自己需求分配),在安装ubuntu过程中,安装类型一定要选其他选项,否则将不能进行双系统引导。对空闲空间进行分区时,可以按以下建议,/分区给20~30G,swap分区给16G(两倍物存),/home分区给30~40G,/boot分区给200M,四个分区都选择逻辑分区,并在下拉选项中选择/boot分区作为系统引导,装好后回到windows系统要利用EasyBCD软件设置此分区作为双系统ubuntu引导。
在安装完之后,搜索-软件和更新,更新服务源,我选的阿里的服务器。
如果你是初次接触linux系统或ubuntu系统,建议你在装好Ubuntu系统后不要急着进行下一步,可以了解学习一下linux系统基础和基本指令 linux基础和命令

2.安装NVIDIA显卡驱动

要跑GPU加速必须要先装NVIDIA显卡驱动,而且在我安装之前,屏幕分辨率低的惊人,窗口都已经只能看到一半了,还不能在系统设置-显示里面修改,试了网上的说法还是不行,有看到说可能是显卡驱动的原因,但没太放在心上。网上搜了装NVIDIA显卡的方法没看太懂,最后在搜索-软件和更新,附加驱动中找到了,Ubuntu提供了两种显卡驱动,一个是NVIDIA显卡官方驱动,另一个是第三方NVIDIA的开源驱动nouveau,Ubuntu系统默认驱动是后者,改为前者就好了,然后在命令窗口中输入nvidia-smi会出现gpu清单。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

3.安装CUDA8.0

网上的教程大部分是关于CUDA7.5的,之前看博客找到过CUDA7.5的下载链接,但装CUDA的时候没在NVIDIA官网找到7.5的,只看得到最新版8.0,不过相信NVIDIA肯定会考虑兼容性的,到NVIDIA官网可以下载CUDA8.0,我下载的是离线.deb包进行安装 CUDA8.0下载
官网下载页面给出了安装命令如下图中的Installation instructions:

这里写图片描述

下载完成之后,打开命令行终端,进入到.deb包的下载目录下,依次执行以下命令,其中第一个指令中的.deb包就是自己下载的.deb包名。

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

安装完cuda后必须重启电脑,才能让显卡配置生效!

4.安装cuDNN v5

先说明一下,cuDNN v4是不支持ssd的,并且用v4编译faster r-cnn后测试score时结果不对,faster r-cnn默认是v3,通过替换和修改少量文件即可使用v5,因此在这里强烈建议大家使用v5版本。到NVIDIA官网下载cuDNN,进去要先用邮箱注册一下,填个问卷,很快的。选择cuDNN v5(May 27,2016),for CUDA 8.0下载,官网下载地址: cuDNN v5下载

这里写图片描述

下载之后进入到下载文件所在文件夹,解压,进入cuda文件夹下,并执行相关文件的拷贝:

tar -zxvf cudnn-8.0-linux-x64-v5.0-ga.tgz(或你的版本对应的压缩包)
cd cuda
sudo cp lib64/lib* /usr/local/cuda/lib64/
sudo cp include/cudnn.h usr/local/cuda/include/

然后更新软连接:

cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.5.0.5(或你自己的版本对应的)
sudo ln -sf libcudnn.so.5.0.5 libcudnn.so.5  
sudo ln -sf libcudnn.so.5 libcudnn.so  
sudo ldconfig

5.添加环境变量

编辑计算机文件夹下的/etc/profile(可以在终端使用以下命令行打开):

sudo gedit /etc/profile

在文件末尾加入CUDA环境变量,保存。

PATH=/usr/local/cuda/bin:$PATH
export PATH

保存后在终端执行以下命令使其生效:

source /etc/profile

然后,进入到/etc/ld.so.conf.d/文件夹下,执行以下命令,新建了一个cuda.conf文件

sudo gedit cuda.conf

在文件中写入并保存:

/usr/local/cuda/lib64

保存后使其生效:

sudo ldconfig

6.Build CUDA Sample

进入usr/local/cuda/samples,然后build samples,命令如下:

sudo make all -j44表示采用4核,当然如果你是8核你也可以用8

继续进入到samples/bin/x86_64/linux/release目录下,在终端执行查询命令:

./deviceQuery

如果返回你电脑显卡信息,结尾有Result=PASS,则安装成功,否则,建议重启电脑再尝试查询命令。

7.安装caffe的基本依赖库

首先安装以下软件包括python,不过好像Ubuntu16.04已经自带了。

sudo apt-get install git
sudo apt-get install build-essential
sudo apt-get python

然后安装caffe依赖库,建议一个一个装

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler libatlas-base-dev

8.安装opencv

安装opencv可以选择源码安装和脚本安装,脚本安装OpenCV2.4.10比较方便 opencv安装包下载
下载安装包后,解压后进入Install-OpenCV/Ubuntu/2.4,然后执行脚本文件:

sudo ./opencv2_4_10.sh

编译时间比较长,可以去喝杯咖啡,编译到最后报了几个错,没有理会它,没有影响后面的使用。

9.配置caffe的python环境

先下载caffe-master包,下载后解压,进入caffe-master/python文件夹下,然后在终端执行:caffe-master下载

sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade pip
sudo pip install -r python/requirements.txt

为了后面能够使用python绘制caffe的网络模型等可视化操作,执行:

sudo apt-get install graphviz
sudo pip install pydot

然后

make pycaffe

10.编译caffe

进入到caffe-master文件夹下,复制配置文件,终端执行:

cp Makefile.config.example Makefile.config

打开Makefile.config文件,对以下几点去掉注释并修改:

USE_CUDNN := 1
USE_OPENCV := 1
USE_LMDB := 1
WITH_PYTHON_LAYER := 1

如果只进行以上修改最后编译会报关于hdf5的错,解决方案参照博客 编译caffe时hdf5报错
解决方案如下,首先在Makefile.config文件大概第85行,找到

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

并修改成

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

修改后保存,然后再打开Makefile文件,找到大概第173行

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

并修改成

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

修改完保存,然后在终端caffe目录下执行编译:

make all -j4
make test -j4
make runtest -j4

如果没有报错,那么恭喜你成功了,如果没有成功,请根据报错内容仔细检查整个过程是否有遗漏,或者百度谷歌报错内容来得到解决方案。

11 绘制caffe网络模型

caffe的python目录下有一个draw_net.py是python绘制caffe网络模型的工具。在终端进入caffe的python目录下,执行:

python draw_net.py ../models/bvlc_alexnet/train_val.prototxt alexnet.png

就会在caffe的python生成alexnet网络模型可视化图像alexnet.png。

这里写图片描述

参考链接

http://blog.csdn.net/leo_xu06/article/details/53010900
http://caffe.berkeleyvision.org/install_apt.html

这篇关于Ubuntu16.04+caffe+CUDA8.0+cuDNN v5+python编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/505930

相关文章

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、