暗网目标检测框架和 YOLO
文件
一般信息
暗网版本
MSCOCO 预训练权重
建筑
谷歌合作实验室
Linux CMake方法
Windows CMake方法
使用暗网
命令行界面
训练
其他工具和链接
路线图
短期目标
中期目标
长期目标
Darknet 是一个用 C、C++ 和 CUDA 编写的开源神经网络框架。
YOLO(You Only Look Once)是一个最先进的实时目标检测系统,运行在 Darknet 框架中。
了解Hank.ai 如何帮助 Darknet/YOLO 社区
宣布暗网 V3“爵士乐”
请参阅Darknet/YOLO 网站
请仔细阅读Darknet/YOLO 常见问题解答
加入Darknet/YOLO Discord 服务器
论文YOLOv7
纸比例-YOLOv4
论文YOLOv4
论文YOLOv3
Darknet/YOLO 框架仍然比其他框架和 YOLO 版本更快、更准确。
该框架是完全免费且开源的。 您可以将 Darknet/YOLO 整合到现有的项目和产品中(包括商业项目和产品),无需许可证或支付费用。
2024 年 10 月发布的 Darknet V3(“Jazz”)在使用 NVIDIA RTX 3090 GPU 时可以以高达1000 FPS 的速度准确运行乐高数据集视频,这意味着每个视频帧都可以由 Darknet/YOLO 在 1 毫秒或 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 存储库是第一个带有version
命令的存储库。 从 2023 年到 2024 年底,它返回了版本 2.x“OAK”。
目标是在熟悉代码库的同时尝试尽可能少地破坏现有功能。
重新编写了构建步骤,以便我们有 1 种统一的方式在 Windows 和 Linux 上使用 CMake 进行构建。
将代码库转换为使用 C++ 编译器。
训练时增强了chart.png。
错误修复和与性能相关的优化,主要与减少训练网络所需的时间有关。
该代码库的最后一个分支是v2
分支中的版本 2.1。
下一阶段的开发于 2024 年中期开始,并于 2024 年 10 月发布。 version
命令现在返回 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
为了方便起见,YOLO 的几个流行版本在 MSCOCO 数据集上进行了预训练。 该数据集有 80 个类,可以在文本文件cfg/coco.names
中看到。
还有其他几个更简单的数据集和预训练权重可用于测试 Darknet/YOLO,例如 LEGO Gears 和 Rolodex。 有关详细信息,请参阅 Darknet/YOLO 常见问题解答。
MSCOCO 预训练权重可以从几个不同的位置下载,也可以从此存储库下载:
YOLOv2,2016 年 11 月
YOLOv2-微小
YOLOv2-full
YOLOv3,2018 年 5 月
YOLOv3-微小
YOLOv3-full
YOLOv4,2020 年 5 月
YOLOv4-小
YOLOv4-full
YOLOv7,2022 年 8 月
YOLOv7-微小
YOLOv7-full
MSCOCO 预训练权重仅用于演示目的。 MSCOCO 相应的.cfg
和.names
文件位于 cfg 目录中。 命令示例:
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights darknet_02_display_annotated_images coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg darknet_03_display_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,就像您不需要成为机械师来驾驶汽车一样。
谷歌合作实验室
Linux
视窗
如果您遵循具有更复杂构建步骤的旧教程,或者构建步骤与本自述文件中的内容不匹配,请注意。如下所述的新构建步骤于 2023 年 8 月开始。
我们鼓励软件开发人员访问 https://darknetcv.ai/ 以获取有关 Darknet/YOLO 对象检测框架内部的信息。
Google Colab 指令与 Linux 指令相同。 有多个 Jupyter 笔记本可以展示如何执行某些任务,例如训练新网络。
请参阅colab
子目录中的笔记本,和/或按照下面的 Linux 说明进行操作。
可选:如果您有现代 NVIDIA GPU,则此时可以安装 CUDA 或 CUDA+cuDNN。 如果安装,Darknet 将使用您的 GPU 来加速图像(和视频)处理。
您必须从 Darknet build
目录中删除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。 如果您使用不同的发行版,请根据需要进行调整。
sudo apt-get install build-essential git libopencv-dev cmake mkdir ~/srccd ~/src git 克隆 https://github.com/hank-ai/darknetcd darknet mkdir buildcd build cmake -DCMAKE_BUILD_TYPE=发布 .. 制作-j4包 sudo dpkg -i darknet-<插入版本-您在此处构建>.deb
如果您使用的是旧版本的 CMake ,则需要先升级 CMake,然后才能运行上面的cmake
命令。 可以使用以下命令在 Ubuntu 上升级 CMake:
sudo apt-get purge cmake sudo snap install cmake --经典
如果使用bash
作为命令 shell,此时您需要重新启动 shell。 如果使用fish
,它应该立即选择新路径。
高级用户:
如果您想构建 RPM 安装文件而不是 DEB 文件,请参阅
CM_package.cmake
中的相关行。 在运行make -j4 package
之前,您需要编辑以下两行:
SET (CPACK_GENERATOR "DEB")# SET (CPACK_GENERATOR "RPM")
对于 Centos 和 OpenSUSE 等发行版,您需要将
CM_package.cmake
中的这两行切换为:
# SET (CPACK_GENERATOR "DEB")SET (CPACK_GENERATOR "RPM")
要在安装包完成构建后进行安装,请使用您的发行版常用的包管理器。 例如,在基于 Debian 的系统(例如 Ubuntu)上:
sudo dpkg -i darknet-2.0.1-Linux.deb
安装.deb
包将复制以下文件:
/usr/bin/darknet
是通常的 Darknet 可执行文件。 从 CLI 运行darknet version
以确认其安装正确。
/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/
中。 运行此命令来测试: darknet version
。
如果你没有
/usr/bin/darknet
那么这意味着你没有安装它,你只是构建了它! 确保如上所述安装.deb
或.rpm
文件。
这些说明假定全新安装 Windows 11 22H2。
打开普通的cmd.exe
命令提示符窗口并运行以下命令:
winget 安装 Git.Git winget 安装 Kitware.CMake winget安装nsis.nsis winget安装Microsoft.VisualStudio.2022.社区
此时我们需要修改 Visual Studio 安装以包括对 C++ 应用程序的支持:
单击“Windows 开始”菜单并运行“Visual Studio Installer”
点击Modify
选择Desktop Development With C++
单击右下角的Modify
,然后单击Yes
。下载并安装所有内容后,再次单击“Windows 开始”菜单,然后选择Developer Command Prompt for VS 2022
。不要使用 PowerShell 执行这些步骤,您会遇到问题!
高级用户:
您可以使用普通命令提示符或 ssh 进入设备并手动运行
"Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat"
,而不是运行Developer Command Prompt
。
很多人都会犯同样的错误,并认为他们可以跳过上一步。请不要跳过这一步!不要使用普通的命令提示符或 PowerShell! 重新阅读上述步骤,看看您必须使用哪种类型的窗口。 每当您想要从命令提示符使用 Visual Studio 来编译 C++ 代码时,您都必须使用 Visual Studio 开发人员命令提示符,如上所述。
如上所述运行开发人员命令提示符后,运行以下命令来安装 Microsoft VCPKG,然后它将用于构建 OpenCV:
cd c: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
最后一步请耐心等待,因为它可能需要很长时间才能运行。 它需要下载和构建很多东西。
高级用户:
请注意,在构建 OpenCV 时您可能需要添加许多其他可选模块。 运行
.vcpkg.exe search opencv
以查看完整列表。
可选:如果您有现代 NVIDIA GPU,则此时可以安装 CUDA 或 CUDA+cuDNN。 如果安装,Darknet 将使用您的 GPU 来加速图像(和视频)处理。
您必须从 Darknet build
目录中删除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 Computing Toolkit/CUDA/[version]/
中。 您可能需要覆盖一些文件。
如果您稍后安装 CUDA 或 CUDA+cuDNN,或者升级到较新版本的 NVIDIA 软件:
CUDA必须在 Visual Studio之后安装。 如果升级 Visual Studio,请记住重新安装 CUDA。
成功完成前面的所有步骤后,您需要克隆 Darknet 并构建它。 在此步骤中,我们还需要告诉 CMake vcpkg 所在位置,以便它可以找到 OpenCV 和其他依赖项:
cd c:src git 克隆 https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd 构建 cmake -DCMAKE_BUILD_TYPE=发布-DCMAKE_TOOLCHAIN_FILE=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
相同的输出目录中。 例如:
复制“C: Program Files NVIDIA GPU计算工具包 CUDA v12.2 bin *.dll”src-cli Release
(这是一个示例!检查以确保您正在运行什么版本,然后运行适合您已安装的版本的命令。)
复制文件后,重新运行最后的msbuild.exe
命令以生成 NSIS 安装包:
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 --version
。
要正确安装 Darknet、库、包含文件和必要的 DLL,请运行上一步中构建的 NSIS 安装向导。 请参阅build
目录中的文件darknet-<INSERT-VERSION-YOU-BUILT-HERE>-win64.exe
。 例如:
darknet-<插入版本-您在此构建>-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 version
。
如果您没有
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级物体检测)
要运行的命令包括:
列出一些可能运行的命令和选项:
darknet help
检查版本:
darknet version
使用图像进行预测:
V2: darknet detector test cars.data cars.cfg cars_best.weights image1.jpg
V3: darknet_02_display_annotated_images cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
输出坐标:
V2: darknet detector test animals.data animals.cfg animals_best.weights -ext_output dog.jpg
V3: darknet_01_inference_images animals dog.jpg
DarkHelp: DarkHelp --json animals.cfg animals.names animals_best.weights dog.jpg
处理视频:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -ext_output test.mp4
V3: darknet_03_display_videos animals.cfg test.mp4
DarkHelp: DarkHelp animals.cfg animals.names animals_best.weights test.mp4
从网络摄像头读取:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -c 0
V3: darknet_08_display_webcam animals
将结果保存到视频:
V2: darknet detector demo animals.data animals.cfg animals_best.weights test.mp4 -out_filename res.avi
V3: darknet_05_process_videos_multithreaded animals.cfg animals.names animals_best.weights test.mp4
DarkHelp: DarkHelp animals.cfg animals.names animals_best.weights test.mp4
JSON:
V2: darknet detector demo animals.data animals.cfg animals_best.weights test50.mp4 -json_port 8070 -mjpeg_port 8090 -ext_output
V3: darknet_06_images_to_json animals image1.jpg
DarkHelp: DarkHelp --json animals.names animals.cfg animals_best.weights image1.jpg
在特定 GPU 上运行:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -i 1 test.mp4
检查神经网络的准确性:
暗网探测器地图 Driving.data Driving.cfg Driving_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
检查精度 mAP@IoU=75:
darknet detector map animals.data animals.cfg animals_best.weights -iou_thresh 0.75
重新计算锚点最好在 DarkMark 中完成,因为它将连续运行 100 次并从所有计算的锚点中选择最佳锚点。 但如果你想在 Darknet 中运行旧版本:
暗网探测器 calc_anchors Animals.data -num_of_clusters 6 -宽度 320 -高度 256
训练一个新网络:
darknet detector -map -dont_show train animals.data animals.cfg
(另请参阅下面的训练部分)
暗网/YOLO 常见问题解答相关部分的快速链接:
我应该如何设置我的文件和目录?
我应该使用哪个配置文件?
训练自己的网络时应该使用什么命令?
最简单的注释和训练方法是使用 DarkMark 创建所有必要的 Darknet 文件。 这绝对是训练新神经网络的推荐方法。
如果您想手动设置各种文件来训练自定义网络:
创建一个用于存储文件的新文件夹。 对于此示例,将创建一个神经网络来检测动物,因此创建以下目录: ~/nn/animals/
。
复制您想要用作模板的暗网配置文件之一。 例如,请参见cfg/yolov4-tiny.cfg
。 将其放入您创建的文件夹中。 对于这个例子,我们现在有~/nn/animals/animals.cfg
。
在放置配置文件的同一文件夹中创建animals.names
文本文件。 对于这个例子,我们现在有~/nn/animals/animals.names
。
使用文本编辑器编辑animals.names
文件。 列出您要使用的类。 每行必须有 1 个条目,没有空行,也没有注释。 对于此示例, .names
文件将包含 4 行:
狗 猫 鸟 马
在同一文件夹中创建animals.data
文本文件。 对于此示例, .data
文件将包含:
班级 = 4 火车 = /home/用户名/nn/animals/animals_train.txt 有效 = /home/用户名/nn/animals/animals_valid.txt 名称 = /home/用户名/nn/animals/animals.names 备份= /home/用户名/nn/animals
创建一个文件夹,用于存储图像和注释。 例如,这可能是~/nn/animals/dataset
。 每个图像都需要一个相应的.txt
文件来描述该图像的注释。 .txt
注释文件的格式非常具体。 您无法手动创建这些文件,因为每个注释都需要包含注释的精确坐标。 请参阅 DarkMark 或其他类似软件来注释您的图像。 YOLO 注释格式在 Darknet/YOLO FAQ 中有描述。
创建在.data
文件中命名的“train”和“valid”文本文件。 这两个文本文件需要单独列出 Darknet 在计算 mAP% 时必须用于训练和验证的所有图像。 每行只有一张图像。 路径和文件名可以是相对的或绝对的。
使用文本编辑器修改.cfg
文件。
确保batch=64
。
注意细分。 根据网络尺寸和 GPU 上的可用内存量,您可能需要增加细分。 最好使用的值是1
,因此从该值开始。 如果1
不适合您,请参阅 Darknet/YOLO 常见问题解答。
注意max_batches=...
。 开始时使用的一个很好的值是 2000 x 类数。 对于这个例子,我们有 4 只动物,所以 4 * 2000 = 8000。这意味着我们将使用max_batches=8000
。
注意steps=...
应设置为max_batches
的 80% 和 90%。 对于本例,我们将使用steps=6400,7200
,因为max_batches
设置为8000。
注意width=...
和height=...
。 这些是网络维度。 Darknet/YOLO 常见问题解答解释了如何计算最佳使用大小。
搜索classes=...
行的所有实例,并使用.names
文件中的类数对其进行修改。 对于此示例,我们将使用classes=4
。
在每个[yolo]
部分之前的[convolutional]
部分中搜索filters=...
的所有实例。 要使用的值是 (number_of_classes + 5) * 3。本例的含义是 (4 + 5) * 3 = 27。因此我们在适当的行上使用filters=27
。
开始训练! 运行以下命令:
cd ~/nn/动物/ 暗网探测器-map-dont_show火车animals.dataanimals.cfg
要有耐心。 最佳权重将保存为animals_best.weights
。 并且可以通过查看chart.png
文件来观察训练的进度。 请参阅 Darknet/YOLO 常见问题解答,了解训练新网络时可能需要使用的其他参数。
如果您想在训练过程中查看更多详细信息,请添加--verbose
参数。 例如:
暗网探测器-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 年 11 月 2 日:
将 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++ 对象
修复或保持内部image
结构的使用方式一致
修复基于 ARM 的 Jetson 设备的构建
原始 Jetson 设备(不太可能修复,因为 NVIDIA 不再支持它们并且没有 C++17 编译器)
新的 Jetson Orin 设备正在运行
修复 V3 中的 Python API
需要对 Python 提供更好的支持(任何 Python 开发人员想为此提供帮助吗?)
将 printf() 替换为 std::cout (正在进行中)
看看旧的 zed 相机支持
更好、更一致的命令行解析(正在进行中)
删除所有char*
代码并替换为std::string
不要隐藏警告并清理编译器警告(正在进行中)
更好地使用cv::Mat
而不是 C 中的自定义image
结构(正在进行中)
用std::vector
或std::list
替换旧的list
功能
修复对 1 通道灰度图像的支持
添加对 N 通道图像的支持,其中 N > 3(例如,具有附加深度或热通道的图像)
正在进行的代码清理(正在进行中)
修复所有 GPU 的 CUDA/CUDNN 问题
重写CUDA+cuDNN代码
考虑添加对非 NVIDIA GPU 的支持
旋转边界框,或某种“角度”支持
关键点/骨架
热图(正在进行中)
分割