暗网目标检测框架和 YOLO
!darknet 和 hank.ai 徽标
Darknet 是一个开源神经网络框架,主要用 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 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”。
目标是在熟悉代码库的同时尝试尽可能少地破坏现有功能。
Darknet 2.x 中的主要变化包括:
重新编写了 Windows 和 Linux 上基于 CMake 的统一构建的构建步骤。
将代码库转换为使用 C++ 编译器。
增强了训练期间的 Chart.png 可视化。
错误修复和性能优化,主要集中在减少训练时间。
该代码库的最后一个分支是 v2 分支中的版本 2.1。
下一阶段的开发于 2024 年中期开始,并于 2024 年 10 月发布。版本命令现在返回 3.x“JAZZ”。
如果您需要运行这些命令之一,您始终可以签出之前的 v2 分支。如果您遇到任何丢失的命令,请告诉我们。
Darknet 3.x 中的主要变化包括:
删除许多旧的和未维护的命令。
训练和推理的显着性能优化。
修改旧版 C API,需要对使用原始 Darknet API 的应用程序进行少量修改。请参阅此处更新的 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 预训练权重可以从各个位置下载,包括此存储库:
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
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.安装必要的包:
`bash
sudo apt-get install build-essential git libopencv-dev cmake
`
2.克隆暗网存储库:
`bash
mkdir ~/src 目录
cd ~/src
git 克隆 https://github.com/hank-ai/darknet
CD暗网
`
3. 创建构建目录并运行 CMake:
`bash
mkdir 构建
光盘构建
cmake -DCMAKEBUILDTYPE=发布 ..
`
4. 构建暗网:
`bash
使-j4
`
5.可选:安装CUDA或CUDA+cuDNN
如果您有现代 NVIDIA GPU,则可以安装 CUDA 或 CUDA+cuDNN。这将允许 Darknet 使用您的 GPU 进行更快的图像和视频处理。
- 从 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- 下载并安装 cuDNN安装概述。
重要提示:如果您在构建 Darknet 后安装 CUDA 或 CUDA+cuDNN,则必须删除构建目录中的 CMakeCache.txt 文件并重新运行 cmake 以确保 CMake 可以找到必要的文件。
注意:Darknet 可以在没有 CUDA 的情况下运行,但如果要训练自定义网络,则需要 CUDA 或 CUDA+cuDNN。
6.打包安装Darknet:
`bash
制作包
sudo dpkg -i darknet-VERSION.deb
`
重要提示:如果您使用的是旧版本的 CMake,则可能需要在运行 cmake 命令之前对其进行升级。使用以下命令在 Ubuntu 上升级 CMake:
`bash
sudo apt-get purge cmake
sudo snap install cmake --经典
`
高级用户:
- 如果要构建 RPM 安装文件而不是 DEB 文件,请在运行 make package 之前编辑 CM_package.cmake 中的以下两行:
`cmake
# 设置(CPACK_GENERATOR“DEB”)
设置(CPACK_GENERATOR“RPM”)
`
- 要在安装包完成构建后安装它,请使用您的发行版的包管理器。例如,在基于 Debian 的系统(如 Ubuntu)上:
`bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
- 安装 .deb 包将复制以下文件:
- /usr/bin/darknet: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/ 中。从 CLI 运行 darknet 版本以确认安装。
Windows CMake方法
这些说明假定全新安装 Windows 11 22H2。
1.安装所需软件:
`powershell
winget 安装 Git.Git
winget 安装 Kitware.CMake
winget安装nsis.nsis
winget安装Microsoft.VisualStudio.2022.社区
`
2.修改Visual Studio安装:
- 打开“Windows 开始”菜单并运行“Visual Studio 安装程序”。
- 单击“修改”。
- 选择“使用 C++ 进行桌面开发”。
- 单击右下角的“修改”,然后单击“是”。
3.安装微软VCPKG:
- 打开“Windows 开始”菜单并选择“VS 2022 的开发人员命令提示符”。请勿使用 PowerShell 执行这些步骤。
- 高级用户:您可以使用普通命令提示符或 ssh 进入设备并手动运行 Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat,而不是运行开发人员命令提示符。
- 运行以下命令:
`powershell
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 以查看完整列表。
4.可选:安装CUDA或CUDA+cuDNN
如果您有现代 NVIDIA GPU,则可以安装 CUDA 或 CUDA+cuDNN。这将允许 Darknet 使用您的 GPU 进行更快的图像和视频处理。
- 从 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。
重要提示:如果您在构建 Darknet 后安装 CUDA 或 CUDA+cuDNN,则必须删除构建目录中的 CMakeCache.txt 文件并重新运行 cmake 以确保 CMake 可以找到必要的文件。
注意:Darknet 可以在没有 CUDA 的情况下运行,但如果要训练自定义网络,则需要 CUDA 或 CUDA+cuDNN。
5.克隆暗网并构建它:
`powershell
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
`
重要的:
- CUDA 安装:CUDA 必须在 Visual Studio 之后安装。如果升级 Visual Studio,请记住重新安装 CUDA。
- 缺少 DLL:如果遇到有关缺少 CUDA 或 cuDNN DLL(例如 cublas64_12.dll)的错误,请手动将 CUDA .dll 文件复制到与 darknet.exe 相同的输出目录中。例如:
`powershell
复制“C: Program Files NVIDIA GPU计算工具包 CUDA v12.2 bin *.dll”src-cli Release
`
(这是一个示例;检查您正在运行的 CUDA 版本并相应地调整路径。)
- 重新运行msbuild.exe:复制.dll文件后,重新运行最后的msbuild.exe命令以生成NSIS安装包:
`powershell
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 版本。
6.安装暗网:
- 运行上一步中构建的 NSIS 安装向导。在构建目录中查找文件 darknet-VERSION.exe。例如:
`
darknet-2.0.31-win64.exe
`
- NSIS 安装包将:
- 创建一个名为 Darknet 的目录,例如 C:Program FilesDarknet。
- 安装 CLI 应用程序 (darknet.exe) 和其他示例应用程序。
- 安装所需的第三方 .dll 文件,例如 OpenCV 中的文件。
- 安装必要的 Darknet .dll、.lib 和 .h 文件以使用其他应用程序中的 darknet.dll。
- 安装模板 .cfg 文件。
- 现在你已经完成了!安装向导完成后,Darknet 将被安装到 C:Program FilesDarknet。运行此命令来测试:C:Program FilesDarknetbindarknet.exe 版本。
使用暗网
命令行界面
以下并不是 Darknet 支持的所有命令的完整列表。
除了 Darknet CLI 之外,还可以考虑 DarkHelp 项目 CLI,它提供了 Darknet/YOLO 的替代 CLI,具有 Darknet 中无法直接提供的高级功能。您可以同时使用 Darknet CLI 和 DarkHelp CLI。
对于下面的大多数命令,您将需要 .weights 文件以及相应的 .names 和 .cfg 文件。您可以训练自己的网络(强烈推荐!)或从互联网下载预先训练的网络。预训练数据集的示例包括:
LEGO Gears(用于查找图像中的物体)
Rolodex(用于查找图像中的文本)
MSCOCO(标准80级物体检测)
运行命令:
获得帮助:
`bash
暗网帮助
`
检查版本:
`bash
暗网版本
`
使用图像进行预测:
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
`
输出坐标:
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
`
处理视频:
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
`
从网络摄像头读取:
V2:
`bash
暗网探测器演示 Animals.data Animals.cfg Animals_best.weights -c 0
`
V3:
`bash
darknet08display_网络摄像头动物
`
将结果保存到视频:
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
`
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
`
在特定 GPU 上运行:
V2:
`bash
暗网探测器演示 Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
检查神经网络的准确性:
`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.593 0 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:
`bash
暗网探测器地图animals.dataanimals.cfganimalsbest.weights-iothresh 0.75
`
重新计算锚点:
最好在 DarkMark 中重新计算锚点,因为它会连续运行 100 次并选择最佳锚点。但是,如果您想在 Darknet 中使用旧版本:
`bash
暗网探测器 calcanchors Animals.data -numof_clusters 6 -宽度 320 -高度 256
`
训练新网络:
`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 文件。列出您想要检测的类,每行只有一个条目,没有空行,也没有注释。对于此示例,.names 文件将包含四行:
`
狗
猫
鸟
马
`
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 内存,您可能需要调整细分。从 subdivisions=1 开始,如果不起作用,请参阅 Darknet/YOLO FAQ。
- Maxbatches:将 maxbatches 的起始值设置为类数的 2000 倍。对于本例,我们有 4 只动物,因此 max_batches=8000。
- 步骤:将步骤设置为 max_batches 的 80% 和 90%。在本例中,我们将使用steps=6400,7200。
- 宽度和高度:这些是网络尺寸。 Darknet/YOLO FAQ 解释了如何计算最佳大小。
- 类:搜索classes=... 的所有实例,并使用 .names 文件中的类数进行更新。在此示例中,我们将使用classes=4。
- 过滤器:在每个[yolo]部分之前的[卷积]部分中搜索filters=...的所有实例。要使用的值是 (numberofclasses + 5) 3。对于此示例,(4 + 5) 3 = 27。因此我们将在适当的行上使用filters=27。
9. 开始训练:
- 导航到 ~/nn/animals/ 目录:
`bash
cd ~/nn/动物/
`
- 运行以下命令开始训练:
`bash
暗网探测器-map-dont_show火车animals.dataanimals.cfg
`
- 要有耐心。最佳权重将保存为animals_best.weights。您可以通过观察chart.png文件来跟踪训练进度。请参阅 Darknet/YOLO 常见问题解答,了解您在训练期间可能需要使用的其他参数。
- 如果您想要更详细的训练信息,请添加 --verbose 参数:
`bash
暗网探测器-map-dont_show--verbose火车animals.dataanimals.cfg
`
其他工具和链接
DarkMark:用于管理 Darknet/YOLO 项目、注释图像、验证注释以及生成用于 Darknet 训练的文件。
DarkHelp:用于 Darknet 的强大替代 CLI,使用图像平铺、视频中的对象跟踪以及适合商业应用程序的强大 C++ API。
Darknet/YOLO 常见问题解答:用于回答您的问题的综合资源。
Stéphane 的 YouTube 频道:大量教程和示例视频。
Darknet/YOLO Discord 服务器:加入社区以获得支持和讨论。
路线图
最后更新于 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 或 std::list 替换旧的列表功能。
修复对 1 通道灰度图像的支持。
添加对 N 通道图像的支持,其中 N > 3(例如,具有附加深度或热通道的图像)。
继续正在进行的代码清理(正在进行中)。
长期目标
修复所有 GPU 的 CUDA/CUDNN 问题。
重写CUDA+cuDNN代码。
考虑添加对非 NVIDIA GPU 的支持。
添加旋转边界框或“角度”支持。
实施关键点/骨架。
添加热图(正在进行中)。
实施细分。