ultralytics/yolov3
ultralytics/yolov3 has 10,637 GitHub stars and 3,411 forks. GitHot measured +1 stars in 24 hours, +4 in 7 days, and +10 in 15 days. Last checked 2026-11-11 08:17 UTC. Last push 2026-11-01.
用于实时目标检测的 YOLOv3、YOLOv3-SPP 和 YOLOv3-tiny 的 PyTorch 实现,支持训练、验证、推理和多格式导出。
实测星标增长
- 24小时
- +1
- 7天
- +4
- 15天
- +10
- 1个月
- 更新延迟
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
README.zh-CN.md
原文English | 한국어 | 日本語 | Русский | Deutsch | Français | Español | Português | Türkçe | Tiếng Việt | العربية
Ultralytics YOLOv3 是 YOLOv3(You Only Look Once,第 3 版)实时目标检测模型的 PyTorch 实现。YOLOv3 将检测视为单一回归问题,在一次前向传播中直接从整幅图像预测边界框和类别概率,因而快速、准确,且易于训练和部署。
本仓库提供三款经典的 YOLOv3 检测模型——YOLOv3、YOLOv3-SPP 和 YOLOv3-tiny——并配套训练、验证、推理和导出工具,同时复用 ultralytics 包中的共享工具。
详细指南请参阅 Ultralytics YOLOv3 文档。如需支持,请提交 GitHub Issue,并欢迎加入 Discord、Reddit 和 Ultralytics 论坛 参与讨论。
如需商业使用,请通过 Ultralytics 许可 申请企业许可证。
📚 文档
完整文档请参阅 Ultralytics YOLOv3 文档。以下快速入门示例涵盖本仓库的安装、推理和训练。
安装
在 Python>=3.8.0 环境(已安装 PyTorch>=1.8)中克隆仓库并从 requirements.txt 安装依赖。
# 克隆 YOLOv3 仓库
git clone https://github.com/ultralytics/yolov3
# 进入目录
cd yolov3
# 安装依赖
pip install -r requirements.txt
使用 PyTorch Hub 进行推理
通过 PyTorch Hub 可直接加载 YOLOv3,权重在首次使用时自动下载。
import torch
# 加载 YOLOv3 模型 (可选: 'yolov3'、'yolov3_spp'、'yolov3_tiny')
model = torch.hub.load("ultralytics/yolov3", "yolov3", pretrained=True)
# 对图像进行推理 (本地文件、URL、PIL 图像、OpenCV 帧或 numpy 数组)
results = model("https://ultralytics.com/images/zidane.jpg")
# 查看结果
results.print() # 在控制台打印检测结果
results.show() # 显示标注后的图像
results.save() # 将标注图像保存到 runs/detect/exp
使用 detect.py 进行推理
detect.py 支持多种输入源推理,自动下载模型并将结果保存至 runs/detect。
python detect.py --weights yolov3.pt --source 0 # 摄像头
python detect.py --weights yolov3.pt --source img.jpg # 图像
python detect.py --weights yolov3.pt --source vid.mp4 # 视频
python detect.py --weights yolov3.pt --source screen # 屏幕截图
python detect.py --weights yolov3.pt --source path/ # 目录
python detect.py --weights yolov3.pt --source 'path/*.jpg' # glob 匹配
python detect.py --weights yolov3.pt --source 'rtsp://example.com/media.mp4' # RTSP、RTMP、HTTP 流
训练
在 COCO 数据集上训练 YOLOv3。模型和数据集会自动下载。请根据硬件选择尽可能大的 --batch-size。
# 训练 YOLOv3-tiny
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov3-tiny.yaml --batch-size 64
# 训练 YOLOv3
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov3.yaml --batch-size 32
# 训练 YOLOv3-SPP
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov3-spp.yaml --batch-size 16
使用 python val.py --weights yolov3.pt --data coco.yaml 验证精度,并使用 python export.py --weights yolov3.pt --include onnx 导出为其他格式(TorchScript、ONNX、OpenVINO、TensorRT、CoreML、PaddlePaddle)。
教程
以下指南基于 Ultralytics 通用训练框架,同样适用于 YOLOv3:
- 训练自定义数据 — 在自有数据集上训练。
- 最佳训练技巧 — 充分发挥训练效果。
- 多 GPU 训练 — 跨 GPU 扩展训练。
- PyTorch Hub 加载 — 以编程方式加载模型。
- 模型导出 — 部署到 ONNX、TensorRT、CoreML 等。
- 测试时增强 (TTA) — 提升推理精度。
- 模型集成 — 融合多个模型以获得更好结果。
- 超参数调优 — 自动调优超参数。
- 冻结层迁移学习 — 高效迁移预训练模型。
🧠 架构
YOLOv3 的检测能力建立在几个核心思想之上,使其兼具准确与高效:
- Darknet-53 主干 — 53 层卷积特征提取网络,带有残差(跳跃)连接;比 YOLOv2 的 Darknet-19 主干更深、更准确,同时保持高效。
- 多尺度检测 — 采用类特征金字塔的设计(上采样并拼接较早的特征图),在三个特征图尺度上进行预测,从而很好地检测大、中、小目标。
- 锚框 — 边界框相对于由维度聚类得到的锚框先验进行预测,每个尺度三个锚框(共九个),并使用 sigmoid 偏移参数化以稳定训练。
- 独立类别预测 — 每个类别使用独立的逻辑分类器而非 softmax 进行打分,因此单个框可携带多个互不排斥的标签。
本仓库提供该架构的三种变体:
- YOLOv3 — 完整的 Darknet-53 模型;速度与精度的最佳平衡。
- YOLOv3-SPP — 增加空间金字塔池化模块,在多个核大小上池化特征,扩大有效感受野并小幅提升精度。
- YOLOv3-tiny — 紧凑主干、两个尺度检测,针对以速度为先的 CPU 和边缘设备优化。
模型在 models/*.yaml 中以声明式定义,并由 models/yolo.py 中的 parse_model() 构建,因此无需编写 Python 即可查看和修改架构。
🏋️ 预训练权重
三款模型均在 COCO(80 类)上训练,并在首次使用时从 YOLOv3 版本资源自动下载。
| 模型 | 说明 |
|---|---|
| yolov3-tiny.pt | 轻量的两尺度模型——最快的选择,适合 CPU 和边缘设备。 |
| yolov3.pt | 原始 Darknet-53 模型——速度与精度的有力平衡。 |
| yolov3-spp.pt | 增加空间金字塔池化,扩大感受野并提升精度。 |
🧩 集成
Ultralytics 与领先的 AI 平台集成,扩展数据集标注、训练、可视化和模型管理能力。在 Ultralytics 集成 探索 Weights & Biases、Comet ML、Roboflow 和 Intel OpenVINO 等合作伙伴如何简化您的工作流。
🤔 为何选择 YOLOv3?
YOLOv3 是实时目标检测的里程碑,至今仍是可靠且广为理解的基准:
- 实时单阶段检测 — 一次前向传播即可产生所有检测,无需独立的候选区域生成阶段。
- 跨尺寸表现稳健 — 多尺度预测可处理大、中、小目标。
- 支持多标签 — 独立的逻辑分类器允许重叠的类别标签。
- 简单且可移植 — 全卷积设计,训练顺畅,可干净地导出到多种部署格式。
如需了解更广泛的 Ultralytics YOLO 模型系列,请访问 Ultralytics 仓库。
☁️ 环境
使用预配置环境快速上手。点击下方图标了解各平台设置详情。
🤝 贡献
欢迎贡献!请参阅贡献指南开始参与,并通过 Ultralytics 调查 分享您的反馈。感谢所有贡献者!
📜 许可证
Ultralytics 提供两种许可选项:
- AGPL-3.0 许可证:经 OSI 批准的开源协议,适合科研与协作。详情见 LICENSE。
- 企业许可证:面向商业用途,可将 Ultralytics 软件和模型集成到商业产品中,无需遵守 AGPL-3.0 的开源义务。请通过 Ultralytics 许可 联系我们。
📧 联系
如需报告 bug 或提出功能请求,请使用 GitHub Issues。如有问题或想讨论,欢迎加入我们的 Discord、Reddit 和 Ultralytics 论坛。














