Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试

Ubuntu18.04部署基于opencv3.4.4 及 darknet框架的YOLOV4 再安装CUDA CUDNN 用GPU跑和训练模型

  • 部署基于opencv3.4.4 及 darknet框架的YOLOV4
    • 一、首先进行OPENCV3.4.4的安装
    • 二、下面需要进行darknet部署和yolov4权重的下载
    • 三、CPU编译,用官方训练好的权重文件进行编译对图片进行识别
    • 安装显卡驱动及检查安装是否成功
    • 安装cuda及检查安装是否成功
      • 安装cudnn及检查安装是否成功
    • 开始GPU的检测

部署基于opencv3.4.4 及 darknet框架的YOLOV4

一、首先进行OPENCV3.4.4的安装

链接: link.
参考下面链接的方法进行安装即可,过程中会遇到一些问题,我做一下总结。
①如果自己之前安装过cv或者这一次安装出现问题需要卸载怎么办:
链接: link.
②参考以上链接到了CMAKE环节是要注意对下面代码的改写

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/zbr/Opencv/opencv-3.4.4/opencv_contrib-3.4.4/modules/ -D BUILD_TIFF=ON .. 

主要是对OPENCV_EXTRA_MODULES_PATH= 后面的绝对路径的修改,特别注意自己下载的安装的OPENCV在哪个文件夹下,为了保险起见,可以手动找到所在文件夹打开然后输出一下代码,直接复制使用

wyl@wyl-H110M-S2:~/opencv/opencv-3.4.4/opencv_contrib-3.4.4/modules$ sudo pwd
/home/wyl/opencv/opencv-3.4.4/opencv_contrib-3.4.4/modules

③编译需要的时间比较久,而且也是错误多发的地方,跟着步骤导入缺少依赖和文件即可,知道上面链接的第五步测试成功即可。

二、下面需要进行darknet部署和yolov4权重的下载

直接给出darknet链接:link.

github地址:https://github.com/AlexeyAB/darknet,手动下载
或者git clone https://github.com/AlexeyAB/darknet.git

关于yolov4权重:下面网盘包含了YOLO所有权重文件,更新到了新版的YOLOV5的权重。
链接:https://pan.baidu.com/s/1Np9ctjJYGazPbpJaDQ9S6A
提取码:zg6p
下载好权重,直接把下载好的yolov4.weights拷贝至darknet主目录下即可

三、CPU编译,用官方训练好的权重文件进行编译对图片进行识别

首先

# cd到darknet目录下
make
或者 #-j8 后面的 8 根据CPU的核数来定。4核就 make -j4
make -j8 

编译完成之后
还是在darknet 目录下

./darknet

出现以下结果即编译成功
在这里插入图片描述
下面开始用CPU进行图片的检测,毕竟我们还没装CUDA和CUDNN

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

假如你要用yolov3检测

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

以下是YOLOV4效果图
Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试_第1张图片

#代码说明 我们可以更换不同的配置文件和权重对不同的图片进行检查
#只需我们把要用到的权重文件放到darknet主目录和配置文件cfg放到/darknet/cfg
#要识别的图片放到data文件夹中,对应修改下面的路径即可
./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg

安装显卡驱动及检查安装是否成功

下面开始进行Cuda的安装,开始之前我们可以手动更换一下源:这里推荐阿里云的源,如果不懂的自行百度。同时要先安装显卡驱动。
换完源后:
更新一下源

sudo apt update

开始安装前再次却一下ubuntu版本:打开终端ctrl+alt+t

cat /proc/version

结果:

wyl@wyl-H110M-S2:~$ cat /proc/version
Linux version 5.4.0-96-generic (buildd@lcy02-amd64-007) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #109~18.04.1-Ubuntu SMP Thu Jan 13 15:06:26 UTC 2022

安装ubuntu-drivers,我们可以通过ubuntu-drivers检测你的NVIDIA显卡型号和推荐的驱动程序的模型。

