项目简介
本项目是基于Darknet框架实现的YOLO(You Only Look Once)物体检测系统,支持YOLO v4、v3和v2版本,可在Windows和Linux系统上运行。利用神经网络进行物体检测,在MS COCO等数据集上取得优异效果,具有高准确性和实时性,还提供多种预训练模型,方便用户快速部署和定制化训练。
项目的主要特性和功能
- 支持YOLO v4、v3和v2,用户可按需选择模型版本。
- 可在Windows和Linux系统上编译运行。
- 提供多种预训练模型,包括不同配置文件和对应权重文件,适用于不同数据集和场景。
- 通过融合卷积层和批归一化层、利用Tensor Cores加速检测等技术手段优化模型性能。
- 支持多GPU训练,提高训练效率。
- 用户可根据自身数据集进行自定义训练,检测自定义物体。
- 支持在TensorFlow、OpenCV - dnn、Intel OpenVINO等多种框架中使用YOLO v4。
- 提供mixup、cutmix、mosaic等多种数据增强方法,提高模型泛化能力。
- 支持计算mAP、F1、IoU、Precision - Recall等评估指标。
- 可作为JSON和MJPEG服务器,通过网络在线获取检测结果。
安装使用步骤
安装依赖
- 操作系统:Windows或Linux
- CMake:版本 >= 3.12,下载地址:https://cmake.org/download/
- CUDA:版本 >= 10.0,下载地址:https://developer.nvidia.com/cuda-toolkit-archive
- OpenCV:版本 >= 2.4,可使用包管理器安装、从源码构建或从官方网站下载。
- cuDNN:版本 >= 7.0,下载地址:https://developer.nvidia.com/rdp/cudnn-archive
- GPU:计算能力(CC) >= 3.0
- 编译器:Linux系统使用GCC或Clang,Windows系统使用MSVC 2017/2019
编译项目
Linux/macOS(使用CMake)
在复制的仓库中打开终端,运行以下命令:
bash
./build.sh
Linux(使用make)
在darknet目录下执行make
命令。执行前可在Makefile
中设置以下选项:
- GPU=1
:使用CUDA加速,需将CUDA安装在/usr/local/cuda
。
- CUDNN=1
:使用cuDNN加速训练,需将cuDNN安装在/usr/local/cudnn
。
- CUDNN_HALF=1
:为Tensor Cores构建,可加速检测和训练。
- OPENCV=1
:使用OpenCV,支持视频文件和网络摄像头的检测。
- DEBUG=1
:构建调试版本。
- OPENMP=1
:使用OpenMP支持,通过多核CPU加速。
- LIBSO=1
:构建共享库darknet.so
和可执行文件uselib
。
- ZED_CAMERA=1
:构建支持ZED - 3D相机的库。
Windows(使用CMake)
- 安装Visual Studio 2017或2019。
- 安装CUDA(至少v10.0),并在安装过程中启用VS集成。
- 打开Powershell,执行以下命令:
PowerShell PS Code\> cd vcpkg PS Code\vcpkg> $env:VCPKG_ROOT=$PWD PS Code\vcpkg> .\bootstrap-vcpkg.bat PS Code\vcpkg> .\vcpkg install darknet[full]:x64-windows #replace with darknet[opencv-base,cuda,cudnn]:x64-windows for a quicker install of dependencies PS Code\vcpkg> cd .. PS Code\> cd darknet PS Code\darknet> .\build.ps1
使用预训练模型进行检测
在Linux上使用./darknet
,在Windows上使用darknet.exe
。以下是一些使用示例:
- Yolo v4 COCO - 图像:darknet.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25
- Yolo v4 COCO - 视频:darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4
- Yolo v4 COCO - WebCam 0:darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -c 0
自定义训练
- 下载预训练权重:根据要使用的配置文件,下载相应的预训练权重文件。
- 创建配置文件:创建
yolo-obj.cfg
文件,根据需要修改相关参数,如batch
、subdivisions
、max_batches
等。 - 创建名称文件:在
build\darknet\x64\data\
目录下创建obj.names
文件,列出要检测的对象名称。 - 创建数据文件:在
build\darknet\x64\data\
目录下创建obj.data
文件,指定类别数、训练集和验证集文件路径等。 - 创建训练文件:在
build\darknet\x64\data\
目录下创建train.txt
文件,列出训练图像的文件名。 - 开始训练:使用以下命令开始训练:
bash darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137
停止训练
通常每个类别训练2000次迭代,但总迭代次数不少于训练图像数且不少于6000次。当平均损失0.xxxxxx avg
不再下降时,可停止训练。也可以使用-map
标志进行训练,当mAP不再增加时停止训练。停止训练后,选择darknet\build\darknet\x64\backup
目录下mAP最高的权重文件用于检测。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】