
Darknet是一个用C、C++和CUDA编写的开源神经网络框架。
YOLO(You Only Look Once)是一个最先进的实时目标检测系统,在Darknet框架中运行。
YOLOv7的准确性和速度比YOLOv5快120% FPS,比YOLOX快180% FPS,比Dual-Swin-T快1200% FPS,比ConvNext快550% FPS,比SWIN-L快500% FPS,比PPYOLOE-X快150% FPS。
在5 FPS到160 FPS的范围内,YOLOv7在速度和准确性方面都超过了所有已知的目标检测器,并且在GPU V100上,batch=1,30 FPS或更高的所有已知实时目标检测器中具有最高的准确性56.8% AP。

为了方便起见,YOLO的几个流行版本在MSCOCO数据集上进行了预训练。该数据集有80个类别,可以在文本文件cfg/coco.names中查看。
预训练权重可以从多个不同的位置下载,也可以从本仓库下载:
MSCOCO预训练权重仅供演示使用。人们应该训练自己的网络。
过去可用的各种构建方法已合并为一个统一的解决方案。Darknet需要OpenCV,并使用CMake生成必要的项目文件。
**注意,如果你正在按照旧教程进行更复杂的构建步骤,或者构建步骤与本readme中的不一致,请小心。**新的构建步骤如下所述,始于2023年8月。
鼓励软件开发人员访问https://darknetcv.ai/ 获取有关Darknet/YOLO目标检测框架内部的信息。
nvcc和nvidia-smi。你可能需要修改你的PATH变量。build目录中的CMakeCache.txt文件,以强制CMake重新查找所有必要的文件。这些说明假设系统运行Ubuntu 22.04。
sudo apt-get install build-essential git libopencv-dev cmake mkdir ~/src cd ~/src git clone https://github.com/hank-ai/darknet cd darknet mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j4 package sudo dpkg -i darknet-VERSION.deb
如果你使用的是较旧版本的CMake,那么在运行上述cmake命令之前,你需要升级CMake。在Ubuntu上升级CMake可以通过以下命令完成:
sudo apt-get purge cmake sudo snap install cmake --classic
高级用户:
如果你想构建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
安装软件包将复制以下文件:
/usr/bin/darknet 是常用的 Darknet 可执行文件。从命令行运行 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 install Git.Git winget install Kitware.CMake winget install nsis.nsis winget install Microsoft.VisualStudio.2022.Community
此时我们需要修改 Visual Studio 安装以包含对 C++ 应用程序的支持:
修改使用 C++ 的桌面开发修改,然后点击 是
一切下载安装完成后,再次点击"Windows 开始"菜单并选择 Developer Command Prompt for VS 2022。不要使用 PowerShell 进行这些步骤,否则会遇到问题!高级用户:
不运行
Developer Command Prompt的话,您可以使用普通命令提示符或 ssh 到设备上,然后手动运行"\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"。
按上述说明运行 Developer Command Prompt 后,运行以下命令安装 Microsoft VCPKG,然后用它来构建 OpenCV:
cd c:\ mkdir c:\src cd c:\src git clone https://github.com/microsoft/vcpkg cd vcpkg bootstrap-vcpkg.bat .\vcpkg.exe integrate install .\vcpkg.exe integrate powershell .\vcpkg.exe install opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
在最后一步要耐心等待,因为可能需要很长时间运行。它需要下载和构建许多内容。
高级用户:
注意,构建 OpenCV 时还有许多其他可选模块可以添加。运行
.\vcpkg.exe search opencv查看完整列表。
nvcc 和 nvidia-smi。您可能需要修改 PATH 变量。C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[版本]/。可能需要覆盖一些文件。build 目录中的 CMakeCache.txt 文件,以强制 CMake 重新查找所有必要的文件。前面所有步骤成功完成后,您需要克隆 Darknet 并构建它。在这一步中,我们还需要告诉 CMake vcpkg 的位置,以便它可以找到 OpenCV 和其他依赖项:
cd c:\src git clone https://github.com/hank-ai/darknet.git cd darknet mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release -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:Platform=x64;Configuration=Release PACKAGE.vcxproj
如果出现缺少某些 CUDA 或 cuDNN DLL 的错误,例如 cublas64_12.dll,则手动将 CUDA .dll 文件复制到与 Darknet.exe 相同的输出目录。例如:
copy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\bin\*.dll" src-cli\Release\
(这只是一个示例!请确认您正在运行的版本,并运行适合您安装内容的命令。)
文件复制完成后,重新运行最后一个 msbuild.exe 命令以生成 NSIS 安装包:
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
高级用户:
请注意,
cmake命令的输出是一个普通的 Visual Studio 解决方案文件Darknet.sln。如果您是经常使用 Visual Studio GUI 而不是msbuild.exe来构建项目的软件开发人员,可以忽略命令行并在 Visual Studio 中加载 Darknet 项目。
您现在应该有这个可以运行的文件: C:\src\Darknet\build\src-cli\Release\darknet.exe。运行以下命令进行测试: C:\src\Darknet\build\src-cli\Release\darknet.exe version。
要正确安装 Darknet、库文件、包含文件和必要的 DLL,请运行在最后一步构建的 NSIS 安装向导。查看 build 目录中的 darknet-VERSION.exe 文件。例如:
darknet-2.0.31-win64.exe
安装 NSIS 安装包将:
Darknet 的目录,例如 C:\Program Files\Darknet\。darknet.exe。.dll 文件,例如来自 OpenCV 的文件。.dll、.lib 和 .h 文件,以便从其他应用程序使用 darknet.dll。.cfg 文件。现在您已完成! 安装向导完成后,Darknet 将被安装到 C:\Program Files\Darknet\。运行以下命令进行测试: C:\Program Files\Darknet\bin\darknet.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 文件。您可以训练自己的网络(强烈推荐!)或下载 MSCOCO 预训练 .weights 文件。.cfg 和 .names 文件位于仓库中的 cfg 目录。
darknet versiondarknet helpdarknet detector test animals.data animals.cfg animals_best.weights dog.jpgartwork目录中的样本图像进行预测:cd src/darknet/ wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights darknet detector test cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights artwork/dog.jpg
cd src/darknet/ DarkHelp cfg/coco.names cfg/yolov4-tiny.cfg yolov4-tiny.weights artwork/dog.jpg # DarkHelp对.names、.cfg和.weights文件的列出顺序并不重要。
darknet detector test animals.data animals.cfg animals_best.weights -ext_output dog.jpgdarknet detector demo animals.data animals.cfg animals_best.weights -ext_output test.mp4darknet detector demo animals.data animals.cfg animals_best.weights -c 0darknet detector demo animals.data animals.cfg animals_best.weights http://192.168.0.80:8080/video?dummy=param.mjpgdarknet detector demo animals.data animals.cfg animals_best.weights test.mp4 -out_filename res.avidarknet detector demo animals.data animals.cfg animals_best.weights test50.mp4 -json_port 8070 -mjpeg_port 8090 -ext_outputdarknet detector demo animals.data animals.cfg animals_best.weights -i 1 test.mp4darknet detector map driving.data driving.cfg driving_best.weights ... Id 名称 平均精度 TP FN FP TN 准确率 错误率 精确度 召回率 特异性 假阳性率 -- ---- ------------ ------ ------ ------ ------ -------- --------- --------- ------ ----------- ------------ 0 vehicle 91.2495 32648 3903 5826 65129 0.9095 0.0905 0.8486 0.8932 0.9179 0.0821 1 motorcycle 80.4499 2936 513 569 5393 0.8850 0.1150 0.8377 0.8513 0.9046 0.0954 2 bicycle 89.0912 570 124 104 3548 0.9475 0.0525 0.8457 0.8213 0.9715 0.0285 3 person 76.7937 7072 1727 2574 27523 0.8894 0.1106 0.7332 0.8037 0.9145 0.0855 4 many vehicles 64.3089 1068 509 733 11288 0.9087 0.0913 0.5930 0.6772 0.9390 0.0610 5 green light 86.8118 1969 239 510 4116 0.8904 0.1096 0.7943 0.8918 0.8898 0.1102 6 yellow light 82.0390 126 38 30 1239 0.9525 0.0475 0.8077 0.7683 0.9764 0.0236 7 red light 94.1033 3449 217 451 4643 0.9237 0.0763 0.8844 0.9408 0.9115 0.0885
darknet detector map animals.data animals.cfg animals_best.weights -iou_thresh 0.75darknet detector calc_anchors animals.data -num_of_clusters 6 -width 320 -height 256
darknet detector -map -dont_show train animals.data animals.cfg(另请参阅下面的训练部分)Darknet/YOLO常见问题解答相关部分的快速链接:
最简单的注释和训练方法是使用DarkMark来创建所有必要的Darknet文件。这绝对是训练新神经网络的 推荐方法。
如果你更愿意手动设置各种文件来训练自定义网络:
~/nn/animals/。cfg/yolov4-tiny.cfg。将其放在你创建的文件夹中。在这个例子中,我们现在有了~/nn/animals/animals.cfg。animals.names文本文件。在这个例子中,我们现在有了~/nn/animals/animals.names。animals.names文件。列出你想使用的类别。每行必须恰好有1个条目,没有空行和注释。在这个例子中,.names文件将包含恰好4行:dog cat bird horse
animals.data文本文件。在这个例子中 ,.data文件将包含:classes = 4 train = /home/username/nn/animals/animals_train.txt valid = /home/username/nn/animals/animals_valid.txt names = /home/username/nn/animals/animals.names backup = /home/username/nn/animals
创建一个文件夹来存储你的图像和标注。例如,可以是 ~/nn/animals/dataset。每张图像都需要一个对应的 .txt 文件来描述该图像的标注。.txt 标注文件的格式非常特殊。你不能手动创建这些文件,因为每个标注都需要包含精确的坐标。请使用 DarkMark 或其他类似软件来标注你的图像。YOLO 标注格式在 Darknet/YOLO FAQ 中有描述。
创建 .data 文件中指定的"train"和"valid"文本文件。这两个文本文件需要分别列出 Darknet 必须用于训练和验证时计算 mAP% 的所有图像。每 行一个图像。路径和文件名可以是相对路径或绝对路径。
用文本编辑器修改你的 .cfg 文件。
batch=64。1,所以从这个开始。如果 1 不适合你,请参阅 Darknet/YOLO FAQ。max_batches=...。开始时使用的一个好值是类别数量的 2000 倍。在这个例子中,我们有 4 种动物,所以 4 * 2000 = 8000。意味着我们将使用 max_batches=8000。steps=...。这应该设置为 max_batches 的 80% 和 90%。对于这个例子,我们将使用 steps=6400,7200,因为 max_batches 设置为 8000。width=... 和 height=...。这些是网络尺寸。Darknet/YOLO FAQ 解释了如何计算最佳使用尺寸。classes=... 行的实例,并修改为 .names 文件中的类别数。对于这个例子,我们将使用 classes=4。[yolo] 部分之前的 [convolutional] 部分中所有 filters=... 行的实例。使用的值是 (类别数 + 5) * 3。意味着对于这个例子,(4 + 5) * 3 = 27。所以我们在适当的行上使用 filters=27。开始训练! 运行以下命令:
cd ~/nn/animals/ darknet detector -map -dont_show train animals.data animals.cfg
请耐心等待。最佳权重将保存为 animals_best.weights。训练进度可以通过查看 chart.png 文件观察。有关训练新网络时可能想要使用的其他参数,请参阅 Darknet/YOLO FAQ。
如果你想在训练期间看到更多细节,添加 --verbose 参数。例如:
darknet detector -map -dont_show --verbose train animals.data animals.cfg
最后更新 2024-05-13:
cv::Mat 而不是 C 中的自定义 image 结构cv::Mat 转换为 void*,而是将其作为proper的 C++ 对象使用image 结构

AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商 家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。


选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号