linux下部署darknet

1.安装NVIDIA Driver 和 CUDA Toolkit

首先检查系统是否有支持 CUDA 编程的 GPU。可使用

lspci | grep -i nvidia

命令来查看当前系统的 GPU 型号。

传统上,安装 NVIDIA Driver 和 CUDA Toolkit 的步骤是分开的,但实际上我们可以直接安装 CUDA Toolkit,系统将自动安装与其版本匹配的 NVIDIA Driver。下面我们讲述安装 CUDA Toolkit 的方法。

在安装 CUDA Toolkit 前,要确保系统安装了 gcc 和 make。如果希望使用 C++ 进行 CUDA 编程,需要安装 g++。如果想要运行 CUDA 例程序,需要安装相应的依赖库。

sudo apt update # 更新 apt
sudo apt install gcc g++ make # 安装 gcc g++ make
sudo apt install libglu1-mesa libxi-dev libxmu-dev libglu1-mesa-dev freeglut3-dev # 安装依赖库

CUDA Toolkit 11.7 Update 1 Downloads | NVIDIA Developer 的下载页面选择系统版本和安装方式,下载并运行 runfile。

 下载 CUDA Toolkit (文件较大):

wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run

然后运行安装,选项直接默认就行

sudo sh cuda_11.7.1_515.65.01_linux.run

安装好 CUDA Toolkit 后,屏幕上将输出:

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

Driver:   Installed
Toolkit:  Installed in /usr/local/cuda-11.7/

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

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.7/bin
To uninstall the NVIDIA Driver, run nvidia-uninstall
Logfile is /var/log/cuda-installer.log

这表示 NVIDIA Driver 和 CUDA Toolkit 已安装完毕。后半段安装信息提示我们修改环境变量 PATH 和 LD_LIBRARY_PATH. 在 ~/.bashrc 文件中写入

export PATH=$PATH:/usr/local/cuda-11.7/bin
# add cuBLAS, cuSPARSE, cuRAND, cuSOLVER, cuFFT to path
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.7/lib64:/usr/lib/x86_64-linux-gnu

即可完成 CUDA 的配置。

注意事项:

1. 环境变量 PATH 设置可执行程序的搜索路径,LD_LIBRARY_PATH 设置动态链接库的搜索路径

2. CUDA, cuRAND 等动态库均位于 /usr/local/cuda-11.7/lib64 路径中。在 CUDA 10.0 以前,cuBLAS 也位于此路径下,但在 CUDA 11.7 中,cuBLAS 被迁移到了 /usr/lib/x86_64-linux-gnu 中。

2.linux安装cuDNN

1.下载

注意:

①下载cuDNN时,需要注册账号

②根据CUDA的版本来选择cuDNN版本

2.安装

  • 进入文件所在位置,运行一下命令解压文件到当前目录
  • 分别复制一下文件cuda/include/cudnn*与cuda/lib64/libcudnn*到CUDA Toolkit目录的include/下与lib64/下:
sudo cp ./include/cudnn* /usr/local/cuda/include/  
sudo cp ./lib64/libcudnn* /usr/local/cuda/lib64/  
  •  修改访问权限
sudo chmod 777  /usr/local/cuda/include/cudnn*
sudo chmod 777 /usr/local/cuda/lib64/libcudnn*

 3.Linux下C++版OpenCV安装

1.下载opencvReleases - OpenCVopencv源代码压缩包

2.安装环境依赖 

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

3.安装

  1. cd到opencv目录下进行解压
  2. 创建build文件夹
  3. 编译opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8
make install

4.环境配置

  1. 用vi打开/etc/ld.so.conf
   在文件中加上一行include /usr/local/lib

sudo vi /etc/ld.so.conf
#在文件中加入一行include  /usr/local/lib
#然后执行:
sudo ldconfig

2. 修改bash.bashrc文件

sudo vi /etc/bash.bashrc 

3.添加

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

4.source

source /etc/bash.bashrc

查看是否安装成功

显示版本号即安装成功

pkg-config opencv --modversion

遇到错误

1.make install 时遇到

CMake Error at cmake_install.cmake:41 (file): file INSTALL cannot copy file “/home/wsb/gflags”
// 增加权限即可
sudo make install

2.查看版本 或者输入以下报错时

pkg-config --cflags opencv
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found

是缺失了opencv.pc这个配置信息文件,故解决方法就是添加这个文件然后将其导入到环境变量中,具体操作如下:

cd /usr/local/lib
sudo mkdir pkgconfig
cd pkgconfig
sudo touch opencv.pc

写入以下信息 注意opencv版本号

prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv
Description: The opencv library
Version:4.6.0
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_stitching -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core
~                                               

然后导入环境变量 

vi ~/.bashrc

export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

至此环境安装完成

安装训练模型


1.下载darknet源码

https://github.com/AlexeyAB/darknet.git

2.修改makefile,如下图将部分为0的修改为1 

GPU=1     	# 使用GPU
CUDNN=1		# 使用GPU
CUDNN_HALF=1		# 混合精度训练,用于加速
OPENCV=1		# 使用opencv
AVX=0
OPENMP=0
LIBSO=1		# 生成libdarknet.so,便于python调用darknet模型
ZED_CAMERA=0
ZED_CAMERA_v2_8=0

