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 version
darknet help
darknet detector test animals.data animals.cfg animals_best.weights dog.jpg
artwork
目录中的样本图像进行预测: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.jpg
darknet detector demo animals.data animals.cfg animals_best.weights -ext_output test.mp4
darknet detector demo animals.data animals.cfg animals_best.weights -c 0
darknet detector demo animals.data animals.cfg animals_best.weights http://192.168.0.80:8080/video?dummy=param.mjpg
darknet detector demo animals.data animals.cfg animals_best.weights test.mp4 -out_filename res.avi
darknet detector demo animals.data animals.cfg animals_best.weights test50.mp4 -json_port 8070 -mjpeg_port 8090 -ext_output
darknet detector demo animals.data animals.cfg animals_best.weights -i 1 test.mp4
darknet 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.75
darknet 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
结构一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助 力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令 牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更 快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是 一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作 总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。