Ubuntu16.04环境下安装caffe及运行faster-rcnn 精确详细教程---避坑之作

本文详细记录了在Ubuntu16.04环境下,从零开始搭建Caffe深度学习框架及Faster RCNN目标检测系统的全过程,包括系统配置、依赖库安装、驱动与CUDA/CuDNN设置、OpenCV集成、Caffe编译及Faster RCNN运行等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,感谢前辈们的各种教程的指导(其中有很多坑,版本问题等),我顺利在3天(由于工作,每天3 ,4个小时)。时间内完成caffe系统的搭建并将faster的demo运行成功。主要参靠:

(https://blog.youkuaiyun.com/zoro_lov3/article/details/60581174)这个里面少了必要的依赖库。依赖库所以依赖库的安装主要参考这个博客写的(https://blog.youkuaiyun.com/flygeda/article/details/78638824)。这两个博客为主,其他还有一些,不细细列举了。

首先说一下我的电脑的配置:win10  ubuntu16.04 双系统(win10安装在SSD(C盘),ubuntu16.04装在E盘)。

显卡:1050Ti

一、安装ubuntu16.04

    网上这方面的资料很多,坑相对较少,我这里不在细说。提供Ubuntu镜像官方下载 百度链接:http://pan.baidu.com/s/1o7UgBCu

密码:vr90;

注意:安装ubuntu的主分区空间 /  的大小  40G以上,逻辑分区 /home 的大小40G -60G为宜。主分区小于25G,安装cudnn时,

会出现空间,导致的安装失败。

二、安装NVIDIA驱动,配置cuda,cudnn运行环境

笔者电脑:i7-8  GTX1050ti    选择 cuda8.0+cudnn5.0

1.然后安装相关依赖项

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

保持网络畅通,一般都能安装成功。以后还可能有漏的依赖项,到时候却啥,再安装啥

2.安装NVIDIA驱动

(1)首先,去官网查一下你的电脑适合安装什么样的驱动。(这个很重要,我开始比较懒,网上随便下载的驱动就安装了,结果安装不上,或者安装上了,版本不对应)

  NVIDIA的官网地址:官网查适合自己的GPU驱动(http://www.nvidia.com/Download/index.aspx?lang=en-us)

 

下载驱动之后,在Ubuntu终端,依次输入一下语句安装

sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt-get update

sudo apt-get install nvidia-375 #这里要写自己适合的gpu驱动版本

sudo apt-get install mesa-common-dev sudo apt-get install freeglut3-dev

 

安装结束之后,重启ubuntu。

然后,打开终端  输入 sudo nvidia-smi

若输出gpu信息,则驱动安装成功。

注意:驱动信息中  包括cuda的版本和NVIDIA 的版本

 

2. cuda8.0 安装

(1)CUDA 是NVIDIA的编程语言平台,想使用GPU就必须要使用CUDA。

下载CUDA的官网地址:(https://developer.nvidia.com/cuda-downloads)。下载合适的版本下载

(2)下载之后,更改一下权限; 终端输入:sudo chmod 777 cuda_8.0.44_linux.run

               执行:                 sudo ./cuda_8.0.44_linux.run

注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装NVIDIA驱动的,一定要选择否。因为前面我们已经安装了更加新的驱动了,所以这里不要选择安装。其余的都直接默认或者选择是否即可

(3)环境变量配置

  直接终端输入:sudo   gedit   ~./.bashrc  将以下内容写入到~./.bashrc的尾部:

  export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

  export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

然后设置环境变量和动态链接库,在命令行输入:

sudo gedit /etc/profile

在打开的文件末尾加入

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

保存后,创建链接文件

sudo gedit /etc/ld.so.conf.d/cuda.conf

在打开的文件中添加如下语句

/usr/local/cuda/lib64

然后执行

sudo ldconfig

 使链接生效

安装完成后测试一下cuda的samples。

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

sudo ./deviceQuery

若列出gpu信息则安装成功。

 

3.cudnn安装

cuDNN是GPU加速计算深层神经网络的库。

首先,官网下载(https://developer.nvidia.com/rdp/cudnn-download)下载的时候需要注册账号。选择对应你cuda版本的cudnn下载。这里我下载的是cudnn5.1,是个压缩文件(.tgz)。建议在网上找有人已经下载好的,只要版本对就没问题

下载完cudnn5.0之后,进行解压,cd到cudnn5.1解压之后的include目录,在命令行进行如下操作:

sudo cp cudnn.h /usr/local/cuda/include/    #复制头文件

再将cd进入lib64目录下的动态文件进行复制和链接:

sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5    #删除原有动态文件
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5  #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so      #生成软链接

4.安装opencv3.2

官网下载地址:(http://opencv.org/downloads.html)下载Opencv,并将其解压到你要安装的位置,假设解压到了

/home/opencv。

首先安装依赖项

sudo apt-get install build-essential

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
 

 

安装前准备,创建编译文件夹:

cd ~/opencv 
 mkdir build 
 cd build 

配置:

sudo apt install cmake 
  sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. 

cmake成功后,会出现如下结果,提示配置和生成成功:

-- Configuring done
-- Generating done
-- Build files have been written to: /home/ise/software/opencv-3.1.0/build

 

编译:

sudo make -j8

-j8表示并行计算,根据自己电脑的配置,配置比较低的电脑可以将数字改小或不使用,直接输make。

到此,opencv编译成功,但是并没有安装到我们的系统中,有很多的设置都没有写入到系统中,因此还要进行install.

sudo make install

sudo make install
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

可能会出现这样的错误

modules/cudalegacy/src/graphcuts.cpp:120:54: error:

‘NppiGraphcutState’ has not been declared

typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppState, Npp8u* pDeviceMem);
 

这是因为opencv3.0与cuda8.0不兼容导致的:解决方法

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) //对这一行进行修改

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION>=8000) //改为这样

注意:出现错误时,网上搜一下,可能是依赖项未安装的问题,权限的问题

以上就是pencv3.2的安装

5.caffe安装  重头戏

(1)一如既往,首先安装依赖项

sudo apt-get update

sudo apt-get install -y build-essential cmake git pkg-config

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install -y libatlas-base-dev

sudo apt-get install -y--no-install-recommends libboost-all-dev

sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get install -y python-pip

sudo apt-get install -y python-dev

sudo apt-get install -y python-numpy python-scipy 

(2)将终端cd到你要安装的caffe的位置,执行如下命令,从github上clone caffe。

git clone https://github.com/BVLC/caffe.git //从github上git caffe

cd caffe

sudo cp Makefile.config.example Makefile.config //将Makefile.config.example的内容复制到Makefile.config //因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子

sudo gedit Makefile.config //打开Makefile.config文件

打开之后修改如下内容:

//若使用cudnn,则将# USE_CUDNN := 1 修改成: USE_CUDNN := 1

//若使用的opencv版本是3的,则将# OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3 /

/若要使用python来编写layer,则需要将# WITH_PYTHON_LAYER := 1 修改为 WITH_PYTHON_LAYER := 1

//重要的一项 将# Whatever else you find you need goes here.

下面的 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

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

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

//这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径

打开makefile文件:

将
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

编辑/usr/local/cuda/include/host_config.h,将其中的第115行注释掉:

#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

注释掉

//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

最后

make all -j8
make runtest
make pycaffe

如果没有报错那么就安装成功了。
在成功编译caffe的源码之后,可以在python环境中使用caffe。
在Ubuntu环境下,打开python解释程序,输入import caffe时:出现以下错误

>>>import caffe

Traceback (most recent call last): File "<stdin>", line 1, in

<module>  ImportError: No module named caffe  

这个是caffe路径问题

解决方法:

打开~/.bashrc

sudo gedit ~/.bashrc

在文件下方写入

export PYTHONPATH=~/caffe/python

关闭文件,在终端写入下面语句,使环境变量生效

source ~/.bashrc

以上的方法,我试了,没有解决问题。

然后我执行下面的命令就OK了

 

进入python

输入:caffe_root='.../.../caffe/'    (这就是caffe的安装路径我的是 /home/caffe/caffe/,因为我在caffe文件夹下载的caffe。)

在输入:import sys

在输入:sys.path.insert(0,caffe_root+'python')

import caffe

这样就没有错误了;

 

6. faster rcnn安装与运行

 (1)下载代码,前面要加sudo

git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git

  (2)生成Cython模块

cd py-faster-rcnn/lib
make

 (3)生成caffe和pycaffe

cd py-faster-rcnn/caffe-fast-rcnn
cp Makefile.config.example Makefile.config

打开Makefile.config,修改方式和caffe中的修改方式一样。
打开Makefile文件,也按照caffe中的方式进行修改。

编译

make -j8 && make pycaffe

这里可能会出现权限问题的失败。建议  sudo su,然后在make -j8 && make pycaffe

如果  需要注意的是,因为这个版本所用的cudnn为旧版本的,可能与新环境的cudnn不兼容,导致出现如下错误:

In file included from ./include/caffe/util/cudnn.hpp:5:0,

from ./include/caffe/util/device_alternate.hpp:40,

from ./include/caffe/common.hpp:19,

from ./include/caffe/util/db.hpp:6,

from src/caffe/util/db.cpp:1:

/usr/local/cuda/include/cudnn.h:803:27: note: declared here

cudnnStatus_t CUDNNWINAPI cudnnSetPooling2dDescriptor( ^ make: *** [.build_release/src/caffe/util/db.o] Error 1 

解决方法:

1).将/py-faster-rcnn/caffe-fast-rcnn/include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp.

2).将/py-faster-rcnn/caffe-fast-rcnn/src/caffe/layer里的,所有以cudnn开头的文件都替换成最新版的caffe里的相应的同名文件。

4.下载模型文件

cd py-faster-rcnn/data/scripts
gedit fetch_faster_rcnn_models.sh

复制其中的URL地址(http://www.cs.berkeley.edu/~rbg/faster-rcnn-data),打开下载faster_rcnn_models.tgz文件。我在windows系统下用迅雷下的,ubuntu里下载速度太慢了……

//下载不可成功。建议百度下载人家下载好的

下载后

cd py-faster-rcnn/data

把文件放在这里,并解压

tar zxvf faster_rcnn_models.tgz -C ./

运行demo

cd py-faster-rcnn/tools  
./tools/demo.py

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值