sudo apt install ubuntu-drivers-common

获得NVIDIA显卡型号和推荐的驱动程序:

ubuntu-drivers devices

结果


wyl@wyl-H110M-S2:~$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001E87sv00001458sd000037B3bc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-470 - distro non-free recommended
driver   : nvidia-driver-460-server - distro non-free
driver   : nvidia-driver-440 - third-party non-free
driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-495 - distro non-free
driver   : nvidia-driver-460 - distro non-free
driver   : nvidia-driver-418-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

可以发现我的推荐 driver : nvidia-driver-470 - distro non-free recommended
这个是推荐的显卡驱动版本 nvidia-driver-470,使用下面代码安装

sudo apt install nvidia-driver-470

备注:Nvidia驱动默认安装OpenGL桌面,然而这又与GNOME桌面冲突,为了系统不宕机,需禁用nvidia的OpenGL。
Linux系统一般默认安装的是开源的nouvea显卡驱动,它与nvidia显卡驱动产生冲突,欲装nvidia必禁nouvea!
禁用nouveau驱动:

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

在弹窗最后加入下面代码:

blacklist nouveau

保存,关闭弹窗;至此,安装完毕,重启

sudo reboot

打开终端检查是否禁用成功,执行下面命令若无输出代表禁用nouveau生效

lsmod | grep nouveau

测试安装是否成功,这会返回你的所有显卡的信息:

nvidia-smi

结果:

wyl@wyl-H110M-S2:~$ nvidia-smi
Fri Jan 14 13:48:45 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.86       Driver Version: 470.86       CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 N/A |                  N/A |
| 30%   26C    P8    N/A /  N/A |    318MiB /  2000MiB |     N/A      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

可以看到这里显卡驱动可以支持的CUDA最高版本是11.4 , 这里,下面我们安装cuda10.2一点压力都没有。

安装cuda及检查安装是否成功

首先我们查案一下什么版本的CUDA使用现在流行的深度学习框架,如pytorch,tensorflow等下面以pytorch举例:pytorch和cuda版本对应的网站
Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试_第2张图片
安装这里的说明,所下载cuda10.2现在对应的是pytorch 1.9.0 torchvision 0.10.0 torchaudio 0.9.0 cudatoolkit10.2。其实现在已经出到pytorch1.11.0了。但是,笔者用着这个旧版也没毛病。

这里,我选择CUDA10.2版本,进入nvidia的CUDA驱动下载页:https://developer.nvidia.com/cuda-downloads,如下图:
一进去他肯定是最新版的如下图11.6,点进红色框进入旧版本
Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试_第3张图片
找到要的10.2版本
Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试_第4张图片
安照下图进行选择
Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试_第5张图片
于是可以看到非常友好的终端代指令下载:
在这里插入图片描述
官方教程:简直不要太爽,执行下面命令行,下载对应的安装包

wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run

下完后再下载的好上面文件的文件夹下打开终端,然后运行安装指令:

sudo sh cuda_10.2.89_440.33.01_linux.run

安装时
①遇到第一个问题
Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试_第6张图片
accept 然后回车
②如下图 不要选择Driver 即他的前面的×要去掉,因为我们之前已经安装了显卡驱动了
Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试_第7张图片
:很多其他博客都说要进入非图形界面安装,笔者就直接终端安装而且成功了,而且屡试不爽,所以就不介绍那种方式了。

完成CUDA安装后,我们需要修改~/.bashrc文件。在终端输入以下命令,然后按回车:

sudo gedit ~/.bashrc

我们需要修改~/.bashrc文件,在弹窗最后插入:

# 第3行的CUDA-10.2需要根据实际版本修改
export CUDA_HOME=/usr/local/cuda 
export PATH=$PATH:$CUDA_HOME/bin 
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存文件,并退出,然后source该文件也就是使修改生效,命令如下:

source ~/.bashrc

最后,在终端测试CUDA是否成功安装,分别按顺序运行以下3条命令:

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

