暗网目标检测框架和 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.dataanimals.cfganimalsbest.weightstest.mp4-outfilenameres.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.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:
`bash
暗网探测器地图animals.dataanimals.cfganimalsbest.weights-iouthresh 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 的支持。
添加旋转边界框或“角度”支持。
实施关键点/骨架。
添加热图(正在进行中)。
实施分段。