YOLOv3 和 YOLOv3u#
概述#
本文概述了三个密切相关的目标检测模型,即 YOLOv3、YOLOv3-Ultralytics 和 YOLOv3u。
-
YOLOv3: 这是 You Only Look Once(YOLO)目标检测算法的第三个版本。YOLOv3 最初由 Joseph Redmon 开发,通过引入多尺度预测和三种不同尺寸的检测卷积核等特性,在前代版本的基础上进行了改进。
-
**YOLOv3-Ultralytics:**这是 Ultralytics 对 YOLOv3 的 PyTorch 实现,维护在 ultralytics/yolov3 仓库中。它保留了原有的基于锚框的架构,同时添加了更多预训练模型和更简便的自定义功能。
-
YOLOv3u: 这是 YOLOv3-Ultralytics 的更新版本,采用了 YOLOv8 模型中使用的无锚框、无目标性分离头。YOLOv3u 保留了 YOLOv3 的相同 骨干网络 和颈部架构,但采用了 YOLOv8 更新后的 检测头。

主要特性#
-
YOLOv3: 引入了使用三种不同检测尺度的机制,并采用三种不同尺寸的检测卷积核:13x13、26x26 和 52x52。这显著提升了对不同尺寸目标的检测准确率。此外,YOLOv3 还增加了为每个 边界框 进行多标签预测等特性,并改进了特征提取网络。
-
YOLOv3u: 该更新模型采用了 YOLOv8 的无锚框、无目标性分离头。通过消除对预定义锚框和目标性分数的需求,这种检测头设计可以提升模型检测不同尺寸和形状目标的能力。这使 YOLOv3u 在目标检测任务中更加稳健、准确。
支持的任务和模式#
YOLOv3 专为 目标检测 任务设计。Ultralytics 支持 YOLOv3 的三个变体:yolov3u、yolov3-tinyu 和 yolov3-sppu。名称中的 u 表示这些模型采用了 YOLOv8 的无锚框检测头,不同于其基于锚框的原始架构。这些模型以在各种真实场景中的高效表现而闻名,在准确率和速度之间实现了平衡。每个变体都提供了独特的特性和优化,适用于多种应用。
这三个模型都支持一套全面的模式,确保能够灵活应用于 模型部署 和开发的各个阶段。这些模式包括 推理、验证、训练 和 导出,为用户提供了执行目标检测所需的完整工具集。
| 模型类型 | 预训练权重 | 支持的任务 | 训练 | 验证 | 推理 | 导出 |
|---|---|---|---|---|---|---|
| YOLOv3(u) | yolov3u.pt | 对象检测 | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-Tiny(u) | yolov3-tinyu.pt | 对象检测 | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-SPP(u) | yolov3-sppu.pt | 对象检测 | ✅ | ✅ | ✅ | ✅ |
此表概览了每个 YOLOv3 变体的能力,突出了它们在目标检测工作流中对各种任务和运行模式的适用性与灵活性。
使用示例#
此示例提供了简单的 YOLOv3 训练和推理示例。有关这些模式及其他 模式 的完整文档,请参阅 预测、训练、验证 和 导出 文档页面。
PyTorch 预训练的 *.pt 模型以及配置 *.yaml 文件,都可以传递给 YOLO() 类,以便在 Python 中创建模型实例:
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv3u model
model = YOLO("yolov3u.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv3u model on the 'bus.jpg' image
results = model("path/to/bus.jpg")引用和致谢#
如果你在研究中使用 YOLOv3,请引用原始 YOLO 论文和 Ultralytics YOLOv3 代码仓库:
@article{redmon2018yolov3,
title={YOLOv3: An Incremental Improvement},
author={Redmon, Joseph and Farhadi, Ali},
journal={arXiv preprint arXiv:1804.02767},
year={2018}
}感谢 Joseph Redmon 和 Ali Farhadi 开发了原始 YOLOv3。
常见问题#
使用 Ultralytics 训练 YOLOv3 模型非常简单。你可以使用 Python 或 CLI 训练模型:
示例from ultralytics import YOLO # Load a COCO-pretrained YOLOv3u model model = YOLO("yolov3u.pt") # Train the model on the COCO8 example dataset for 100 epochs results = model.train(data="coco8.yaml", epochs=100, imgsz=640)如需更全面的训练选项和指南,请访问我们的 训练模式文档。
YOLOv3u 通过采用 YOLOv8 模型使用的无锚框、无目标性分离头,改进了 YOLOv3 和 YOLOv3-Ultralytics。此升级消除了对预定义锚框和目标性分数的需求,增强了模型更精确地检测不同尺寸和形状目标的能力。这使 YOLOv3u 成为复杂且多样化目标检测任务的更佳选择。有关更多信息,请参阅 主要特性 部分。
你可以通过 Python 脚本或 CLI 命令,使用 YOLOv3 模型执行推理:
示例from ultralytics import YOLO # Load a COCO-pretrained YOLOv3u model model = YOLO("yolov3u.pt") # Run inference with the YOLOv3u model on the 'bus.jpg' image results = model("path/to/bus.jpg")如需了解运行 YOLO 模型的更多详情,请参阅 推理模式文档。
YOLOv3、YOLOv3-Tiny 和 YOLOv3-SPP 主要支持目标检测任务。这些模型可用于模型部署和开发的各个阶段,例如推理、验证、训练和导出。如需查看完整的支持任务列表和更深入的详情,请访问我们的 目标检测任务文档。
如果你在研究中使用 YOLOv3,请引用原始 YOLO 论文和 Ultralytics YOLOv3 代码仓库。BibTeX 引用示例:
引用@article{redmon2018yolov3, title={YOLOv3: An Incremental Improvement}, author={Redmon, Joseph and Farhadi, Ali}, journal={arXiv preprint arXiv:1804.02767}, year={2018} }如需了解更多引用详情,请参阅 引用与致谢 部分。