Linux搭建YOLOv3+OpenCv3+GPU开发环境


操作系统平台:Ubuntu16.04
独立显卡:GeForce 940M
环境配置:NVIDIA驱动+CUDA+cuDNN
在这里插入图片描述

一、安装NVIDIA驱动

安装好双系统后,开启Linux操作系统,安装NVIDIA驱动,首先区Nvidia官网查看适合自己的GPU驱动,我的显卡类型是GeForce 940M,所以选择对应驱动下载
在这里插入图片描述
下载后的驱动安装包为

NVIDIA-Linux-x86_64-440.64.run

run格式文件的安装相对麻烦,首先要禁用nouveau驱动;Nouveau驱动是由第三方为NVIDIA显卡开发的一个开源3D驱动,Ubuntu默认集成了Nouveau驱动,而用户在安装NVIDIA官方私有驱动的时候Nouveau又称为了阻碍,如不禁用Nouveau,安装GPU驱动会报错

禁用Nouveau驱动步骤如下:

1,nouveau禁止命令写入文件

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

在文件末尾添加以下语句:

blacklist nouveau
blacklist lbm‐nouveau
options nouveau modeset=0
alias nouveau off
alias lbm‐nouveau off

在这里插入图片描述

2,调用指令禁止nouveau

echo options nouveau modeset=0 | sudo tee ‐a /etc/modprobe.d/nouveau‐kms.conf

在这里插入图片描述
3,更新内核

sudo apt-get install initramfs-tools  //先安装这个工具
sudo update-initramfs -u

在这里插入图片描述
点击查看解决方法
Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915解决办法
再次执行sudo update-initramfs -u
在这里插入图片描述

4,重启系统

sudo reboot

5,进入tty模式,关闭x server

//进入tty模式
ctrl + alt+ F1

//返回
ctrl + alt+ F7

Linux中的TTY模式

关闭x server

sudo service lightdm stop
sudo init 3

安装NVIDIA驱动

1,切换到NVIDIA安装包指定目录,添加执行权限并进行安装

cd ~/Downloads
chmod +x NVIDIA-Linux-x86_64-440.64.run
sudo sh NVIDIA-Linux-x86_64-440.64.run  -no-x-check -no-nouveau-check --no-opengl-files

参数说明:

-no-x-check:安装驱动时关闭X服务

-no-nouveau-check:安装驱动时禁用nouveau

-no-opengl-files:只安装驱动文件,不安装OpenGL文件

这样再reboot,就不会出现循环登录的问题。

**注:**安装时可能有出错提示,不用理会,继续安装

选择继续安装
在这里插入图片描述
在这里插入图片描述
点击ok
在这里插入图片描述
点击ok
在这里插入图片描述
在这里插入图片描述

2,安装成功后,在图形界面可通过以下命令查看自己机器上详细的GPU信息

nvidia‐settings

在这里插入图片描述

或者输入命令查看
在这里插入图片描述

3,重启系统

sudo reboot

二、安装CUDA

CUDA是VNVIDIA的编程语言平台,要使用GPU就必须要使用CUDA;CUDA安装文件下载

进入官网选择合适的版本
在这里插入图片描述
1,下载安装文件及补丁文件

在这里插入图片描述
下载后的文件如下:

cuda_9.0.176_384.81_linux.run
cuda_9.0.176.1_linux.run
cuda_9.0.176.2_linux.run
cuda_9.0.176.3_linux.run
cuda_9.0.176.4_linux.run

2,进行安装

sudo sh cuda_9.0.176_384.81_linux.run
sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.0.176.2_linux.run
sudo sh cuda_9.0.176.3_linux.run
sudo sh cuda_9.0.176.4_linux.run

在这里插入图片描述
注意: 在安装的时候首先要一直按enter键完成安装文档的阅读,然后选择accept 接下来会出现让你选择是否安装nvidia361驱动,因为前面驱动已经安装好了,所以这里要选择no,不安装默认驱动

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?#就是这里要选择no

在这里插入图片描述

在这里插入图片描述

CUDA工具Linux安装指南

看到出现如下问题,缺少了多个文件

Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so
Missing recommended library: libGL.so

Installing the CUDA Samples in /home/chenhai ...
Copying samples to /home/chenhai/NVIDIA_CUDA-9.0_Samples now...
Finished copying samples.

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-9.0
Samples:  Installed in /home/chenhai, but missing recommended libraries

