YOLOv3 和 YOLOv3u
概述
本文档概述了三个密切相关的目标检测模型,即 YOLOv3、YOLOv3-Ultralytics 和 YOLOv3u。
-
YOLOv3: 这是 You Only Look Once (YOLO) 目标检测算法的第三个版本。YOLOv3 由 Joseph Redmon 最初开发,通过引入多尺度预测和三种不同大小的检测核等特性,对前代产品进行了改进。
-
YOLOv3u: 这是 YOLOv3-Ultralytics 的更新版本,它整合了 YOLOv8 模型中使用的无锚点(anchor-free)、无目标性(objectness-free)的分离头。YOLOv3u 保留了与 YOLOv3 相同的 backbone 和颈部架构,但使用了来自 YOLOv8 的更新版 detection head。

主要特性
-
YOLOv3: 引入了三种不同尺度的检测,利用了 13x13、26x26 和 52x52 这三种不同大小的检测核。这显著提高了对不同大小目标的检测精度。此外,YOLOv3 还添加了诸如每个 bounding box 的多标签预测和更好的特征提取器网络等特性。
-
YOLOv3u: 该更新模型整合了来自 YOLOv8 的无锚点、无目标性的分离头。通过消除对预定义锚框(anchor boxes)和目标性得分的需求,这种检测头设计可以提高模型检测不同大小和形状目标的能力。这使得 YOLOv3u 在目标检测任务中更加稳健和准确。
支持的任务和模式
YOLOv3 专为 object detection 任务而设计。Ultralytics 支持 YOLOv3 的三个变体:yolov3u、yolov3-tinyu 和 yolov3-sppu。名称中的 u 表示这些模型使用了 YOLOv8 的无锚点检测头,这与它们基于锚点的原始架构不同。这些模型以其在各种现实场景中的有效性而闻名,平衡了精度与速度。每个变体都提供独特的功能和优化,使其适用于一系列应用。
所有这三个模型都支持一套全面的模式,确保了在 model deployment 和开发各个阶段的通用性。这些模式包括 Inference、Validation、Training 和 Export,为用户提供了一套完整的有效目标检测工具包。
| 模型类型 | 预训练权重 | 支持的任务 | 推理 | 验证 | 训练 | 导出 |
|---|---|---|---|---|---|---|
| YOLOv3(u) | yolov3u.pt | 目标检测 | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-Tiny(u) | yolov3-tinyu.pt | 目标检测 | ✅ | ✅ | ✅ | ✅ |
| YOLOv3u-SPP(u) | yolov3-sppu.pt | 目标检测 | ✅ | ✅ | ✅ | ✅ |
该表概览了每个 YOLOv3 变体的功能,突出了它们在目标检测工作流中针对各种任务和操作模式的通用性和适用性。
使用示例
本示例提供了简单的 YOLOv3 训练和推理示例。有关这些模式以及其他 modes 的完整文档,请参阅 Predict、Train、Val 和 Export 文档页面。
可以将 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。
常见问题 (FAQ)
YOLOv3、YOLOv3-Ultralytics 和 YOLOv3u 之间有什么区别?
YOLOv3 是由 Joseph Redmon 开发的 YOLO (You Only Look Once) object detection 算法的第三次迭代,以其 accuracy 与速度的平衡而闻名,利用三种不同尺度(13x13、26x26 和 52x52)进行检测。YOLOv3-Ultralytics 是 Ultralytics 对 YOLOv3 的适配版本,增加了对更多预训练模型的支持并简化了模型自定义。YOLOv3u 是 YOLOv3-Ultralytics 的升级变体,集成了来自 YOLOv8 的无锚点、无目标性的分离头,提高了对各种目标大小的检测稳健性和精度。有关变体的更多详细信息,请参阅 YOLOv3 系列。
我该如何使用 Ultralytics 训练 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)有关更全面的训练选项和指南,请访问我们的 Train mode documentation。
是什么让 YOLOv3u 在目标检测任务中更准确?
YOLOv3u 通过结合 YOLOv8 模型中使用的无锚点、无目标性的分离头,对 YOLOv3 和 YOLOv3-Ultralytics 进行了改进。此升级消除了对预定义锚框和目标性得分的需求,从而更精确地增强了其检测不同大小和形状目标的能力。这使得 YOLOv3u 成为复杂和多样化目标检测任务的更好选择。有关更多信息,请参阅 Key Features 部分。
我该如何使用 YOLOv3 模型进行推理?
你可以通过 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 模型的更多详细信息,请参阅 Inference mode documentation。
YOLOv3 及其变体支持哪些任务?
YOLOv3、YOLOv3-Tiny 和 YOLOv3-SPP 主要支持目标检测任务。这些模型可用于模型部署和开发的各个阶段,例如推理、验证、训练和导出。有关支持的任务的完整集合和更深入的详细信息,请访问我们的 Object Detection tasks documentation。
我在哪里可以找到在研究中引用 YOLOv3 的资源?
如果你在研究中使用 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}
}有关更多引用详细信息,请参阅 Citations and Acknowledgments 部分。