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
# 加载在 COCO 上预训练的 YOLOv3u 模型
model = YOLO("yolov3u.pt")
# 显示模型信息(可选)
model.info()
# 使用 COCO8 示例数据集训练模型 100 个 epoch
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 使用 YOLOv3u 模型对 'bus.jpg' 图像运行推理
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 # 加载在 COCO 上预训练的 YOLOv3u 模型 model = YOLO("yolov3u.pt") # 使用 COCO8 示例数据集训练模型 100 个 epoch results = model.train(data="coco8.yaml", epochs=100, imgsz=640)如需了解更全面的训练选项和指南,请访问我们的训练模式文档。
YOLOv3u 采用了 YOLOv8 模型使用的无锚框、无目标性分支头,在 YOLOv3 和 YOLOv3-Ultralytics 的基础上进行了改进。这项升级无需预定义锚框和目标性分数,因此能够更精确地检测不同尺寸和形状的物体。对于复杂多样的目标检测任务,YOLOv3u 是更好的选择。有关更多信息,请参阅主要特性部分。
你可以通过 Python 脚本或 CLI 命令使用 YOLOv3 模型进行推理:
示例from ultralytics import YOLO # 加载在 COCO 上预训练的 YOLOv3u 模型 model = YOLO("yolov3u.pt") # 使用 YOLOv3u 模型对 'bus.jpg' 图像运行推理 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} }有关引用的更多详情,请参阅引用与致谢部分。