注意: 如果要用python调用darknet模型接口的话 一定把 LIBSO 设为1

上述步骤完成后
在darknet目录下执行make进行编译

训练自己的权重文件
用Yolov4-tiny来进行训练,则需要下载Yolov4-tiny的预训练权重:yolov4-tiny预训练权重
并放在darknet目录下

之后建立yolov4-tiny训练所需的目录结构

---darknet
    ---VOC2007
		---Annotations	# 存放xml文件
		---ImageSets
			---Main		# 存放训练集和测试集图片索引号的txt文件
			    ---test.txt # 存放测试集图片的路径
				---train.txt # 存放训练集图片的路径
		---JPEGImages	# 存放图片文件
		---labels
			---***.txt   #存放训练集和测试集的标注信息(如:0 0.002221 0.002221 0.002221 0.002221),***与照片名字相同
			---***.txt   #存放训练集和测试集的标注信息(如:0 0.002221 0.002221 0.002221 0.002221),***与照片名字相同
			---  #n多个,与图片数量相同

之后,修改训练所需文件(有**.names, **.cfg, **.data三个文件)
修改 **.names
在 darknet/data/目录下 建立 **.names
参考coco.names,更改自己的.names文件

# 存放自己的类别,这里的类别是“1 2 3 4 5 6 7 8 ”
1 
2
3
4
5
6
7
8
classes= 1
train  = /darknet/voc2007/ImageSets/Main/number_train.txt
valid  = /darknet/voc2007/ImageSets/Main/number_text.txt
names = /darknet/data/**.names
backup = /darknet/backup/ #训练时生成的权重文件

修改 **.cfg
在 darknet/cfg/目录下 建立 **.cfg
参考yolov4-tiny.cfg,更改自己的mos-yolov4-tiny.cfg文件

1. mos-yolov4-tiny.cfg文件第1-7行

[net]
#Testing
#batch=1
#subdivisions=1
#Training
batch=64
subdivisions=16
# 注意:由于是进行训练,这里不需要修改。训练过程中可能出现
# CUDA out of memory的提示,可将这里的subdivisions增
# 大,如32或64,但是数值越大耗时越长,因此需要权衡一下;

2. mos-yolov4-tiny.cfg文件第8-9行

width=224
height=224
# 可以写别的大小,比例是1:1 
# 但是这里的数值必须是32的倍数,
# 这里也是数值越大耗时越长;

3. 第20行的参数max_batches

max_batches = 16000  #max_batches = classes*2000 也有写 max_batches = classes*1000,这里写的是8*2000
policy=steps
steps=12800,14400   # steps=max_batches*0.8, max_batches*0.9
scales=.1,.1
# 更改max_batches, steps两处

4. 继续修改mos-yolov4-tiny.cfg文件,按Ctrl+F键,搜索“classes”,将classes=80改为classes=xxx,并将classes前面最近的filters修改为xxx,计算由来(classes+5)*3=xxxx;

注意:把所有的都改了

[convolutional]
size=1
stride=1
pad=1
filters=xxx  #(classes+5)*3=21 这里是(8+5)*3 = 39
activation=linear

[yolo]
mask = 3,4,5
anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319
classes=xxx  # 自己的来类别数量
num=6
# 更改filters, classes两处

注意:把所有的都改了

最后:打开终端,切换到darknet目录下
使用

./darknet detector train cfg/coco.data cfg/mos-yolov4-tiny.cfg yolov4-tiny.conv.29 -gpu '0'

回车 开始训练

训练的过程中,生成的权重文件会存放在/darknet/backup文件夹下

安装Darknet需要以下步骤: 1. 安装依赖项 在Linux系统上安装Darknet需要安装OpenCV、CUDA、cuDNN和GPU驱动程序等依赖项。你可以使用以下命令安装这些依赖项: ``` sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential cmake git libopencv-dev libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev libopenblas-dev liblapack-dev liblapacke-dev libeigen3-dev libhdf5-dev libprotobuf-dev protobuf-compiler libgoogle-glog-dev libgflags-dev liblmdb-dev libsnappy-dev libprotobuf-dev ``` 2. 下载Darknet 使用以下命令从GitHub上下载最新版本的Darknet: ``` git clone https://github.com/AlexeyAB/darknet.git ``` 3. 编译Darknet 进入下载的Darknet目录并使用以下命令编译它: ``` cd darknet make ``` 如果你的系统上有GPU,使用以下命令编译Darknet: ``` make GPU=1 ``` 4. 测试安装 编译完成后,你可以使用以下命令测试Darknet是否已安装成功: ``` ./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg ``` 以上命令将使用YOLOv3模型检测一张狗的图片。 如果一切正常,你应该能够看到如下输出: ``` layer filters size input output 0 conv 32 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BFLOPs 1 max 2 x 2 / 2 416 x 416 x 32 -> 208 x 208 x 32 ... Loading weights from yolov3.weights...Done! data/dog.jpg: Predicted in 0.024282 seconds. dog: 99% car: 92% bicycle: 95% ``` 这意味着Darknet已经安装成功了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y_Hungry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值