暗网目标检测框架和 YOLO
Darknet 是一个用 C、C++ 和 CUDA 编写的开源神经网络框架。 YOLO(You Only Look Once)是一种在 Darknet 框架内运行的最先进的实时对象检测系统。
了解 Hank.ai 如何帮助 Darknet/YOLO 社区
宣布暗网 V3“爵士乐”
请参阅 Darknet/YOLO 网站
请仔细阅读 Darknet/YOLO 常见问题解答
加入 Darknet/YOLO Discord 服务器
文件
1.论文YOLOv7
2. 纸尺度-YOLOv4
3.论文YOLOv4
4.论文YOLOv3
一般信息
Darknet/YOLO 框架仍然比其他框架和 YOLO 版本更快、更准确。该框架是完全免费且开源的。您可以将 Darknet/YOLO 整合到现有项目和产品中,包括商业项目和产品,而无需许可或支付费用。
Darknet V3(“Jazz”)于 2024 年 10 月发布,使用 NVIDIA RTX 3090 GPU 时,可以以高达 1000 FPS 的速度准确运行乐高数据集视频,这意味着每个视频帧都由 Darknet/YOLO 在 1 时间内读取、调整大小和处理。毫秒或更短。
如果您需要帮助或想要讨论 Darknet/YOLO,请加入 Darknet/YOLO Discord 服务器:https://discord.gg/zSq8rtW
Darknet/YOLO 的 CPU 版本可以在简单的设备上运行,例如 Raspberry Pi、云和 Colab 服务器、台式机、笔记本电脑和高端训练设备。 Darknet/YOLO 的 GPU 版本需要 NVIDIA 提供的支持 CUDA 的 GPU。
众所周知,Darknet/YOLO 可在 Linux、Windows 和 Mac 上运行。请参阅下面的搭建说明。
暗网版本
1. Joseph Redmon 在 2013-2017 年编写的原始 Darknet 工具没有版本号。我们认为这个版本是 0.x。
2. Alexey Bochkovskiy 在 2017-2021 年间维护的下一个流行的 Darknet 存储库也没有版本号。我们认为这个版本是 1.x。
3. 从 2023 年开始,由 Hank.ai 赞助并由 Stéphane Charette 维护的 Darknet 存储库是第一个带有版本命令的存储库。从 2023 年到 2024 年底,它返回了版本 2.x“OAK”。
目标是在熟悉代码库的同时尝试尽可能少地破坏现有功能。进行了以下更改:
重新编写了构建步骤,以便我们有 1 种统一的方式在 Windows 和 Linux 上使用 CMake 进行构建。
将代码库转换为使用 C++ 编译器。
训练时增强了chart.png。
错误修复和与性能相关的优化,主要与减少训练网络所需的时间有关。
该代码库的最后一个分支是 v2 分支中的版本 2.1。
下一阶段的开发于 2024 年中期开始,并于 2024 年 10 月发布。版本命令现在返回 3.x“JAZZ”。
如果您需要运行这些命令之一,您始终可以签出之前的 v2 分支。请告诉我们,以便我们研究添加回所有丢失的命令。
删除了许多旧的和未维护的命令。
在训练和推理过程中进行了许多性能优化。
修改了旧版 C API;使用原始 Darknet API 的应用程序需要进行少量修改:https://darknetcv.ai/api/api.html
新的 Darknet V3 C 和 C++ API:https://darknetcv.ai/api/api.html
src-examples 中的新应用程序和示例代码:https://darknetcv.ai/api/files.html
MSCOCO 预训练权重
为了方便起见,YOLO 的几个流行版本在 MSCOCO 数据集上进行了预训练。该数据集有 80 个类,可以在文本文件 cfg/coco.names 中看到。
还有其他几个更简单的数据集和预训练权重可用于测试 Darknet/YOLO,例如 LEGO Gears 和 Rolodex。有关详细信息,请参阅 Darknet/YOLO 常见问题解答。
MSCOCO 预训练权重可以从几个不同的位置下载,也可以从此存储库下载:
1.YOLOv2,2016 年 11 月
- YOLOv2-微小
- YOLOv2-full
2.YOLOv3,2018 年 5 月
- YOLOv3-微小
- YOLOv3-full
3.YOLOv4,2020 年 5 月
- YOLOv4-小
- YOLOv4-full
4.YOLOv7,2022 年 8 月
- YOLOv7-小
- YOLOv7-full
MSCOCO 预训练权重仅用于演示目的。 MSCOCO 相应的 .cfg 和 .names 文件位于 cfg 目录中。命令示例:
`bash
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights
darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
`
请注意,人们应该训练自己的网络。 MSCOCO 通常用于确认一切正常工作。
建筑
过去(2023 年之前)可用的各种构建方法已合并为一个统一的解决方案。 Darknet 需要 C++17 或更高版本、OpenCV,并使用 CMake 生成必要的项目文件。
您不需要了解 C++ 来构建、安装或运行 Darknet/YOLO,就像您不需要成为机械师来驾驶汽车一样。
如果您遵循具有更复杂构建步骤的旧教程,或者构建步骤与本自述文件中的内容不匹配,请注意。如下所述的新构建步骤于 2023 年 8 月开始。
我们鼓励软件开发人员访问 https://darknetcv.ai/ 以获取有关 Darknet/YOLO 对象检测框架内部的信息。
谷歌合作实验室
Google Colab 指令与 Linux 指令相同。有多个 Jupyter 笔记本可以展示如何执行某些任务,例如训练新网络。
请参阅 colab 子目录中的笔记本,和/或按照下面的 Linux 说明进行操作。
Linux CMake方法
1.安装先决条件:
`bash
sudo apt-get install build-essential git libopencv-dev cmake
`
2.克隆暗网存储库:
`bash
mkdir ~/srccd ~/src
git 克隆 https://github.com/hank-ai/darknetcd darknet
`
3. 创建构建目录:
`bash
mkdir buildcd build
`
4.配置和构建暗网:
`bash
cmake -DCMAKEBUILDTYPE=发布 ..
使-j4
`
5. 安装软件包:
`bash
包裹
sudo dpkg -i darknet-VERSION.deb
`
可选:如果您有现代 NVIDIA GPU,则此时可以安装 CUDA 或 CUDA+cuDNN。如果安装,Darknet 将使用您的 GPU 来加速图像(和视频)处理。
您必须从 Darknet 构建目录中删除 CMakeCache.txt 文件,以强制 CMake 重新查找所有必需的文件。记得重建暗网。
Darknet 可以在没有它的情况下运行,但如果您想训练自定义网络,则需要 CUDA 或 CUDA+cuDNN。
访问 https://developer.nvidia.com/cuda-downloads 下载并安装 CUDA。
访问 https://developer.nvidia.com/rdp/cudnn-download 或 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview 下载并安装 cuDNN。
安装 CUDA 后,请确保可以运行 nvcc 和 nvidia-smi。您可能必须修改 PATH 变量。
如果您稍后安装 CUDA 或 CUDA+cuDNN,或者升级到较新版本的 NVIDIA 软件,请按照以下步骤操作:
这些说明假设(但不要求!)系统运行 Ubuntu 22.04。如果您使用不同的发行版,请根据需要进行调整。
您需要先升级 CMake,然后才能运行上面的 cmake 命令。可以使用以下命令在 Ubuntu 上升级 CMake:
`bash
sudo apt-get purge cmake
sudo snap install cmake --经典
`
如果使用 bash 作为命令 shell,此时您需要重新启动 shell。如果使用鱼,它应该立即选择新路径。
高级用户:
如果您想要构建 RPM 安装文件而不是 DEB 文件,请参阅 CM_package.cmake 中的相关行。在运行 make -j4 package 之前,您需要编辑以下两行:
`bash
设置(CPACKGENERATOR“DEB”)#设置(CPACKGENERATOR“RPM”)
`
对于 Centos 和 OpenSUSE 等发行版,您需要将 CM_package.cmake 中的这两行切换为:
`bash
# 设置(CPACK_GENERATOR“DEB”)
设置(CPACK_GENERATOR“RPM”)
`
要在安装包完成构建后进行安装,请使用您的发行版常用的包管理器。例如,在基于 Debian 的系统(例如 Ubuntu)上:
`bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
安装 .deb 包将复制以下文件:
- /usr/bin/darknet 是通常的 Darknet 可执行文件。从 CLI 运行 darknet 版本以确认其安装正确。
- /usr/include/darknet.h 是面向 C、C++ 和 Python 开发人员的 Darknet API。
- /usr/include/darknet_version.h 包含开发人员的版本信息。
- /usr/lib/libdarknet.so 是 C、C++ 和 Python 开发人员链接的库。
- /opt/darknet/cfg/... 是存储所有 .cfg 模板的位置。
现在你已经完成了! Darknet 已构建并安装到 /usr/bin/ 中。运行此测试:暗网版本。
如果你没有 /usr/bin/darknet 那么这意味着你没有安装它,你只是构建了它!确保如上所述安装 .deb 或 .rpm 文件。
Windows CMake方法
1.安装先决条件:
`bash
winget 安装 Git.Git
winget 安装 Kitware.CMake
winget安装nsis.nsis
winget安装Microsoft.VisualStudio.2022.社区
`
2. 安装 Visual Studio C++ 支持:
- 单击“Windows 开始”菜单并运行“Visual Studio 安装程序”。
- 单击“修改”。
- 选择使用 C++ 进行桌面开发。
- 单击右下角的“修改”,然后单击“是”。
3. 打开 VS 2022 的开发人员命令提示符:
- 下载并安装所有内容后,再次单击“Windows 开始”菜单,然后选择 VS 2022 的开发人员命令提示符。请勿使用 PowerShell 执行这些步骤;你会遇到问题!
4.安装微软VCPKG和OpenCV:
`bash
CDC:
mkdir c:srccd c:src
git 克隆 https://github.com/microsoft/vcpkgcd vcpkg
bootstrap-vcpkg.bat
.vcpkg.exe 集成
安装.vcpkg.exe 集成 powershell.vcpkg.exe
安装 opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
- 最后一步请耐心等待,因为它可能需要很长时间才能运行。它需要下载和构建很多东西。
5.克隆暗网存储库:
`bash
cd c:src
git 克隆 https://github.com/hank-ai/darknet.gitcd darknet
mkdir buildcd build
`
6. 使用 CMake 配置和构建 Darknet:
`bash
cmake -DCMAKEBUILDTYPE=发布-DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
`
7. 构建NSIS安装包:
`bash
msbuild.exe /property:平台=x64;配置=发布 PACKAGE.vcxproj
`
可选:如果您有现代 NVIDIA GPU,则此时可以安装 CUDA 或 CUDA+cuDNN。如果安装,Darknet 将使用您的 GPU 来加速图像(和视频)处理。
您必须从 Darknet 构建目录中删除 CMakeCache.txt 文件,以强制 CMake 重新查找所有必需的文件。记得重建暗网。
Darknet 可以在没有它的情况下运行,但如果您想训练自定义网络,则需要 CUDA 或 CUDA+cuDNN。
访问 https://developer.nvidia.com/cuda-downloads 下载并安装 CUDA。
访问 https://developer.nvidia.com/rdp/cudnn-download 或 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows 下载并安装 cuDNN。
安装 CUDA 后,请确保可以运行 nvcc.exe 和 nvidia-smi.exe。您可能必须修改 PATH 变量。
下载 cuDNN 后,解压并将 bin、include 和 lib 目录复制到 C:/Program Files/NVIDIA GPU Compute Toolkit/CUDA/[version]/ 中。您可能需要覆盖一些文件。
如果您稍后安装 CUDA 或 CUDA+cuDNN,或者升级到较新版本的 NVIDIA 软件,请按照以下步骤操作:
CUDA 必须在 Visual Studio 之后安装。如果升级 Visual Studio,请记住重新安装 CUDA。
成功完成前面的所有步骤后,您需要克隆 Darknet 并构建它。在此步骤中,我们还需要告诉 CMake vcpkg 所在位置,以便它可以找到 OpenCV 和其他依赖项:
`bash
cd c:src
git 克隆 https://github.com/hank-ai/darknet.gitcd darknet
mkdir buildcd build
cmake -DCMAKEBUILDTYPE=发布-DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
msbuild.exe /property:平台=x64;配置=发布 PACKAGE.vcxproj
`
如果您收到有关某些缺少 CUDA 或 cuDNN DLL(例如 cublas64_12.dll)的错误,请手动将 CUDA .dll 文件复制到与 darknet.exe 相同的输出目录中。例如:
`bash
复制“C:Program FilesNVIDIA GPU计算工具包CUDAv12.2bin * .dll”src-cliRelease
`
- (这是一个示例!检查以确保您正在运行什么版本,然后运行适合您已安装的版本的命令。)
复制文件后,重新运行最后的 msbuild.exe 命令以生成 NSIS 安装包:
`bash
msbuild.exe /property:平台=x64;配置=发布 PACKAGE.vcxproj
`
高级用户:
请注意,cmake 命令的输出是普通的 Visual Studio 解决方案文件 Darknet.sln。如果您是经常使用 Visual Studio GUI 而不是 msbuild.exe 来构建项目的软件开发人员,则可以忽略命令行并在 Visual Studio 中加载 Darknet 项目。
您现在应该拥有可以运行的文件:C:srcDarknetbuildsrc-cliReleasedarknet.exe。运行此命令来测试:C:srcDarknetbuildsrc-cliReleasedarknet.exe 版本。
要正确安装 Darknet、库、包含文件和必要的 DLL,请运行上一步中构建的 NSIS 安装向导。请参阅构建目录中的文件 darknet-VERSION.exe。例如:
`bash
darknet-2.0.31-win64.exe
`
安装 NSIS 安装包将:
- 创建一个名为 Darknet 的目录,例如 C:Program FilesDarknet。
- 安装 CLI 应用程序、darknet.exe 和其他示例应用程序。
- 安装所需的第 3 方 .dll 文件,例如 OpenCV 中的文件。
- 安装必要的 Darknet .dll、.lib 和 .h 文件以使用其他应用程序中的 darknet.dll。
- 安装模板 .cfg 文件。
现在你已经完成了!安装向导完成后,Darknet 将被安装到 C:Program FilesDarknet 中。运行此命令来测试:C:Program FilesDarknetbindarknet.exe 版本。
如果您没有 C:/Program Files/darknet/bin/darknet.exe 那么这意味着您没有安装它,您只是构建了它!确保您在上一步中完成了 NSIS 安装向导的每个面板。
使用暗网
命令行界面
以下不是 Darknet 支持的所有命令的完整列表。
除了 Darknet CLI 之外,还请注意 DarkHelp 项目 CLI,它提供了 Darknet/YOLO 的替代 CLI。 DarkHelp CLI 还具有一些在 Darknet 中无法直接使用的高级功能。您可以同时使用 Darknet CLI 和 DarkHelp CLI;它们并不相互排斥。
对于下面显示的大多数命令,您需要 .weights 文件以及相应的 .names 和 .cfg 文件。您可以训练自己的网络(强烈推荐!),也可以下载某人已经训练过并在互联网上免费提供的神经网络。预训练数据集的示例包括:
LEGO Gears(在图像中查找对象)
Rolodex(在图像中查找文本)
MSCOCO(标准80级物体检测)
要运行的命令包括:
1. 列出一些可能运行的命令和选项:
`bash
暗网帮助
`
2、检查版本:
`bash
暗网版本
`
3. 使用图像进行预测:
- V2:
`bash
暗网探测器测试 cars.data cars.cfg cars_best.weights image1.jpg
`
- V3:
`bash
darknet02displayannotatedimages cars.cfg image1.jpg
`
- 黑暗帮助:
`bash
DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
`
4、输出坐标:
- V2:
`bash
暗网探测器测试animals.dataanimals.cfganimalsbest.weights-extoutputdog.jpg
`
- V3:
`bash
darknet01inference_images 动物 狗.jpg
`
- 黑暗帮助:
`bash
DarkHelp --json Animals.cfg Animals.names Animals_best.weights Dog.jpg
`
5. 处理视频:
- V2:
`bash
暗网探测器演示 Animals.data Animals.cfg Animalbest.weights -extoutput test.mp4
`
- V3:
`bash
darknet03display_videos Animals.cfg test.mp4
`
- 黑暗帮助:
`bash
DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4
`
6. 从网络摄像头读取数据:
- V2:
`bash
暗网探测器演示 Animals.data Animals.cfg Animals_best.weights -c 0
`
- V3:
`bash
darknet08display_网络摄像头动物
`
7. 将结果保存到视频中:
- V2:
`bash
暗网探测器演示 Animals.data Animals.cfg Animalbest.weights test.mp4 -outfilename res.avi
`
- V3:
`bash
darknet05processvideos多线程animals.cfganimals.namesanimals_best.weightstest.mp4
`
- 黑暗帮助:
`bash
DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4
`
8.JSON:
- V2:
`bash
暗网探测器演示 Animals.data Animals.cfg Animalbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
- V3:
`bash
darknet06imagestojson 动物 image1.jpg
`
- 黑暗帮助:
`bash
DarkHelp --json Animals.names Animals.cfg Animals_best.weights image1.jpg
`
9. 在特定GPU上运行:
- V2:
`bash
暗网探测器演示 Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
10. 检查神经网络的准确性:
`bash
暗网探测器地图 Driving.data Driving.cfg moving_best.weights ...
`
输出:
`
ID 名称 AvgPrecision TP FN FP TN 准确率 错误率 精确率 召回率 特异性 FalsePosRate
------ ------------ ------ ------ ------ ------ -------- --------- --------- ------ ----------- ------------
0 辆 91.2495 32648 3903 5826 65129 0.9095 0.0905 0.8486 0.8932 0.9179 0.0821
1 摩托车 80.4499 2936 513 569 5393 0.8850 0.1150 0.8377 0.8513 0.9046 0.0954
2 自行车 89.0912 570 124 104 3548 0.9475 0.0525 0.8457 0.8213 0.9715 0.0285
3人 76.7937 7072 1727 2574 27523 0.8894 0.1106 0.7332 0.8037 0.9145 0.0855
4多辆车 64.3089 1068 509 733 11288 0.9087 0.0913 0.5930 0.6772 0.9390 0.0610
5 绿光 86.8118 1969 239 510 4116 0.8904 0.1096 0.7943 0.8918 0.8898 0.1102
6 黄光 82.0390 126 38 30 1239 0.9525 0.0475 0.8077 0.7683 0.9764 0.0236
7 红光 94.1033 3449 217 451 4643 0.9237 0.0763 0.8844 0.9408 0.9115 0.0885
`
11. 检查精度 mAP@IoU=75:
`bash
暗网探测器地图animals.dataanimals.cfganimalsbest.weights-iothresh 0.75
`
12. 重新计算锚点:
`bash
暗网探测器 calcanchors Animals.data -numof_clusters 6 -宽度 320 -高度 256
`
13. 训练新网络:
`bash
暗网探测器-map-dont_show火车animals.dataanimals.cfg
`
训练
暗网/YOLO 常见问题解答相关部分的快速链接:
我应该如何设置我的文件和目录?
我应该使用哪个配置文件?
训练自己的网络时应该使用什么命令?
最简单的注释和训练方法是使用 DarkMark 创建所有必要的 Darknet 文件。这绝对是训练新神经网络的推荐方法。
如果您希望手动设置各种文件来训练自定义网络,请按照以下步骤操作:
1. 为您的项目创建一个新文件夹:
- 对于此示例,将创建一个神经网络来检测动物,因此创建以下目录:~/nn/animals/。
2. 复制配置文件作为模板:
- 复制您想要用作模板的暗网配置文件之一。例如,请参见 cfg/yolov4-tiny.cfg。将其放入您创建的文件夹中。对于此示例,我们现在有 ~/nn/animals/animals.cfg。
3. 创建animals.names文本文件:
- 在放置配置文件的同一文件夹中创建animals.names 文本文件。对于此示例,我们现在有 ~/nn/animals/animals.names。
4. 编辑animals.names文件:
- 使用文本编辑器编辑animals.names 文件。列出您要使用的类。每行必须有 1 个条目,没有空行,也没有注释。对于此示例,.names 文件将包含 4 行:
`
狗
猫
鸟
马
`
5. 创建animals.data文本文件:
- 在同一文件夹中创建animals.data 文本文件。对于此示例,.data 文件将包含:
`
班级 = 4
火车 = /home/用户名/nn/animals/animals_train.txt
有效 = /home/用户名/nn/animals/animals_valid.txt
名称 = /home/用户名/nn/animals/animals.names
备份= /home/用户名/nn/animals
`
6. 为图像和注释创建一个文件夹:
- 创建一个文件夹,用于存储图像和注释。例如,这可能是 ~/nn/animals/dataset。每个图像都需要一个相应的 .txt 文件来描述该图像的注释。 .txt 注释文件的格式非常具体。您无法手动创建这些文件,因为每个注释都需要包含注释的精确坐标。请参阅 DarkMark 或其他类似软件来注释您的图像。 YOLO 注释格式在 Darknet/YOLO FAQ 中有描述。
7. 创建“train”和“valid”文本文件:
- 创建在 .data 文件中命名的“train”和“valid”文本文件。这两个文本文件需要单独列出 Darknet 在计算 mAP% 时必须用于训练和验证的所有图像。每行只有一张图像。路径和文件名可以是相对的或绝对的。
8. 修改您的.cfg 文件:
- 使用文本编辑器修改您的.cfg 文件。
- 确保批次=64。
- 注意细分。根据网络尺寸和 GPU 上可用的内存量,您可能需要增加细分。最好使用的值为 1,因此从该值开始。如果 1 不适合您,请参阅 Darknet/YOLO 常见问题解答。
- 注意 maxbatches=..... 开始时使用的一个好值是 2000 x 类数。对于此示例,我们有 4 只动物,因此 4 * 2000 = 8000。这意味着我们将使用 maxbatches=8000。
- 注意steps=.....这应该设置为maxbatch的80%和90%。对于此示例,我们将使用steps=6400,7200,因为 maxbatches 设置为 8000。
- 注意 width=... 和 height=..... 这些是网络尺寸。 Darknet/YOLO 常见问题解答解释了如何计算最佳使用大小。
- 搜索 class=... 行的所有实例,并使用 .names 文件中的类数对其进行修改。对于本例,我们将使用classes=4。
- 在每个 [yolo] 部分之前的 [卷积] 部分中搜索线路过滤器=... 的所有实例。使用的值是 (numberofclasses + 5) 3。本例的含义是 (4 + 5) 3 = 27。因此我们在适当的行上使用filters=27。
9. 开始训练:
- 运行以下命令:
`bash
cd ~/nn/动物/
暗网探测器-map-dont_show火车animals.dataanimals.cfg
`
要有耐心。最佳权重将保存为animals_best.weights。并且可以通过查看chart.png文件来观察训练的进度。请参阅 Darknet/YOLO 常见问题解答,了解训练新网络时可能需要使用的其他参数。
如果您想在训练过程中查看更多详细信息,请添加 --verbose 参数。例如:
`bash
暗网探测器-map-dont_show--verbose火车animals.dataanimals.cfg
`
其他工具和链接
要管理您的 Darknet/YOLO 项目、注释图像、验证注释并生成使用 Darknet 进行训练所需的文件,请参阅 DarkMark。
如需 Darknet 的强大替代 CLI、使用图像平铺、视频中的对象跟踪,或可轻松在商业应用程序中使用的强大 C++ API,请参阅 DarkHelp。
查看 Darknet/YOLO 常见问题解答是否可以帮助回答您的问题。
在 Stéphane 的 YouTube 频道上观看许多教程和示例视频
如果您有支持问题或想与其他 Darknet/YOLO 用户聊天,请加入 Darknet/YOLO 不和谐服务器。
路线图
最后更新于 2024 年 10 月 30 日:
完全的
将训练期间使用的 qsort() 替换为 std::sort() (仍然存在其他一些模糊的)。
摆脱 check_mistakes、getchar() 和 system()。
将 Darknet 转换为使用 C++ 编译器(Linux 上为 g++,Windows 上为 VisualStudio)。
修复 Windows 构建。
修复 Python 支持。
构建暗网库。
重新启用预测标签(“字母”代码)。
重新启用 CUDA/GPU 代码。
重新启用 CUDNN。
重新启用 CUDNN 一半。
不要对 CUDA 架构进行硬编码。
更好的 CUDA 版本信息。
重新启用 AVX。
删除旧的解决方案和 Makefile。
使 OpenCV 成为非可选。
删除对旧 pthread 库的依赖。
删除机顶盒。
重写 CMakeLists.txt 以使用新的 CUDA 检测。
删除旧的“字母”代码,并删除数据/标签中的 700 多个图像。
构建外源。
有更好的版本号输出。
与培训(正在进行的任务)相关的性能优化。
与推理相关的性能优化(正在进行的任务)。
尽可能通过引用传递。
清理 .hpp 文件。
重写darknet.h。
不要将 cv::Mat 转换为 void*,而是将其用作正确的 C++ 对象。
修复或保持内部图像结构的使用方式一致。
修复基于 ARM 的 Jetson 设备的构建。
- 原始 Jetson 设备不太可能得到修复,因为 NVIDIA 不再支持它们(无 C++17 编译器)。
- 新的 Jetson Orin 设备正在运行。
修复 V3 中的 Python API。
- 需要对 Python 提供更好的支持(任何 Python 开发人员想为此提供帮助吗?)
短期目标
将 printf() 替换为 std::cout (正在进行中)。
查看旧版 zed 相机支持。
更好、更一致的命令行解析(正在进行中)。
中期目标
删除所有 char* 代码并替换为 std::string。
不要隐藏警告并清除编译器警告(正在进行中)。
更好地使用 cv::Mat 而不是 C 中的自定义图像结构(正在进行中)。
用 std::vector 或 ` 替换旧的列表功能