Please make sure that
 -   PATH includes /usr/local/cuda-9.0/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-9.0/lib64, or, add /usr/local/cuda-9.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-9.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-9.0/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete insallation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run -silent -driver

Logfile is /tmp/cuda_install_3684.log

在Ubuntu 16.04 上安装CUDA 9.0遇到的一个问题以及解决

安装补丁文件:

sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.0.176.2_linux.run
sudo sh cuda_9.0.176.3_linux.run
sudo sh cuda_9.0.176.4_linux.run

3,打开profile文件,添加环境变量

sudo gedit /etc/profile

在尾处添加

export PATH=/usr/local/cuda‐9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda‐9.0/lib64$LD_LIBRARY_PATH

4,重启电脑

sudo reboot

5,测试cuda的samples

cd /home/chenhai/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

在这里插入图片描述
显示有关GPU的信息,则说明安装成功了。

测试cuda也可以通过命令: nvcc -V 查看。输出如下图所示:

 sudo apt install nvidia-cuda-toolkit  //要先安装该工具

在这里插入图片描述
CUDA软件工具版包其他版本下载

三、安装cuDNN

关于CUDA与cuDNN

进入官网下载与CUDA9.0搭配的cuDNN版本,下载cuDNN需要注册一个NIDIA账户
cuDNN 下载网址,官方已经给出了CUDA与cuDNN搭配的建议,注册好账号后,下载与CUDA对应的cuDNN版本
在这里插入图片描述
在这里插入图片描述
解压下载好的压缩包:

tar  -xvf  cudnn-9.0-linux-x64-v7.6.5.32.tgz

解压后是一个cuda目录
在这里插入图片描述

拷贝相关的库文件:

cd cuda
sudo cp include/cudnn.h  /usr/local/cuda/include/
sudo cp lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r  /usr/local/cuda/include/cudnn.h  /usr/local/cuda/lib64/libcudnn*

在这里插入图片描述

删除文件原来的软链接:

cd /usr/local/cuda/lib64
sudo rm libcudnn.so libcudnn.so.7             //删除原来的链接
sudo ln ‐s libcudnn.so.7.4.2 libcudnn.so.7 //生成新的链接
sudo ln ‐s libcudnn.so.7 libcudnn.so
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
sudo ldconfig

四、安装OpenCV

官网下载OpenCv源码包,我下载的是opencv-3.4.4.zip;想要在OpenCV中玩转YOLOv3,必须安装OpenCV3.4.2版本及以上
在这里插入图片描述
注意: opencv版本和opencv_contrib版本一定要对应
https://github.com.opencv
在这里插入图片描述
https://github.com.opencv/opencv_contrib
在这里插入图片描述

1,解压压缩包

unzip  opencv-3.4.4.zip
cd opencv-3.4.4/

安装依赖

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

都装上

	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 
	sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev  #一些图像处理包的依赖
	sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
	sudo apt-get install libxvidcore-dev libx264-dev  #视频处理的依赖
	sudo apt-get install libatlas-base-dev gfortran  #atlas的lib,应该是优化用的
	sudo apt-get install ffmpeg

2,配置编译环境

mkdir build
cd build
cmake  ..

在这里插入图片描述
解决方法: 回到opencv3.4.4目录下,删除CMakeCache.txt
在这里插入图片描述

在执行上述的cmake时可根据自己的电脑配置和安装的opencv版本情况设置命令参数

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.4/modules \
-D PYTHON_EXCUTABLE=/usr/bin/python \
-D WITH_CUDA=ON \ # 使用CUDA
-D WITH_CUBLAS=ON \
-D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" \
-D CUDA_ARCH_BIN="9.0" \ # 这个需要去官网确认使用的GPU所对应的版本
-D CUDA_ARCH_PTX="" \
-D CUDA_FAST_MATH=ON \ # 计算速度更快但是相对不精确
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \ # 如果qt未安装可以删去此行;若因为未正确安装qt导致的Qt5Gui报错,
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D BUILD_EXAMPLES=ON .

设置我的编译命令

cmake -D CMAKE_BUILD_TYPE=RELEASE  \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.4 \
-D INSTALL_PYTHON_EXAMPLES=ON    \
-D INSTALL_C_EXAMPLES=OFF   \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4/modules  \
-D CUDA_GENERATION=Auto \
-D PYTHON_EXCUTABLE=/usr/bin/python  \
-D WITH_TBB=ON \
-D WITH_V4L=ON   \
D WITH_GTK=ON  \
-D WITH_OPENGL=ON   \
-D BUILD_EXAMPLES=ON   ..