sudo make

./deviceQuery

结果如下,说明成功:

wyl@wyl-H110M-S2:/usr/local/cuda/samples/1_Utilities/deviceQuery$ ./deviceQuery
./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "NVIDIA GeForce RTX 2080"
  CUDA Driver Version / Runtime Version          11.4 / 10.2
  CUDA Capability Major/Minor version number:    7.5
  Total amount of global memory:                 7981 MBytes (8368685056 bytes)
  (46) Multiprocessors, ( 64) CUDA Cores/MP:     2944 CUDA Cores
  GPU Max Clock rate:                            1845 MHz (1.85 GHz)
  Memory Clock rate:                             7000 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 4194304 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
  Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  1024
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 3 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device supports Compute Preemption:            Yes
  Supports Cooperative Kernel Launch:            Yes
  Supports MultiDevice Co-op Kernel Launch:      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 11.4, CUDA Runtime Version = 10.2, NumDevs = 1
Result = PASS

安装cudnn及检查安装是否成功

与CUDA不同,我们在下载cuDNN的时候,需要注册账号,填写用途等。这里略去这些步骤。点我去下载。页面如下:
Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试_第8张图片

通常而言,我们需要根据CUDA的版本来选择cuDNN的下载链接
在上图所示的下载页,点击[Download cuDNN v7.6.5 (November 18th, 2019), for CUDA 10.2],然后,点击[cuDNN Library for Linux],即可获得下载链接,下载的文件为一个.tgz压缩包,进入文件所在位置,例如文件下载在:home/wyl/Downloads,则运行以下命令:
进入所在文件夹

cd home/wyl/Downloads

解压.tgz文件

tar zxvf cudnn-10.2-linux-x64-v7.6.5.32.tgz -C ./

然后根据官网的安装指导:Installing From A Tar File,分别复制以下文件cuda/include/cudnn.h与cuda/lib64/libcudnn*到CUDA Toolkit目录的include/下与lib64/下:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/  
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/  

修改访问权限:

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

最后,在终端查看cuDNN版本:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

结果

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

至此,cudnn 安装完毕
通过以下命令再次确认 CUDA版本


wyl@wyl-H110M-S2:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:24:38_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89

开始GPU的检测

在darknet文件夹下面打开终端,输入以下命令:

sudo gedit Makefile #如果运行不了自己去找一下绝对路径,找绝对路径的方法上面有提到过,忘记了上去找

打开文件如下,并且设置GUP =1 GUDNN=1 OPENCV=1
Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试_第9张图片
保存退出,然后仍然在darknet目录下的终端输入 下面命令行

sudo make clean

然后再make

sudo make

最后用GPU进行图片的检测:
代码跟上面使用CPU测试一样,只是处理过程用到了GPU因为进行了配置

./darknet detect cfg/yolov4.cfg yolov4.weights data/horses.jpg 

结果如下:
Ubuntu18.04安装CUDA10.2 CUDNN7.6.5 部署基于darknet框架的YOLOV4并进行CPU以及GPU测试_第10张图片
补充一条关于使用海康威视摄像头针对实时流视频的一个检测的代码
#使用前提,你可以通过IP地址打开你的摄像头;必须安装上面的步骤正确安装opencv
【ubuntu也可以安装一个clv之后看mp4视频方便】
#摄像头用户名:登录密码@IP地址 这里的冒号 和 @ 不可以丢
#rtsp:// 表示实时流的视频数据,具体可以自行百度
下面代码的中文部分需要自己补充更换

wyl@wyl-H110M-S2:~/darknet$ sudo ./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights rtsp://摄像头用户名:登录密码@IP地址

参考博客:
https://blog.csdn.net/weixin_43541325/article/details/105815355
https://blog.csdn.net/m0_37201243/article/details/103439613
https://blog.csdn.net/ywdll/article/details/103619130

你可能感兴趣的:(深度学习,opencv,计算机视觉,python)