暗网目标检测框架和 YOLO
[Darknet 和 Hank.ai 徽标]
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 上运行。请参阅下面的搭建说明。
暗网版本
Joseph Redmon 在 2013-2017 年编写的原始暗网工具没有版本号。我们认为这个版本是 0.x。
Alexey Bochkovskiy 在 2017 年至 2021 年间维护的下一个流行的暗网存储库也没有版本号。我们认为这个版本是 1.x。
从 2023 年开始,由 Hank.ai 赞助并由 Stéphane Charette 维护的 Darknet 存储库是第一个带有版本命令的存储库。从 2023 年到 2024 年底,它返回了版本 2.x“OAK”。
目标是在熟悉代码库的同时尝试尽可能少地破坏现有功能。以下是一些关键变化:
1. 重新编写构建步骤,以便我们有 1 种统一的方法在 Windows 和 Linux 上使用 CMake 进行构建。
2. 转换代码库以使用 C++ 编译器。
3. 训练时增强chart.png。
4. 错误修复和与性能相关的优化,主要与减少训练网络所需的时间有关。
该代码库的最后一个分支是 v2 分支中的版本 2.1。
下一阶段的开发于 2024 年中期开始,并于 2024 年 10 月发布。版本命令现在返回 3.x“JAZZ”。
如果您需要运行这些命令之一,您始终可以签出之前的 v2 分支。请告诉我们,以便我们研究添加回所有丢失的命令。
以下是 Darknet V3“JAZZ”的一些关键变化:
1.删除了许多旧的和未维护的命令。
2. 在训练和推理过程中进行许多性能优化。
3. 修改了旧版C API。使用原始 Darknet API 的应用程序需要进行少量修改:https://darknetcv.ai/api/api.html
4. 新的 Darknet V3 C 和 C++ API:https://darknetcv.ai/api/api.html
5. 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-完整
2.YOLOv3,2018 年 5 月
* YOLOv3-小
* YOLOv3-full
3.YOLOv4,2020 年 5 月
* YOLOv4-小
* YOLOv4-full
4.YOLOv7,2022 年 8 月
* YOLOv7-小
* YOLOv7-完整版
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方法
Linux 暗网构建教程
1. 可选:如果您有现代 NVIDIA GPU,则此时可以安装 CUDA 或 CUDA+cuDNN。如果安装,Darknet 将使用您的 GPU 来加速图像(和视频)处理。
2. 您必须从 Darknet 构建目录中删除 CMakeCache.txt 文件,以强制 CMake 重新查找所有必需的文件。
3.记得重建Darknet。
4. 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。如果您使用不同的发行版,请根据需要进行调整。
`bash
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
git 克隆 https://github.com/hank-ai/darknet
CD暗网
mkdir 构建
光盘构建
cmake -DCMAKEBUILDTYPE=发布 ..
制作-j4包
sudo dpkg -i darknet-VERSION.deb
`
如果您使用的是旧版本的 CMake,则需要先升级 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方法
这些说明假定全新安装 Windows 11 22H2。
1. 打开普通的 cmd.exe 命令提示符窗口并运行以下命令:
`bash
winget 安装 Git.Git
winget 安装 Kitware.CMake
winget安装nsis.nsis
winget安装Microsoft.VisualStudio.2022.社区
`
2. 此时,我们需要修改 Visual Studio 安装以包含对 C++ 应用程序的支持:
单击“Windows 开始”菜单并运行“Visual Studio Installer”。
单击修改。
选择使用 C++ 进行桌面开发。
单击右下角的“修改”,然后单击“是”。
3. 下载并安装所有内容后,再次单击“Windows 开始”菜单,然后选择 VS 2022 的开发人员命令提示符。不要使用 PowerShell 执行这些步骤,您会遇到问题!
高级用户:
您可以使用普通命令提示符或 ssh 进入设备并手动运行“Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat”,而不是运行开发人员命令提示符。
4. 按照上述方式运行开发人员命令提示符(不是 PowerShell!)后,运行以下命令来安装 Microsoft VCPKG,然后它将用于构建 OpenCV:
`bash
CDC:
mkdir c:src
cd c:src
git 克隆 https://github.com/microsoft/vcpkg
cd vcpkg
bootstrap-vcpkg.bat
.vcpkg.exe 集成安装
.vcpkg.exe 集成powershell
.vcpkg.exe 安装 opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
最后一步请耐心等待,因为它可能需要很长时间才能运行。它需要下载和构建很多东西。
高级用户:
请注意,在构建 OpenCV 时您可能需要添加许多其他可选模块。运行 .vcpkg.exe 搜索 opencv 以查看完整列表。
5. 可选:如果您有现代 NVIDIA GPU,则此时可以安装 CUDA 或 CUDA+cuDNN。如果安装,Darknet 将使用您的 GPU 来加速图像(和视频)处理。
6. 您必须从 Darknet 构建目录中删除 CMakeCache.txt 文件,以强制 CMake 重新查找所有必需的文件。
7. 记得重建暗网。
8. 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。
9. 成功完成上述所有步骤后,您需要克隆 Darknet 并构建它。在此步骤中,我们还需要告诉 CMake vcpkg 所在位置,以便它可以找到 OpenCV 和其他依赖项:
`bash
cd c:src
git 克隆 https://github.com/hank-ai/darknet.git
CD暗网
mkdir 构建
光盘构建
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
`
10. 如果出现有关缺少某些 CUDA 或 cuDNN DLL(例如 cublas64_12.dll)的错误,请手动将 CUDA .dll 文件复制到与 Darknet.exe 相同的输出目录中。例如:
`bash
复制“C:Program FilesNVIDIA GPU计算工具包CUDAv12.2bin * .dll”src-cliRelease
`
(这是一个示例!检查以确保您正在运行什么版本,然后运行适合您已安装的版本的命令。)
11. 复制文件后,重新运行最后一个 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 文件。您可以训练自己的网络(强烈推荐!),也可以下载某人已经训练过并在互联网上免费提供的神经网络。预训练数据集的示例包括:
1. LEGO Gears(在图像中查找对象)
2. Rolodex(在图像中查找文本)
3.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 准确度 ErrorRate 精确度 Recall 特异性 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. 重新计算锚点最好在 DarkMark 中完成,因为它将连续运行 100 次并从所有计算的锚点中选择最佳锚点。但如果你想在 Darknet 中运行旧版本:
`bash
暗网探测器 calcanchors Animals.data -numof_clusters 6 -宽度 320 -高度 256
`
13. 训练新网络:
`bash
darknet detector -map -dont_show train Animals.data Animals.cfg(另请参阅下面的训练部分)
`
训练
暗网/YOLO 常见问题解答相关部分的快速链接:
我应该如何设置我的文件和目录?
我应该使用哪个配置文件?
训练自己的网络时应该使用什么命令?
最简单的注释和训练方法是使用 DarkMark 创建所有必要的 Darknet 文件。这绝对是训练新神经网络的推荐方法。
如果您想手动设置各种文件来训练自定义网络:
1. 创建一个用于存储文件的新文件夹。对于本例,将创建一个神经网络来检测动物,因此创建以下目录:~/nn/animals/。
2. 复制您想要用作模板的暗网配置文件之一。例如,请参见 cfg/yolov4-tiny.cfg。将其放入您创建的文件夹中。对于此示例,我们现在有 ~/nn/animals/animals.cfg。
3. 在放置配置文件的同一文件夹中创建animals.names 文本文件。对于此示例,我们现在有 ~/nn/animals/animals.names。
4. 使用文本编辑器编辑animals.names 文件。列出您要使用的类。每行必须有 1 个条目,没有空行,也没有注释。对于此示例,.names 文件将包含 4 行:
`
狗
猫
鸟
马
`
5. 在同一文件夹中创建animals.data 文本文件。对于此示例,.data 文件将包含:
`
班级=4
train=/home/用户名/nn/animals/animals_train.txt
valid=/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. 创建在.data 文件中命名的“train”和“valid”文本文件。这两个文本文件需要单独列出 Darknet 在计算 mAP% 时必须用于训练和验证的所有图像。每行只有一张图像。路径和文件名可以是相对的或绝对的。
8. 使用文本编辑器修改 .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] 部分之前的 [卷积] 部分中搜索 linefilters=... 的所有实例。要使用的值是 (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
`
其他工具和链接
1. 要管理您的 Darknet/YOLO 项目、注释图像、验证注释并生成使用 Darknet 进行训练所需的文件,请参阅 DarkMark。
2. 如需 Darknet 的强大替代 CLI、使用图像平铺、视频中的对象跟踪,或可轻松在商业应用程序中使用的强大 C++ API,请参阅 DarkHelp。
3.看看Darknet/YOLO常见问题解答是否可以帮助解答您的问题。
4. 在 Stéphane 的 YouTube 频道上观看许多教程和示例视频。
5. 如果您有支持问题或想与其他 Darknet/YOLO 用户聊天,请加入 Darknet/YOLO Discord 服务器。
路线图
最后更新于 2024 年 10 月 30 日:
完全的
1. 将训练期间使用的 qsort() 替换为 std::sort() (仍然存在其他一些模糊的)
2. 摆脱 check_mistakes、getchar() 和 system()
3. 将 Darknet 转换为使用 C++ 编译器(Linux 上为 g++,Windows 上为 VisualStudio)
4.修复Windows构建
5.修复Python支持
6. 构建暗网库
7. 重新启用预测标签(“字母”代码)
8.重新启用CUDA/GPU代码
9.重新启用CUDNN
10.重新启用CUDNN一半
11.不要对CUDA架构进行硬编码
12.更好的CUDA版本信息
13.重新启用AVX
14.删除旧的解决方案和Makefile
15.使OpenCV成为非可选
16.删除对旧pthread库的依赖
17.删除机顶盒
18.重写CMakeLists.txt以使用新的CUDA检测
19.删除旧的“字母”代码,并删除数据/标签中的700+图像
20. 外源构建
21.有更好的版本号输出
22. 与训练相关的性能优化(正在进行的任务)
23. 与推理相关的性能优化(正在进行的任务)
24. 尽可能通过引用传递
25.清理.hpp文件
26.重写darknet.h
27. 不要将 cv::Mat 转换为 void* 而是将其用作正确的 C++ 对象
28. 修复或保持内部图像结构的使用方式一致
29.修复基于 ARM 的 Jetson 设备的构建
* 原始 Jetson 设备不太可能修复,因为 NVIDIA 不再支持它们(无 C++17 编译器)
* 新的 Jetson Orin 设备正在运行
30.修复V3中的Python API
* 需要对 Python 提供更好的支持(任何 Python 开发人员想为此提供帮助吗?)
短期目标
1. 将 printf() 替换为 std::cout (正在进行中)
2.查看旧的 zed 相机支持
3.更好、更一致的命令行解析(正在进行中)
中期目标
1. 删除所有 char* 代码并替换为 std::string
2.不要隐藏警告并清理编译器警告(正在进行中)
3.更好地使用cv::Mat代替C中的自定义图像结构(正在进行中)
4. 用 std::vector 或 std::list 替换旧的列表功能
5.修复对1通道灰度图像的支持
6. 添加对 N > 3 的 N 通道图像的支持(例如,具有附加深度或热通道的图像)
7. 正在进行的代码清理(正在进行中)
长期目标
1.修复所有GPU的CUDA/CUDNN问题
2.重写CUDA+cuDNN代码
3.考虑添加对非 NVIDIA GPU 的支持
4.旋转边界框,或某种“角度”支持
5. 关键点/骨架
6. 热图(进行中)
7. 细分