Video2X: 高质量视频放大和帧插值框架
源码网小编
Important
版本 4 和 5 已经达到生命周期结束 (EOL) 状态。由于开发资源有限,任何低于 6 的版本相关问题将不再得到解决。
版本 6.0.0
下载 Windows 安装程序
简而言之:版本 6.0.0 是 Video2X 项目在 C/C++ 中的完全重写,具有更快速、更高效的架构、跨平台支持、大幅提升的输出质量以及用于在 Windows 上轻松设置的新 GUI 和安装程序。
版本 6.0.0 是该项目的完全重写,它在 C/C++ 中实现,并包含以下特性:
1. 更快的架构:通过利用多线程和 GPU 加速,Video2X 现在比以前快得多。
2. 跨平台支持:Video2X 现在可在 Windows、Linux 和 macOS 上运行。
3. 改进的输出质量:Video2X 现在提供更高的放大质量,尤其是对于高分辨率视频。
4. 新的 GUI:Video2X 现在具有用户友好的 GUI,简化了设置和使用过程。
5. 新的安装程序:Video2X 现在提供一个易于使用的安装程序,可以帮助您在 Windows 上快速轻松地安装该软件。
对 RealCUGAN 和使用 RIFE 的帧插值的支持即将推出。
下载 Windows 版本
您可以从 发布页面 下载最新的 Windows 版本。有关基本 GUI 用法,请参阅 GUI wiki 页面。如果您无法从 GitHub 直接下载,请尝试使用 镜像。GUI 目前支持以下语言:
1. 英语
2. 简体中文
3. 繁体中文
4. 日语
5. 韩语
6. 法语
7. 德语
8. 意大利语
9. 西班牙语
10. 葡萄牙语
11. 俄语
在 Linux 上安装
您可以使用 video2x-git 软件包在 Arch Linux 上安装 Video2X,或从 发布页面 下载预编译的二进制文件。如果您想从源代码构建,请参阅 PKGBUILD 文件 以了解所需软件包和命令的概述。如果您不想从源代码编译程序,请考虑使用下面的容器镜像。
容器镜像
Video2X 容器镜像可在 GitHub 容器注册表中获得,以便在 Linux 和 macOS 上轻松部署。如果您已经安装了 Docker/Podman,只需一条命令即可启动视频放大。有关如何使用 Video2X 的 Docker 镜像的更多信息,请参阅 文档。
Google Colab(已过时:5.0.0-beta7)
如果您没有自己的强大 GPU,可以在 Google Colab 上免费使用 Video2X。您可以在 Google 的服务器上免费借用强大的 GPU(NVIDIA T4、L4 或 A100),每个会话最多使用 12 小时。请公平使用免费资源,不要创建连续的会话并在 24/7 运行放大。这可能导致您被封禁。如果您想使用更好的 GPU 并获得更长的运行时间,可以获取 Colab Pro/Pro+。使用说明已嵌入 Colab 笔记本中。
Telegram 讨论组
加入我们的 Telegram 讨论组,询问您有关 Video2X 的任何问题,直接与开发人员聊天,或讨论超分辨率技术以及 Video2X 的未来。
文档
Video2X 的文档托管在本仓库的 Wiki 页面。它包括有关如何使用 GUI、CLI、容器镜像、库等的全面说明。Wiki 向社区开放编辑,因此您,是的您,也可以更正错误或向文档添加新内容。
介绍
Video2X 是一个基于机器学习的视频放大和帧插值框架,它围绕三个主要组件构建:
1. 模型:Video2X 使用各种先进的深度学习模型来执行放大和帧插值。
2. 引擎:Video2X 引擎负责处理视频数据、执行模型推理以及生成输出视频。
3. 界面:Video2X 提供了多种界面,例如 GUI、CLI 和容器镜像,使您能够轻松地使用该框架。
视频演示
放大演示:《千与千寻》电影预告片
标准测试片段
以下片段可用于测试您的设置是否正常工作。这也是用于运行性能基准测试的标准片段。
原始片段来自动画《樱花庄的宠物女孩》。
此片段的版权归株式会社アニプレックス所有。
许可证
该项目是在 GNU AGPL 版本 3 的许可下发布的。
版权所有 (C) 2018-2024 K4YT3X 和贡献者。
该项目包括或依赖于以下项目:
1. opencv: https://github.com/opencv/opencv
2. waifu2x-caffe: https://github.com/nagadomi/waifu2x-caffe
3. Real-ESRGAN: https://github.com/xinntao/Real-ESRGAN
4. BasicSR: https://github.com/xinntao/BasicSR
5. GFPGAN: https://github.com/TencentARC/GFPGAN
6. RIFE: https://github.com/hzwer/arXiv2021-RIFE
7. Anime4K: https://github.com/bloc97/Anime4K
您可以在 NOTICE 文件中找到更多许可信息。
特别感谢
特别感谢以下个人对该项目的重大贡献,按字母顺序排列:
1. K4YT3X: 项目创建者
2. 贡献者:感谢所有为该项目做出贡献的人。
例如:
Apache-2.0 许可证
目录
Darknet 对象检测框架和 YOLO
1. 论文
2. 一般信息
3. Darknet 版本
4. MSCOCO 预训练权重
5. 构建
1. Google Colab
2. Linux CMake 方法
3. Windows CMake 方法
6. 使用 Darknet
1. CLI
2. 训练
7. 其他工具和链接
8. 路线图
1. 短期目标
2. 中期目标
3. 长期目标
Darknet 对象检测框架和 YOLO
Darknet 是一个用 C、C++ 和 CUDA 编写的开源神经网络框架。
YOLO (You Only Look Once) 是一种最先进的实时目标检测系统,在 Darknet 框架中运行。
阅读 Hank.ai 如何帮助 Darknet/YOLO 社区
宣布 Darknet V3 “Jazz”
查看 Darknet/YOLO 网站
请阅读 Darknet/YOLO 常见问题解答
加入 Darknet/YOLO Discord 服务器
论文
1. YOLOv7 论文
2. Scaled-YOLOv4 论文
3. YOLOv4 论文
4. YOLOv3 论文
一般信息
Darknet/YOLO 框架继续比其他框架和 YOLO 版本更快、更准确。
该框架完全免费且开源。您可以将 Darknet/YOLO 整合到现有项目和产品中(包括商业产品),无需许可或付费。
2024 年 10 月发布的 Darknet V3(“Jazz”)在使用 NVIDIA RTX 3090 GPU 时可以准确地以高达 1000 FPS 的速度运行 LEGO 数据集视频,这意味着每个视频帧在 1 毫秒或更短的时间内由 Darknet/YOLO 读取、调整大小和处理。
如果您需要帮助或想讨论 Darknet/YOLO,请加入 Darknet/YOLO Discord 服务器:https://discord.gg/zSq8rtW
Darknet/YOLO 的 CPU 版本可以在简单的设备上运行,例如 Raspberry Pi、云和 colab 服务器、台式机、笔记本电脑和高端训练设备。Darknet/YOLO 的 GPU 版本需要 NVIDIA 的 CUDA 兼容 GPU。
已知 Darknet/YOLO 可以在 Linux、Windows 和 Mac 上运行。请参阅下面的构建说明。
Darknet 版本
Joseph Redmon 在 2013-2017 年编写的原始 Darknet 工具没有版本号。我们认为这是版本 0.x。
由 Alexey Bochkovskiy 在 2017-2021 年维护的下一个流行 Darknet 库也没有版本号。我们认为这是版本 1.x。
从 2023 年开始由 Hank.ai 赞助并由 Stéphane Charette 维护的 Darknet 库是第一个具有版本命令的库。从 2023 年到 2024 年底,它返回版本 2.x “OAK”。
目标是在尽可能少地破坏现有功能的同时,熟悉代码库。
1. 重写了构建步骤,因此我们现在可以使用 CMake 在 Windows 和 Linux 上构建。
2. 将代码库转换为使用 C++ 编译器。
3. 增强了训练期间的 chart.png。
4. 修复错误并进行与性能相关的优化,主要与缩短训练网络所需时间有关。
该代码库的最后一个分支是 v2 分支中的版本 2.1。
下一阶段的开发始于 2024 年年中,并于 2024 年 10 月发布。版本命令现在返回 3.x “JAZZ”。
如果您需要运行这些命令中的一个,始终可以签出以前的 v2 分支。请告知我们,以便我们调查添加回任何缺少的命令。
1. 删除了许多旧的和未维护的命令。
2. 进行了许多性能优化,包括在训练和推理期间。
3. 修改了旧的 C API;使用原始 Darknet API 的应用程序将需要进行少量修改:https://darknetcv.ai/api/api.html
4. 新的 Darknet V3 C 和 C++ API:https://darknetcv.ai/api/api.html
5. src-examples 中的新应用程序和示例代码:https://darknetcv.ai/api/files.html
MSCOCO 预训练权重
出于方便起见,YOLO 的几个流行版本在 MSCOCO 数据集上进行了预训练。该数据集包含 80 个类别,可以在文本文件 cfg/coco.names 中看到。
还有其他几个更简单的 datasets 和预训练权重可用于测试 Darknet/YOLO,例如 LEGO Gears 和 Rolodex。有关详细信息,请参阅 Darknet/YOLO 常见问题解答。
MSCOCO 预训练权重可以从几个不同的位置下载,也可以从这个 repo 下载:
1. YOLOv2,2016 年 11 月
1. YOLOv2-tiny
2. YOLOv2-full
2. YOLOv3,2018 年 5 月
1. YOLOv3-tiny
2. YOLOv3-full
3. YOLOv4,2020 年 5 月
1. YOLOv4-tiny
2. YOLOv4-full
4. YOLOv7,2022 年 8 月
1. YOLOv7-tiny
2. 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
Google Colab 说明与 Linux 说明相同。有几个 Jupyter 笔记本可供参考,展示了如何执行某些任务,例如训练新网络。
查看 colab 子目录中的笔记本,或按照下面的 Linux 说明操作。
Linux CMake 方法
Darknet 构建教程适用于 Linux
可选:如果您拥有现代 NVIDIA GPU,则可以在此时安装 CUDA 或 CUDA+cuDNN。如果已安装,Darknet 将使用您的 GPU 来加速图像(和视频)处理。
您必须从 Darknet 构建目录中删除 CMakeCache.txt 文件,以强制 CMake 重新查找所有必需的文件。
请记住重新构建 Darknet。
Darknet 可以运行而无需它,但如果您想训练自定义网络,则需要 CUDA 或 CUDA+cuDNN。
访问 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-installation-overview 下载并安装 cuDNN。
安装 CUDA 后,确保您可以运行 nvcc 和 nvidia-smi。您可能需要修改 PATH 变量。
如果您在稍后安装了 CUDA 或 CUDA+cuDNN,或者您升级到 NVIDIA 软件的更新版本:
这些说明假设(但不要求!)系统运行 Ubuntu 22.04。如果您使用的是其他发行版,请根据需要进行调整。
`bash
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
git clone https://github.com/hank-ai/darknet
cd darknet
mkdir build
cd build
cmake -DCMAKEBUILDTYPE=Release ..
make -j4 package
sudo dpkg -i darknet-VERSION.deb
`
如果您使用的是旧版本的 CMake,则需要升级 CMake 才能运行上面的 cmake 命令。在 Ubuntu 上升级 CMake 可以通过以下命令完成:
`bash
sudo apt-get purge cmake
sudo snap install cmake --classic
`
如果您使用 bash 作为您的命令 shell,您需要在此时重新启动您的 shell。如果您使用的是 fish,它应该立即拾取新的路径。
高级用户:
如果您想构建 RPM 安装文件而不是 DEB 文件,请参阅 CM_package.cmake 中的相关行。在运行 make -j4 package 之前,您需要编辑这两行:
`bash
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
`
对于 Centos 和 OpenSUSE 等发行版,您需要将 CM_package.cmake 中这两行切换为:
`bash
SET (CPACK_GENERATOR "DEB")
SET (CPACK_GENERATOR "RPM")
`
要安装安装包,请在它完成构建后使用您发行版的常规包管理器。例如,在基于 Debian 的系统(如 Ubuntu)上:
`bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
安装 .deb 包将复制以下文件:
1. /usr/bin/darknet 是通常的 Darknet 可执行文件。从 CLI 运行 darknet version 以确认它已正确安装。
2. /usr/include/darknet.h 是供 C、C++ 和 Python 开发人员使用的 Darknet API。
3. /usr/include/darknet_version.h 包含供开发人员使用的版本信息。
4. /usr/lib/libdarknet.so 是供 C、C++ 和 Python 开发人员链接的库。
5. /opt/darknet/cfg/... 是存储所有 .cfg 模板的位置。
您现在完成了!Darknet 已构建并安装到 /usr/bin/ 中。运行以下命令进行测试:darknet version。
如果您没有 /usr/bin/darknet,则表示您没有安装它,只是构建了它!确保像上面描述的那样安装 .deb 或 .rpm 文件。
Windows CMake 方法
这些说明假设您全新安装了 Windows 11 22H2。
打开一个普通的 cmd.exe 命令提示符窗口并运行以下命令:
`bash
winget install Git.Git
winget install Kitware.CMake
winget install nsis.nsis
winget install Microsoft.VisualStudio.2022.Community
`
此时,我们需要修改 Visual Studio 安装以包括对 C++ 应用程序的支持:
1. 点击“Windows 开始”菜单并运行“Visual Studio Installer”。
2. 点击修改。
3. 选择使用 C++ 的桌面开发。
4. 点击右下角的修改,然后点击是。
一旦所有内容都下载并安装,再次点击“Windows 开始”菜单并选择 Visual Studio 2022 的开发人员命令提示符。不要使用 PowerShell 执行这些步骤,您会遇到问题!
高级用户:
您可以不用运行开发人员命令提示符,而是使用普通的命令提示符或 ssh 登录到设备,并手动运行“Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat”。
一旦您按照上面描述的那样运行了开发人员命令提示符(不是 PowerShell!),运行以下命令以安装 Microsoft VCPKG,然后将使用它来构建 OpenCV:
`bash
cd c:
mkdir c:srccd 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 查看完整列表。
可选:如果您拥有现代 NVIDIA GPU,则可以在此时安装 CUDA 或 CUDA+cuDNN。如果已安装,Darknet 将使用您的 GPU 来加速图像(和视频)处理。
您必须从 Darknet 构建目录中删除 CMakeCache.txt 文件,以强制 CMake 重新查找所有必需的文件。
请记住重新构建 Darknet。
Darknet 可以运行而无需它,但如果您想训练自定义网络,则需要 CUDA 或 CUDA+cuDNN。
访问 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。
安装 CUDA 后,确保您可以运行 nvcc.exe 和 nvidia-smi.exe。您可能需要修改 PATH 变量。
下载 cuDNN 后,解压缩并将 bin、include 和 lib 目录复制到 C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/ 中。您可能需要覆盖一些文件。
如果您在稍后安装了 CUDA 或 CUDA+cuDNN,或者您升级到 NVIDIA 软件的更新版本:
CUDA 必须在 Visual Studio 之后安装。如果您升级了 Visual Studio,请记住重新安装 CUDA。
一旦所有前面的步骤都成功完成,您需要克隆 Darknet 并构建它。在此步骤中,我们还需要告诉 CMake vcpkg 的位置,以便它可以找到 OpenCV 和其他依赖项:
`bash
cd c:src
git clone https://github.com/hank-ai/darknet.git
cd darknet
mkdir build
cd build
cmake -DCMAKEBUILDTYPE=Release -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:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
如果您收到有关缺少 CUDA 或 cuDNN DLL(例如 cublas64_12.dll)的错误,则手动将 CUDA .dll 文件复制到与 Darknet.exe 相同的输出目录中。例如:
`bash
copy "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(这是一个示例!请检查确保您正在运行的版本,并运行适合您安装的版本的命令。)
复制完文件后,重新运行最后一个 msbuild.exe 命令以生成 NSIS 安装包:
`bash
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
高级用户:
请注意,cmake 命令的输出是普通的 Visual Studio 解决方案文件 Darknet.sln。如果您是经常使用 Visual Studio GUI 而不是 msbuild.exe 来构建项目的软件开发人员,则可以忽略命令行并在 Visual Studio 中加载 Darknet 项目。
您现在应该有了这个可以运行的文件:C:srcDarknetbuildsrc-cliReleasedarknet.exe。运行以下命令进行测试:C:srcDarknetbuildsrc-cliReleasedarknet.exe version。
为了正确安装 Darknet、库、包含文件和必要的 DLL,请运行在上一步中构建的 NSIS 安装向导。查看构建目录中的文件 darknet-VERSION.exe。例如:
`bash
darknet-2.0.31-win64.exe
`
安装 NSIS 安装包将:
1. 创建一个名为 Darknet 的目录,例如 C:Program FilesDarknet。
2. 安装 CLI 应用程序、darknet.exe 和其他示例应用程序。
3. 安装所需的第三方 .dll 文件,例如来自 OpenCV 的文件。
4. 安装必要的 Darknet .dll、.lib 和 .h 文件,以便从另一个应用程序使用 darknet.dll。
5. 安装模板 .cfg 文件。
您现在完成了!安装向导完成后,Darknet 将安装到 C:Program FilesDarknet 中。运行以下命令进行测试:C:Program FilesDarknetbindarknet.exe version。
如果您没有 C:/Program Files/darknet/bin/darknet.exe,则表示您没有安装它,只是构建了它!确保按照上一步中描述的那样完成 NSIS 安装向导的每个面板。
使用 Darknet
CLI
以下不是 Darknet 支持的所有命令的完整列表。
除了 Darknet CLI 之外,还要注意 DarkHelp 项目 CLI,它提供了 Darknet/YOLO 的替代 CLI。DarkHelp CLI 还具有一些 Darknet 中没有的增强功能。您可以将 Darknet CLI 和 DarkHelp CLI 同时使用,它们并不相互排斥。
对于下面显示的大多数命令,您需要具有相应 .names 和 .cfg 文件的 .weights 文件。您可以训练自己的网络(强烈推荐!),也可以下载其他人已经训练过并免费提供在互联网上的神经网络。预训练数据集的示例包括:
1. LEGO Gears(在图像中查找物体)
2. Rolodex(在图像中查找文本)
3. MSCOCO(标准 80 类目标检测)
要运行的命令包括:
列出一些可以运行的可能的命令和选项:
`bash
darknet help
`
检查版本:
`bash
darknet version
`
使用图像进行预测:
`bash
V2
darknet detector test cars.data cars.cfg cars_best.weights image1.jpg
V3
darknet02displayannotatedimages cars.cfg image1.jpg
DarkHelp
DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
`
输出坐标:
`bash
V2
darknet detector test animals.data animals.cfg animalsbest.weights -extoutput dog.jpg
V3
darknet01inference_images animals dog.jpg
DarkHelp
DarkHelp --json animals.cfg animals.names animals_best.weights dog.jpg
`
处理视频:
`bash
V2
darknet detector demo animals.data animals.cfg animalsbest.weights -extoutput test.mp4
V3
darknet03display_videos animals.cfg test.mp4
DarkHelp
DarkHelp animals.cfg animals.names animals_best.weights test.mp4
`
从网络摄像头读取:
`bash
V2
darknet detector demo animals.data animals.cfg animals_best.weights -c 0
V3
darknet08display_webcam animals
`
将结果保存到视频:
`bash
V2
darknet detector demo animals.data animals.cfg animalsbest.weights test.mp4 -outfilename res.avi
V3
darknet05processvideosmultithreaded animals.cfg animals.names animals_best.weights test.mp4
DarkHelp
DarkHelp animals.cfg animals.names animals_best.weights test.mp4
`
JSON:
`bash
V2
darknet detector demo animals.data animals.cfg animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3
darknet06imagestojson animals image1.jpg
DarkHelp
DarkHelp --json animals.names animals.cfg animals_best.weights image1.jpg
`
在特定 GPU 上运行:
`bash
V2
darknet detector demo animals.data animals.cfg animals_best.weights -i 1 test.mp4
`
要检查神经网络的准确性:
`bash
darknet detector map driving.data driving.cfg driving_best.weights ...
Id Name AvgPrecision TP FN FP TN Accuracy ErrorRate Precision Recall Specificity FalsePosRate
-- ---- ------------ ------ ------ ------ ------ -------- --------- --------- ------ ----------- ------------
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
`
要检查准确性 mAP@IoU=75:
`bash
darknet detector map animals.data animals.cfg animalsbest.weights -iouthresh 0.75
`
重新计算锚点最好在 DarkMark 中完成,因为它将连续运行 100 次并从所有计算的锚点中选择最佳锚点。但是,如果您想在 Darknet 中运行旧版本:
`bash
darknet detector calcanchors animals.data -numof_clusters 6 -width 320 -height 256
`
训练新网络:
`bash
darknet detector -map -dont_show train animals.data animals.cfg
`
(另请参阅下面的训练部分)
训练
指向 Darknet/YOLO 常见问题解答相关部分的快速链接:
1. 如何设置我的文件和目录?
2. 我应该使用哪个配置文件?
3. 训练自己的网络时我应该使用什么命令?
使用 DarkMark 创建所有必要的 Darknet 文件,注释和训练的最简单方法。这绝对是训练新神经网络的推荐方法。
如果您想手动设置各种文件以训练自定义网络:
1. 创建一个新文件夹来存储文件。对于本示例,将创建一个用于检测动物的神经网络,因此将创建以下目录:~/nn/animals/。
2. 复制您想用作模板的 Darknet 配置文件之一。例如,请参阅 cfg/yolov4-tiny.cfg。将其放置在您创建的文件夹中。在本示例中,我们现在拥有 ~/nn/animals/animals.cfg。
3. 在您放置配置文件的同一文件夹中创建一个 animals.names 文本文件。在本示例中,我们现在拥有 ~/nn/animals/animals.names。
4. 使用您的文本编辑器编辑 animals.names 文件。列出您要使用的类别。您需要每行精确一个条目,并且不能有空行和注释。在本示例中,.names 文件将包含正好 4 行:
`
dog
cat
bird
horse
`
5. 在同一文件夹中创建一个 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
`
6. 创建一个文件夹来存储您的图像和注释。例如,这可以是 ~/nn/animals/dataset。每个图像都需要一个相应的 .txt 文件,该文件描述了该图像的注释。.txt 注释文件的格式非常具体。您不能手动创建这些文件,因为每个注释都需要包含注释的精确坐标。请参阅 DarkMark 或其他类似软件来注释您的图像。YOLO 注释格式在 Darknet/YOLO 常见问题解答中描述。
7. 创建 .data 文件中命名的“train”和“valid”文本文件。这两个文本文件需要分别列出 Darknet 必须用于训练和验证(在计算 mAP% 时)的所有图像。每行精确一个图像。路径和文件名可以是相对的或绝对的。
8. 使用文本编辑器修改您的 .cfg 文件。
9. 确保 batch=64。
10. 注意 subdivisions。根据网络尺寸和 GPU 上可用的内存量,您可能需要增加 subdivisions。要使用的最佳值为 1,因此从 1 开始。如果 1 对您不起作用,请参阅 Darknet/YOLO 常见问题解答。
11. 注意 maxbatches=.... 开始时要使用的良好值为类别数的 2000 倍。在本示例中,我们有 4 种动物,因此 4 * 2000 = 8000。这意味着我们将使用 maxbatches=8000。
12. 注意 steps=.... 这应该设置为 maxbatches 的 80% 和 90%。在本示例中,由于 maxbatches 设置为 8000,因此我们将使用 steps=6400,7200。
13. 注意 width=... 和 height=.... 这些是网络尺寸。Darknet/YOLO 常见问题解答解释了如何计算要使用的最佳尺寸。
14. 在 [convolutional] 部分中搜索所有 [yolo] 部分之前的 classes=... 行,并使用 .names 文件中的类别数对其进行修改。在本示例中,我们将使用 classes=4。
15. 在每个 [yolo] 部分之前的 [convolutional] 部分中搜索所有 filters=... 行。要使用的值为 (类别数 + 5) 3。这意味着在本示例中,(4 + 5) 3 = 27。因此,我们在适当的行上使用 filters=27。
开始训练!运行以下命令:
`bash
cd ~/nn/animals/
darknet detector -map -dont_show train animals.data animals.cfg
`
请耐心等待。最佳权重将保存为 animals_best.weights。可以通过查看 chart.png 文件来观察训练的进度。有关您可能想在训练新网络时使用的其他参数,请参阅 Darknet/YOLO 常见问题解答。
如果您想在训练期间看到更多详细信息,请添加 --verbose 参数。例如:
`bash
darknet detector -map -dont_show --verbose train animals.data animals.cfg
`
其他工具和链接
要管理您的 Darknet/YOLO 项目、注释图像、验证您的注释,以及生成与 Darknet 一起训练所需的必要文件,请参阅 DarkMark。
对于 Darknet 的强大替代 CLI,要使用图像平铺、在您的视频中进行目标跟踪,或对于可以在商业应用程序中轻松使用的强大 C++ API,请参阅 DarkHelp。
看看 Darknet/YOLO 常见问题解答是否可以帮助您解答您的问题。
在 Stéphane 的 YouTube 频道上查看许多教程和示例视频
如果您有任何支持问题或想与其他 Darknet/YOLO 用户聊天,请加入 Darknet/YOLO Discord 服务器。
路线图
最后更新时间:2024-10-30:
已完成
1. 将训练期间使用的 qsort() 替换为 std::sort()