链接: 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链接: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主目录下即可
首先
# 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
#代码说明 我们可以更换不同的配置文件和权重对不同的图片进行检查
#只需我们把要用到的权重文件放到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使用现在流行的深度学习框架,如pytorch,tensorflow等下面以pytorch举例:pytorch和cuda版本对应的网站
安装这里的说明,所下载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,点进红色框进入旧版本
找到要的10.2版本
安照下图进行选择
于是可以看到非常友好的终端代指令下载:
官方教程:简直不要太爽,执行下面命令行,下载对应的安装包
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
安装时
①遇到第一个问题
accept 然后回车
②如下图 不要选择Driver 即他的前面的×要去掉,因为我们之前已经安装了显卡驱动了
注:很多其他博客都说要进入非图形界面安装,笔者就直接终端安装而且成功了,而且屡试不爽,所以就不介绍那种方式了。
完成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
与CUDA不同,我们在下载cuDNN的时候,需要注册账号,填写用途等。这里略去这些步骤。点我去下载。页面如下:
通常而言,我们需要根据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
在darknet文件夹下面打开终端,输入以下命令:
sudo gedit Makefile #如果运行不了自己去找一下绝对路径,找绝对路径的方法上面有提到过,忘记了上去找
打开文件如下,并且设置GUP =1 GUDNN=1 OPENCV=1
保存退出,然后仍然在darknet目录下的终端输入 下面命令行
sudo make clean
然后再make
sudo make
最后用GPU进行图片的检测:
代码跟上面使用CPU测试一样,只是处理过程用到了GPU因为进行了配置
./darknet detect cfg/yolov4.cfg yolov4.weights data/horses.jpg
结果如下:
补充一条关于使用海康威视摄像头针对实时流视频的一个检测的代码
#使用前提,你可以通过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