ubuntu16.04+yolov3+opencv3.3.0(OpenCV_contrib3.3.0+CUDA8.0)

参考链接:https://www.linuxidc.com/Linux/2016-12/138870.htm

1.安装NVIDIA驱动

1.更新源

sudo apt-get update
sudo apt-get upgrade

2.安装依赖项

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev
sudo apt-get install 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

3.官网下载对应驱动

http://www.nvidia.com/Download/index.aspx?lang=en-us

4.安装驱动准备
终端输入

sudo gedit /etc/modprobe.d/blacklist.conf

在最后一行加上 blacklist nouveau . 这里是将Ubuntu自带的显卡驱动加入黑名单。
在终端输入

sudo update-initramfs -u

重启电脑
5.安装驱动
启动电脑后,首先设置密码,因为登录文字界面需要密码,如果你的账户已经有密码了那就不需要再设置了;

sudo passwd

进入文字界面(Ctrl+Alt+F1~F6),输入命令

sudo service lightdm stop # 关闭图形界面

进入驱动文件所在目录,输入命令(NVIDIA… .run代替驱动名称)

sudo chmod 777 NVIDIA… .run # 添加执行权限
sudo ./NVIDIA… .run -no-x-check -no-nouveau-check -no-opengl-files

完成后,重启电脑,输入指令验证

nvidia-smi

若显示GPU信息,则安装成功,如图
在这里插入图片描述
安装成功之后,放回图形界面:

sudo service lightdm start # 开启图形界面

2.安装cuda8.0+cudnn

1.官网下载驱动
https://developer.nvidia.com/cuda-downloads
官网现在最新驱动是CUDA9.1,我以前也下载的是9.1版本的,但是在编译OpenCV的时候,会出现各种错误,只好作罢。然后又找的8.0版本的,才编译成功。

建议在网上找CUDA8.0的资源。

2.进入CUDA8.0目录,输入命令(cuda_8.0…run代替CUDA软件)

sudo chmod 777 cuda_8.0…run
sudo ./cuda_8.0…run
注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。

3.环境变量配置
打开~/.bashrc文件:

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}}

4.测试CUDA的samples

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery

如果显示一些关于GPU的信息,则说明安装成功,如图:
在这里插入图片描述
5.cudnn
官网下载cuDNN5.1之后进行解压:https://developer.nvidia.com/rdp/form/cudnn-download-survey

sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz 

进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:

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

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

cd ..
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      #生成软链接

3.安装OpenCV3.3.0+contrib3.3.0

参考:【Linux】Ubuntu16.04安装OpenCV3.4.0+OpenCV_contrib3.4.0+CUDA9.0完全教程
去github上下载对应版本的opencv-3.3.0和opencv_contrib.3.3.0,然后解压。
unzip opencv-3.3.0.zip
unzip opencv_contrib.3.3.0.zip -d opencv-3.3.0/
这里发现github下载太忙,所以我直接用百度云盘资源下载,地址如下:
opencv百度云盘资源
opencv_contrib百度云盘资源
将opencv_contrib解压到了opencv-3.3.0目录下。
然后进入opencv目录:

cd opencv-3.3.3
mkdir build
cd build

这里主要说一下不同的配置,主要是要编译CUDA版本的OpenCV,所以在cmake的时候要将开关打开。

cmake -D CMAKE_BUILD_TYPE=RELEASE \
 -D CMAKE_INSTALL_PREFIX=/usr/local \
 -D INSTALL_PYTHON_EXAMPLES=ON \
 -D INSTALL_C_EXAMPLES=ON \
 -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.3.0/modules \
 -D PYTHON3_EXECUTABLE=/usr/bin/python3 \
 -D PYTHON_EXECUTABLE=/usr/bin/python \
 -D WITH_CUDA=ON \
 -D WITH_CUBLAS=ON \
 -D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" \
 -D CUDA_ARCH_BIN="5.3" \
 -D CUDA_ARCH_PTX="" \
 -D WITH_TBB=ON \
 -D WITH_V4L=ON \
 -D WITH_QT=ON \ 
 -D WITH_GTK=ON \
 -D WITH_OPENGL=ON \
 -D BUILD_EXAMPLES=ON \
 -D CUDA_GENERATION=Kepler \
 -D BUILD_TIFF=ON  ..

cmake之后,可以看到cuda模块的都配置成功了。
接下来就执行make了。

make j8

编译完成。
执行安装。

sudo make install

安装完成。
路径设置请参考 Ubuntu16.04 安装OpenCV3.4.3 + contrib

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

在末尾添加如下内容:

/usr/local/lib

保存之后执行:

sudo ldconfig
sudo gedit /etc/bash.bashrc

在末尾添加如下内容:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

source一下,使修改立即生效。

source /etc/bash.bashrc

路径设置好之后用下面的命令查看一下安装结果,如下图:

pkg-config opencv --cflags --libs

在这里插入图片描述
编译一个例子测试一下。

cd ../samples/cpp/example_cmake
cmake .
make

编译成功之后执行:

./opencv_example

效果如下(没截全,不露脸):
在这里插入图片描述

4.yolov3配置

参考:Ubuntu16.04+YOLOv3配置
1.从github上下载darknet,也就是YOLO

git clone https://github.com/pjreddie/darknet.git

2.编译

cd darknet
make

3.运行测试

./darknet

若出现usage: ./darknet ,说明编译成功。
4.下载权重文件:yolov3.weights,链接:https://pjreddie.com/media/files/yolov3.weights
官网速度太慢,可用以下百度云盘
yolov3.weights百度云盘链接:https://pan.baidu.com/s/1nv1cErZeb6s0A5UOhOmZcA
提取码:t7vp
下载好后,将yolov3.weights复制到darknet目录下。
5.CUDA和OpenCV编译
重新编译
安装好CUDA和OpenCV后,修改darknet/Makefile文件:

GPU=1
CUDNN=1
OPENCV=1

重新编译:

make clean
make
遇到的问题以及解决办法:
重新执行:
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

问题1:

./darknet: error while loading shared libraries: libcudart.so.8.0:
cannot open shared object file: No such file or directory

解决方法:

libcudart.so.8.0 不能找到 在/etc/ld.so.conf.d 创建了一个cuda.conf
文件,并加入/usr/local/cuda/lib64 内容,保存退出。 最后执行:sudo ldconfig 使文件生效

问题2:

CUDA Error: out of memory darknet: ./src/cuda.c:36: check_error:
Assertion `0’ failed.

解决方法:
出现这问题的原因就是GPU内存不够大,解决方法就是减小内存的使用:
修改cfg/yolov3.cfg,修改如下:

[net]
# Testing
batch=1					//取消注释
subdivisions=1			//取消注释
# Training				
# batch=64				//添加注释
# subdivisions=16		//添加注释
width=416				//适当减小width
height=416				//适当减小height

之后再运行,就不会出现问题了。在darknet下会生成一张图predictions.jpg,效果如下图:
在这里插入图片描述

发布了2 篇原创文章 · 获赞 1 · 访问量 524
App 阅读领勋章
微信扫码 下载APP
阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览