• 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 例程序,需要安装相应的依赖库。

    1. sudo apt update # 更新 apt
    2. sudo apt install gcc g++ make # 安装 gcc g++ make
    3. 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 后,屏幕上将输出:

    1. ===========
    2. = Summary =
    3. ===========
    4. Driver: Installed
    5. Toolkit: Installed in /usr/local/cuda-11.7/
    6. Please make sure that
    7. - PATH includes /usr/local/cuda-11.7/bin
    8. - 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
    9. To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.7/bin
    10. To uninstall the NVIDIA Driver, run nvidia-uninstall
    11. Logfile is /var/log/cuda-installer.log

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

    1. export PATH=$PATH:/usr/local/cuda-11.7/bin
    2. # add cuBLAS, cuSPARSE, cuRAND, cuSOLVER, cuFFT to path
    3. 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/下:
    1. sudo cp ./include/cudnn* /usr/local/cuda/include/
    2. sudo cp ./lib64/libcudnn* /usr/local/cuda/lib64/
    •  修改访问权限
    1. sudo chmod 777 /usr/local/cuda/include/cudnn*
    2. sudo chmod 777 /usr/local/cuda/lib64/libcudnn*

     3.Linux下C++版OpenCV安装

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

    2.安装环境依赖 

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

    3.安装

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

    4.环境配置

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

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

    2. 修改bash.bashrc文件

    sudo vi /etc/bash.bashrc 

    3.添加

    1. PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    2. 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”
    
    1. // 增加权限即可
    2. sudo make install

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

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

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

    1. cd /usr/local/lib
    2. sudo mkdir pkgconfig
    3. cd pkgconfig
    4. sudo touch opencv.pc

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

    1. prefix=/usr/local
    2. exec_prefix=${prefix}
    3. includedir=${prefix}/include
    4. libdir=${exec_prefix}/lib
    5. Name: opencv
    6. Description: The opencv library
    7. Version:4.6.0
    8. Cflags: -I${includedir}/opencv4
    9. 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
    10. ~

    然后导入环境变量 

    vi ~/.bashrc

    export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

    至此环境安装完成

    安装训练模型


    1.下载darknet源码

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    3. 第20行的参数max_batches

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

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

    注意:把所有的都改了

    1. [convolutional]
    2. size=1
    3. stride=1
    4. pad=1
    5. filters=xxx #(classes+5)*3=21 这里是(8+5)*3 = 39
    6. activation=linear
    7. [yolo]
    8. mask = 3,4,5
    9. anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319
    10. classes=xxx # 自己的来类别数量
    11. num=6
    12. # 更改filters, classes两处

    注意:把所有的都改了

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

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

    回车 开始训练

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

  • 相关阅读:
    字符串生成二维码并且批量打包下载
    【数据结构与算法】之深入解析“摘樱桃II”的求解思路与算法示例
    【SHELL】推箱子游戏
    WEB日志框架综述
    【正点原子STM32连载】第七章 认识HAL库 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
    航空摄影与正射摄影的区别
    21_pre_access 阶段
    SpringCloud的五大组件简介
    win8和win10下,visual studio 2008 调试出现无响应的卡死问题解决
    若依和芋道
  • 原文地址:https://blog.csdn.net/weixin_41012767/article/details/126846036