Ultralytics YOLOv5 Quickstart 上手指南:环境安装、双路推理与 COCO 基准训练全流程
【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics
从零开始掌握实时目标检测入门链路:本文以 Ultralytics YOLOv5 官方快速上手教程为骨架,完整覆盖「环境准备 → PyTorch Hub 推理 →detect.py多源推理 → COCO 基准训练」四条主线,并补充当前仓库中的模型配置与相关文档链接,帮助读者在完成本次上手后,能够独立将 YOLOv5 接入自己的图片、视频、摄像头与流媒体项目,并复现 COCO 基准训练流程。
写在前面:本指南覆盖什么
本指南面向希望快速进入实时目标检测领域的 AI 初学者与从业者,默认读者已经了解目标检测、深度学习等基础概念。文中所有命令与脚本均取自 docs/en/yolov5/quickstart-tutorial.md,并与之配套的 PyTorch Hub 模型加载教程、多 GPU 训练教程 等文档相互印证。由于本仓库以文档与统一 SDK 的形式托管 YOLOv5 相关资产,文中命令行脚本(train.py、detect.py等)指向独立 YOLOv5 代码仓库根目录下的入口;而其模型结构定义则可在本仓库 ultralytics/cfg/models/v5/yolov5.yaml 中查阅。
环境准备与安装
在开始之前,请确认基础运行环境满足两个硬性要求:
- Python >= 3.8.0:YOLOv5 的依赖与脚本均基于该版本以上的语法与生态。
- PyTorch >= 1.8:官方建议直接通过 PyTorch 官方渠道 按你的 CUDA / CPU 环境安装对应版本。
随后克隆 YOLOv5 代码仓库并安装全部依赖:
git clone <yolov5-repo-url> # 克隆 YOLOv5 仓库 cd yolov5 pip install -r requirements.txt # 安装依赖requirements.txt中汇总了推理与训练所需的全部 Python 依赖。安装完成后,模型权重与数据集(如coco128.yaml、coco.yaml)会在首次使用时自动从最新 release 下载,无需手工准备。
方式一:通过 PyTorch Hub 加载模型进行推理
PyTorch Hub 是 YOLOv5 官方力推的极简推理入口。它不要求你克隆任何仓库,torch.hub.load会自动拉取ultralytics/yolov5的最新代码并缓存到本地,之后模型权重从最新 release 自动下载。完整细节见 PyTorch Hub 模型加载教程。
最小可用示例
import torch # 模型加载:'yolov5n' - 'yolov5x6' 均可用,也可传入 'custom' 加载自定义权重 model = torch.hub.load("ultralytics/yolov5", "yolov5s") # 推理输入:可以是文件路径、Path、PIL、OpenCV、numpy 数组,也可以是上述对象组成的列表 img = "https://ultralytics.com/images/zidane.jpg" # 执行推理 results = model(img) # 展示 / 保存 / 裁剪 / 转 pandas 等多种结果接口 results.print() # 其他可选:.show()、.save()、.crop()、.pandas() 等yolov5s是 YOLOv5 中体积最小、速度最快的模型,适合验证环境与快速试跑。推理结果对象支持转换为 pandas DataFrame,字段包含xmin、ymin、xmax、ymax、confidence、class、name,例如官方教程中zidane.jpg的输出:
# xmin ymin xmax ymax confidence class name # 0 749.50 43.50 1148.0 704.5 0.874023 0 person # 1 433.50 433.50 517.5 714.5 0.687988 27 tie # 2 114.75 195.75 1095.0 708.0 0.624512 0 person # 3 986.00 304.00 1028.0 420.0 0.286865 27 tie多输入与结果接口扩展
PyTorch Hub 通道天然支持批量推理,且输入源可混用 PIL 与 OpenCV(注意 OpenCV 默认 BGR 顺序需转为 RGB):
import cv2 import torch from PIL import Image model = torch.hub.load("ultralytics/yolov5", "yolov5s") for f in "zidane.jpg", "bus.jpg": torch.hub.download_url_to_file(f"https://ultralytics.com/images/{f}", f) im1 = Image.open("zidane.jpg") # PIL 图像 im2 = cv2.imread("bus.jpg")[..., ::-1] # OpenCV 图像(BGR → RGB) results = model([im1, im2], size=640) # 批量推理,可指定推理尺寸 results.print() results.save() # 保存到 runs/hub,或使用 .show() 显示 results.xyxy[0] # 第一张图的预测张量 results.pandas().xyxy[0] # 第一张图的 pandas 表格下面两幅图片即上述示例所用的官方样例图(也存放于本仓库 ultralytics/assets/ 目录下),可在安装完成后直接用于验证推理管线:
常用推理参数速查
YOLOv5 的AutoShape推理模型内置了可调属性,在调用前直接赋值即可生效:
model.conf = 0.25 # NMS 置信度阈值 model.iou = 0.45 # NMS IoU 阈值 model.agnostic = False # 是否类别无关 NMS model.multi_label = False # 每个框是否允许多标签 model.classes = None # 类别过滤,如 [0, 15, 16] 只检测 COCO 的 person / cat / dog model.max_det = 1000 # 每张图最大检测数 model.amp = False # 是否启用自动混合精度(AMP)推理 results = model(im, size=320) # 自定义推理尺寸模型也支持推理前自由切换设备:model.cpu()、model.cuda()或model.to(device);也可以在加载时直接指定,例如torch.hub.load("ultralytics/yolov5", "yolov5s", device="cpu")。输入图像会被自动搬运到模型所在设备。若需要静默加载、不打印 Hub 日志,可传入_verbose=False。当本地缓存异常时,用force_reload=True强制重新拉取最新版本代码即可。
自定义模型与训练用途加载
Hub 通道同样支持加载本地自定义权重,以及不同输入通道数、类别数的模型:
model = torch.hub.load("ultralytics/yolov5", "custom", path="path/to/best.pt") # 本地模型 model = torch.hub.load("ultralytics/yolov5", "yolov5s", channels=4) # 4 通道输入(首层随机初始化) model = torch.hub.load("ultralytics/yolov5", "yolov5s", classes=10) # 10 类输出(输出层随机初始化) model = torch.hub.load("ultralytics/yolov5", "yolov5s", autoshape=False) # 关闭推理封装,用于训练 model = torch.hub.load("ultralytics/yolov5", "yolov5s", autoshape=False, pretrained=False) # 从零训练其中channels、classes修改的是与预训练权重形状不匹配的首层输入层与输出层,这些层会保持随机初始化,其余层沿用预训练权重。
方式二:通过detect.py进行多源推理
detect.py是 YOLOv5 的命令行推理入口,适合脚本化使用以及被集成进更大的系统。它的特点是输入源极其丰富:图片、视频、目录、摄像头、屏幕截图、HTTP / RTSP / RTMP 直播流乃至 YouTube 视频都可以直接作为--source传入。模型权重(如yolov5s.pt)缺省时自动从最新 release 下载,推理结果默认保存到runs/detect/exp等目录。
python detect.py --weights yolov5s.pt --source 0 # 摄像头(0 号设备) python detect.py --weights yolov5s.pt --source image.jpg # 单张图片 python detect.py --weights yolov5s.pt --source video.mp4 # 视频 python detect.py --weights yolov5s.pt --source screen # 屏幕截图 python detect.py --weights yolov5s.pt --source path/ # 目录(目录内全部媒体) python detect.py --weights yolov5s.pt --source list.txt # 图片列表文件(一行一张) python detect.py --weights yolov5s.pt --source list.streams # 流地址列表文件 python detect.py --weights yolov5s.pt --source 'path/*.jpg' # glob 通配符匹配 python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4' # YouTube 视频 python detect.py --weights yolov5s.pt --source 'rtsp://example.com/media.mp4' # RTSP、RTMP、HTTP 直播流可以看出--source的值既可以是整数设备号,也可以是字符串路径、URL 或通配符模式,YOLOv5 会根据前缀自动判别来源类型。更多--source之外的推理选项(如--conf-thres、--iou-thres、--img、--classes、--save-txt等)可查阅 Predict 模式文档。
开始训练:复现 COCO 基准
训练入口是train.py,其典型目标是在 COCO 数据集上复现官方基准结果。模型权重与数据集(coco128.yaml小数据集或完整coco.yaml)同样会自动从最新 release 下载。各规格模型在 V100 GPU 上的完整 300 epoch 训练大约耗时:YOLOv5n/s/m/l/x 分别约为1 / 2 / 4 / 6 / 8 天(多 GPU 并行会更快,详见 多 GPU 训练教程)。
训练经验法则是尽量使用硬件能承受的最大--batch-size,或者直接使用--batch-size -1开启 AutoBatch 自动探测最优批大小。下面几组批大小是针对V100-16GBGPU 的推荐配置:
# 在 COCO128 上训练 YOLOv5n,共 3 个 epoch(验证管线用,速度快) python train.py --data coco128.yaml --epochs 3 --weights yolov5n.pt --batch-size 128 # 在 COCO 上训练 YOLOv5s,共 300 个 epoch python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64 # 在 COCO 上训练 YOLOv5m,共 300 个 epoch python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40 # 在 COCO 上训练 YOLOv5l,共 300 个 epoch python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24 # 在 COCO 上训练 YOLOv5x,共 300 个 epoch python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5x.yaml --batch-size 16几个命令要点:
- 从预训练权重继续训练:传
--weights yolov5n.pt等;从零开始训练:传--weights ''并显式指定--cfg yolov5s.yaml之类的模型结构文件。大规模数据集(如 COCO、Objects365)建议从零训练,中小规模数据集建议使用预训练权重做迁移学习,详见 Tips for Best Training Results。 --data指定数据集配置 YAML:本仓库 ultralytics/cfg/datasets/ 目录提供了coco.yaml、coco128.yaml等大量数据集配置样例,字段含义与 COCO 检测数据的组织方式可参考 COCO 检测数据集文档。--cfg指定模型结构 YAML:模型文件(*.yaml)的完整字段说明见 配置指南。以本仓库 ultralytics/cfg/models/v5/yolov5.yaml 为例,文件顶部scales字段定义了 n / s / m / l / x 五档复合缩放系数(depth、width、max_channels),同一份结构文件通过传入model=yolov5n.yaml这样的写法即可实例化不同规格;backbone与head分别以[from, number, module, args]列表形式描述 P3/8 ~ P5/32 多尺度特征提取与 FPN-PAN 结构,最终由Detect(P3, P4, P5)在三个尺度输出预测。因此命令行中的--cfg yolov5s.yaml实质上是在选定「以 s 档缩放系数实例化同一份 YOLOv5 结构」。
下一步:继续深入的方向
完成「安装 → 推理 → 训练」的快速上手闭环后,可根据目标选择以下进阶路径(均在 YOLOv5 文档首页 有入口):
- 自定义数据集训练:准备标注数据并执行迁移学习,参见 Train Custom Data 教程。
- 提升精度:数据集规模建议、批大小/学习率/数据增强调优,参见 Tips for Best Training Results。
- 多 GPU / 多机训练:基于
torch.distributed.run的 DistributedDataParallel 用法,参见 多 GPU 训练教程。 - 结果导出部署:导出 TFLite、ONNX、CoreML、TensorRT 等格式并接入生产环境,参见 模型导出教程。
- 超参数进化:自动搜索更优超参数,参见 Hyperparameter Evolution 教程。
- 免配置运行环境:官方提供了预装 CUDA、CuDNN、Python、PyTorch 的 Docker 镜像,见 Docker Quickstart 指南。
需要特别说明的是:YOLOv5 虽是久经验证的目标检测工具,本仓库同时也维护着迭代版本 YOLOv8、YOLO11、YOLO26 等新模型的文档与实现。若你正处于新项目选型阶段,建议同时参考仓库中 YOLOv8 模型文档、YOLO11 模型文档 与 YOLO26 模型文档 后再做决定。祝检测愉快。
【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考