cmake -D CMAKE_BUILD_TYPE=RELEASE  \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.4 \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4/modules  \

looking for ccache --not found

sudo apt-get install ccache

No package ‘gtk±3.0’ found

sudo apt-get install libgtk-3-dev
sudo apt-get install gtk3-deve

Looking for linux/videodev.h - not found
Looking for linux/videodev2.h - found

sudo apt-get install libv4l-dev
sudo ln -s /usr/include/libv4l1-videodev.h  /usr/include/linux/videodev.h

Looking for sys/videoio.h - not found

sudo cp /usr/include/opencv2/videoio/videoio_c.h  /usr/include/x86_64-linux-gnu/sys
sudo ln -s /usr/include/x86_64-linux-gnu/sys/videoio_c.h  /usr/include/x86_64-linux-gnu/sys/videoio.h

参考:OpenCV-3编译安装方法及常见错误解决(Ubuntu平台)

No package ‘libavresample’ found

sudo apt-get -y install libavresample-dev
sudo apt-get -y install libgphoto2-dev
-- Checking for modules 'gstreamer-base-1.0;gstreamer-video-1.0;gstreamer-app-1.0;gstreamer-riff-1.0;gstreamer-pbutils-1.0'
--   No package 'gstreamer-base-1.0' found
--   No package 'gstreamer-video-1.0' found
--   No package 'gstreamer-app-1.0' found
--   No package 'gstreamer-riff-1.0' found
--   No package 'gstreamer-pbutils-1.0' found
-- Checking for modules 'gstreamer-base-0.10;gstreamer-video-0.10;gstreamer-app-0.10;gstreamer-riff-0.10;gstreamer-pbutils-0.10'
--   No package 'gstreamer-base-0.10' found
--   No package 'gstreamer-video-0.10' found
--   No package 'gstreamer-app-0.10' found
--   No package 'gstreamer-riff-0.10' found
--   No package 'gstreamer-pbutils-0.10' found

sudo apt-get -y install libgstreamer-plugins-base1.0-dev
sudo apt-get -y install libgstreamer1.0-dev

参考:ubuntu16.04 安装opencv 步骤和错误解决


3,编译安装

make  -j 4
make install

4,添加环境变量,使系统能够找到OpenCv的库路径

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

执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加 /usr/local/lib

执行如下命令使得刚才的配置路径生效

sudo ldconfig

5,配置bash

sudo gedit /etc/bash.bashrc

在最末尾添加

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

保持退出,执行如下命令使得配置生效

source /etc/bash.bashrc

更新

sudo updatedb

没有opencv_contrib的情况下
在这里插入图片描述

参考:
ubuntu16.04+CUDA8.0+GTX1080Ti+yolov3+Opencv3.1.0详细配置

ubuntu16.04下安装OpenCV4

linux 下 opencv_contrib 源代码编译方法

Ubuntu16.04安装Opencv3.4.4+opencv_contrib-3.4.4

Ubuntu16.04安装配置opencv3.4.3+opencv_contrib3.4.3

ubuntu16.04下安装OpenCV4

ubuntu 16.0.4 opencv 4.0.0 + opencv_contrib 4.0.0 cmake-gui 安装

五、安装darknet

darknet官网: https://pjreddie.com/darknet/yolo/

1,下载darknet源码

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

2,编译源码

cd darknet
make

3,下载预训练权重文件

wget https://pjreddie.com/media/files/yolov3.weights

训练权重文件也可以下载tiny版的

wget https://pjreddie.com/media/files/tiny.weights

4,测试运行

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
//或者
./darknet classify cfg/tiny.cfg tiny.weights data/dog.jpg

只用CPU,预测时间较长

使用CUDA和OpenCv进行编译
修改darknet目录下的Makefile

GPU=1
CUDNN=1
OPENCV=1
//前提是GPU,CUDNN,OPENCV都已安装好,才可将其赋值为1

进入darknet目录下,重新编译

cd  darknet
make clean  
make

测试GPU版本的yolo

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

预测时间大大减少

发布了37 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Chen_qi_hai/article/details/104576198
今日推荐