暗网目标检测框架和 YOLO
!darknet 和 hank.ai 徽标
Darknet 是一个用 C、C++ 和 CUDA 编写的开源神经网络框架。
YOLO(You Only Look Once)是一种在 Darknet 框架内运行的最先进的实时对象检测系统。
了解 Hank.ai 如何帮助 Darknet/YOLO 社区:https://hank.ai/
宣布 Darknet V3“Jazz”:https://darknetcv.ai/
请仔细阅读 Darknet/YOLO 常见问题解答:https://darknetcv.ai/faq/
加入 Darknet/YOLO Discord 服务器:https://discord.gg/zSq8rtW
文件
1.论文YOLOv7:https://arxiv.org/abs/2207.02670
2.Paper Scaled-YOLOv4:https://arxiv.org/abs/2103.05293
3.论文YOLOv4:https://arxiv.org/abs/2004.10934
4.论文YOLOv3:https://pjreddie.com/media/files/papers/YOLOv3.pdf
一般信息
Darknet/YOLO 框架仍然比其他框架和 YOLO 版本更快、更准确。
该框架是完全免费且开源的。您可以将 Darknet/YOLO 整合到现有项目和产品中,包括商业项目和产品,而无需许可或支付费用。
Darknet V3(“Jazz”)于 2024 年 10 月发布,使用 NVIDIA RTX 3090 GPU 时,可以以高达 1000 FPS 的速度准确运行乐高数据集视频。这意味着每个视频帧由 Darknet/YOLO 在 1 毫秒或更短的时间内读取、调整大小和处理。
Darknet/YOLO 的 CPU 版本可以在简单的设备上运行,例如 Raspberry Pi、云和 Colab 服务器、台式机、笔记本电脑和高端训练设备。 Darknet/YOLO 的 GPU 版本需要 NVIDIA 提供的支持 CUDA 的 GPU。
众所周知,Darknet/YOLO 可在 Linux、Windows 和 Mac 上运行。请参阅下面的搭建说明。
暗网版本
1. 版本 0.x:由 Joseph Redmon 在 2013-2017 年编写的原始暗网工具。
2. 版本 1.x:下一个流行的暗网存储库,由 Alexey Bochkovskiy 在 2017 年至 2021 年期间维护。
3. 版本 2.x“OAK”:由 Hank.ai 赞助并由 Stéphane Charette 维护的暗网存储库,从 2023 年开始。它是第一个带有版本命令的存储库。该版本带来了以下变化:
- 重新编写了 Windows 和 Linux 上统一 CMake 方法的构建步骤。
- 将代码库转换为使用 C++ 编译器。
- 增强了训练期间的图表.png 生成。
- 与训练时间相关的错误修复和性能优化。
4. 版本 2.1:2.x 代码库的最后一个分支,可在 v2 分支中找到。
5.版本3.x“JAZZ”:下一阶段开发,于2024年10月发布。
- 删除了许多旧的和未维护的命令。
- 实施了训练和推理的性能优化。
- 修改了旧版 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
如果您需要运行该版本中的命令之一,您可以随时查看之前的 v2 分支。如果您遇到任何丢失的命令,请告诉我们,以便我们研究将它们添加回来。
MSCOCO 预训练权重
为了方便起见,YOLO 的几个流行版本在 MSCOCO 数据集上进行了预训练。该数据集有 80 个类,可以在文本文件 cfg/coco.names 中看到。
还有其他几个更简单的数据集和预训练权重可用于测试 Darknet/YOLO,例如 LEGO Gears 和 Rolodex。有关详细信息,请参阅 Darknet/YOLO 常见问题解答。
MSCOCO 预训练权重可以从多个不同位置下载,包括此存储库:
YOLOv2(2016 年 11 月):
yolov2-tiny.weights
yolov2-full.weights
YOLOv3(2018 年 5 月):
yolov3-tiny.weights
yolov3-full.权重
YOLOv4(2020 年 5 月):
yolov4-tiny.weights
yolov4-full.weights
YOLOv7(2022 年 8 月):
yolov7-tiny.weights
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,就像您不需要成为一名机械师来驾驶汽车一样。
谷歌合作实验室
Google Colab 指令与 Linux 指令相同。有多个 Jupyter 笔记本展示了如何执行各种任务,例如训练新网络。
请参阅 colab 子目录中的笔记本,或按照下面的 Linux 说明进行操作。
Linux CMake方法
Linux 暗网构建教程
1. 可选:如果您有现代 NVIDIA GPU,则此时可以安装 CUDA 或 CUDA+cuDNN。如果安装,Darknet 将使用您的 GPU 来加速图像(和视频)处理。
2.安装必要的软件包:
`bash
sudo apt-get install build-essential git libopencv-dev cmake
`
3.克隆暗网存储库:
`bash
mkdir ~/srccd ~/src
git 克隆 https://github.com/hank-ai/darknet
`
4.创建构建目录:
`bash
CD暗网
mkdir 构建
光盘构建
`
5.生成CMake项目文件:
`bash
cmake -DCMAKEBUILDTYPE=发布 ..
`
重要提示:您必须从 Darknet 构建目录中删除 CMakeCache.txt 文件,以强制 CMake 重新查找所有必需的文件。
6. 构建暗网:
`bash
制作-j4包
`
7.安装暗网包:
`bash
sudo dpkg -i darknet-VERSION.deb
`
安装 CUDA 和 cuDNN(可选)
Darknet 可以在没有 CUDA 的情况下运行,但如果要训练自定义网络,则需要 CUDA 或 CUDA+cuDNN。
1.安装CUDA:
- 访问 https://developer.nvidia.com/cuda-downloads 下载并安装 CUDA。
- 确保您可以运行 nvcc 和 nvidia-smi。您可能需要修改 PATH 变量。
2.安装cuDNN:
- 访问 https://developer.nvidia.com/rdp/cudnn-download 或 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview下载并安装 cuDNN。
升级 CUDA 或 cuDNN
如果您稍后安装 CUDA 或 CUDA+cuDNN,或升级到较新版本的 NVIDIA 软件:
1. 重建暗网:
- 从 Darknet 构建目录中删除 CMakeCache.txt 文件。
- 再次运行 cmake 和 make 命令。
高级用户
要构建 RPM 安装文件而不是 DEB 文件,请在运行 make -j4 package 之前编辑 CM_package.cmake 中的相关行。
`cmake
# 设置(CPACK_GENERATOR“DEB”)
设置(CPACK_GENERATOR“RPM”)
`
要在安装包完成构建后进行安装,请使用您的发行版常用的包管理器。例如,在基于 Debian 的系统(例如 Ubuntu)上:
`bash
sudo dpkg -i darknet-2.0.1-Linux.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 模板的位置。
运行以下命令来测试安装:
`bash
暗网版本
`
Windows CMake方法
Windows 暗网构建教程
1.安装所需软件:
- 打开普通的 cmd.exe 命令提示符窗口并运行以下命令:
`bash
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 执行这些步骤!
- 运行以下命令:
`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
`
重要提示:最后一步请耐心等待,因为它可能需要很长时间才能运行。它需要下载和构建很多东西。
4.可选:安装CUDA和cuDNN
- 如果您有现代 NVIDIA GPU,则此时可以安装 CUDA 或 CUDA+cuDNN。如果安装,Darknet 将使用您的 GPU 来加速图像(和视频)处理。
- 您必须从 Darknet 构建目录中删除 CMakeCache.txt 文件,以强制 CMake 重新查找所有必需的文件。
- 记得重建暗网。
5.安装CUDA:
- 访问 https://developer.nvidia.com/cuda-downloads 下载并安装 CUDA。
- 确保您可以运行 nvcc.exe 和 nvidia-smi.exe。您可能需要修改 PATH 变量。
6.安装cuDNN:
- 访问 https://developer.nvidia.com/rdp/cudnn-download 或 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows 下载并安装 cuDNN。
- 下载 cuDNN 后,解压并将 bin、include 和 lib 目录复制到 C:/Program Files/NVIDIA GPU Compute Toolkit/CUDA/[version]/ 中。您可能需要覆盖一些文件。
7. 克隆 Darknet 存储库并构建:
`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
`
8. 复制 CUDA DLL(可选):
- 如果出现有关某些缺少 CUDA 或 cuDNN DLL(例如 cublas64_12.dll)的错误,请手动将 CUDA .dll 文件复制到与 darknet.exe 相同的输出目录中。例如:
`bash
复制“C:Program FilesNVIDIA GPU计算工具包CUDAv12.2bin * .dll”src-cliRelease
`
9. 重新运行msbuild.exe生成NSIS安装包:
`bash
msbuild.exe /property:平台=x64;配置=发布 PACKAGE.vcxproj
`
高级用户
您可以使用普通命令提示符或 ssh 进入设备并手动运行 Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat,而不是运行开发人员命令提示符。
构建 OpenCV 时您可以添加许多其他可选模块。运行 .vcpkg.exe 搜索 opencv 以查看完整列表。
cmake 命令的输出是一个普通的 Visual Studio 解决方案文件 Darknet.sln。如果您是经常使用 Visual Studio GUI 的软件开发人员,则可以忽略命令行并在 Visual Studio 中加载 Darknet 项目。
测试安装
您现在应该有以下文件:C:srcDarknetbuildsrc-cliReleasedarknet.exe。运行以下命令来测试安装:
`bash
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 文件。
运行 NSIS 向导后,运行以下命令来测试安装:
`bash
C:Program FilesDarknetbindarknet.exe 版本
`
使用暗网
命令行界面
以下不是 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. 重新计算锚点:
- DarkMark:最好在 DarkMark 中重新计算锚点,因为它会连续运行 100 次,并从所有计算的锚点中选择最佳锚点。
- 暗网:如果你想在暗网中使用旧方法:
`bash
暗网探测器 calcanchors Animals.data -numof_clusters 6 -宽度 320 -高度 256
`
13. 训练新网络:
`bash
cd ~/nn/动物/
暗网探测器-map-dont_show火车animals.dataanimals.cfg
`
训练
暗网/YOLO 常见问题解答相关部分的快速链接
1. 我应该如何设置我的文件和目录?
2. 我应该使用哪个配置文件?
3. 训练自己的网络时应该使用什么命令?
使用 DarkMark 进行注释和训练(推荐)
最简单的注释和训练方法是使用 DarkMark,它会创建所有必要的 Darknet 文件。强烈建议这用于训练新的神经网络。
手动设置文件来训练自定义网络
如果您更喜欢手动设置,请按照下列步骤操作:
1. 创建一个新文件夹:
- 创建一个新文件夹来存储您的训练文件。例如,您可以创建 ~/nn/animals/ 来训练动物检测网络。
2. 复制配置文件模板:
- 从 cfg/ 复制暗网配置文件之一作为模板。例如,您可以使用 cfg/yolov4-tiny.cfg。将其放入您创建的文件夹中。现在你应该有~/nn/animals/animals.cfg。
3. 创建一个animals.names文件:
- 在与配置文件相同的文件夹中创建一个名为animals.names 的文本文件。
4. 编辑animals.names文件:
- 列出您想要检测的类,每行一个条目,没有空行或注释。例如:
`
狗
猫
鸟
马
`
5.创建animals.data文件:
- 在同一文件夹中创建一个名为animals.data 的文本文件。
- 例如,animals.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。
7. 注释图像:
- 每个图像都需要一个带有注释的相应 .txt 文件。这些 .txt 文件的格式是特定的,并且需要注释的精确坐标。使用 DarkMark 或类似软件来注释您的图像。
8. 创建animalstrain.txt和animalsvalid.txt:
- 这些文本文件分别列出了用于训练和验证的图像。每个图像应位于单独的行上,并具有相对或绝对路径。
9、修改配置文件:
- 用文本编辑器打开animals.cfg并进行以下修改:
-batch=64:确保设置该值。
- 细分:最佳使用值为 1。您可能需要根据 GPU 内存和网络尺寸增加此值。
- maxbatches:将其设置为合理的值,通常为类数的 2000 倍。对于本示例,使用 maxbatches=8000(4 个类 * 2000)。
- 步骤:将这些设置为最大批次的 80% 和 90%。对于本例,使用steps=6400,7200(因为maxbatches=8000)。
- 宽度和高度:将其设置为您所需的网络尺寸。请参阅 Darknet/YOLO 常见问题解答,获取有关选择最佳尺寸的指南。
-classes:搜索该行的所有实例并修改它以匹配 .names 文件中的类数(在本例中,classes=4)。
- 过滤器:在每个 [yolo] 部分之前的 [卷积] 部分中搜索该行的所有实例。要使用的值是 (numberofclasses + 5) 3。对于此示例,使用filters=27 (4 + 5 3)。
10. 开始训练:
`bash
cd ~/nn/动物/
暗网探测器-map-dont_show火车animals.dataanimals.cfg
`
11. 监控培训进度:
- 要有耐心!最佳权重将保存为animals_best.weights。
- 您可以通过查看chart.png文件来监控训练进度。
- 请参阅 Darknet/YOLO 常见问题解答,了解您可能希望在训练期间使用的其他参数。
12. 为训练输出添加详细信息:
`bash
暗网探测器-map-dont_show--verbose火车animals.dataanimals.cfg
`
其他工具和链接
DarkMark:用于管理 Darknet/YOLO 项目、注释图像、验证注释以及生成用于 Darknet 训练的文件。
DarkHelp:用于 Darknet 的强大替代 CLI,使用图像平铺、视频中的对象跟踪以及可在商业应用程序中使用的强大 C++ API。
Darknet/YOLO 常见问题解答:https://darknetcv.ai/faq/
Stéphane 的 YouTube 频道:https://www.youtube.com/channel/UCYQ2k0L3X0c56l9gE2r1RQ
Darknet/YOLO Discord 服务器:https://discord.gg/zSq8rtW
路线图
最后更新于 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 的支持。
旋转边界框,或某种“角度”支持。
关键点/骨架。
热图(正在进行中)。
分割。