Ultralytics YOLO27: 加入候补名单。
Get Started
计算机视觉基础·查看指标·课程 10/10
课程初级

从实验室到生产环境

安装 Ultralytics,在你自己的图像上运行 YOLO26,根据规范检查输出,然后选择下一步。

花 10 分钟使用预训练模型,就能回答一个决定整体计划的问题:现成模型是否已经涵盖你的类别和摄像头场景,还是你需要自己的数据?在这里,你会安装 Ultralytics,在真实图像上运行 YOLO26,并根据你在第一课中编写的规范检查结果。

学习成果

在你自己的图像上运行 YOLO26,并根据输出决定是用预训练权重制作原型,还是构建数据集。

快速通道
如果你已经熟悉相关内容,以下是简要版。
  1. 安装:pip install ultralytics,然后运行 yolo checks。

  2. 预测:yolo predict model=yolo26n.pt source=https://ultralytics.com/images/bus.jpg。

  3. 检查:你的规范中哪些类别属于预训练类别?在你的图像上,检测框是否准确?

  4. 根据答案选择下一门课程。

实践操作

安装#

pip install ultralytics
yolo checks

第一行会安装 ultralytics Python 包和 yolo 命令;如果尚未安装 PyTorch,也会一并安装。yolo checks 会显示你的 Python、PyTorch 和 CUDA 版本,以及 Ultralytics 将使用的硬件,让你在运行任何内容之前确认环境设置。请使用全新的虚拟环境;快速入门介绍了 conda、Docker 和 GPU 环境的设置。

Python 版本

ultralytics 软件包可安装在 Python 3.8 及更高版本上,但当前 PyTorch 版本需要 Python 3.10 或更高版本。如果你的环境版本较旧,请先用较新的 Python 创建一个全新的虚拟环境。

PyTorch 本地安装选择器,已选择 Stable、Mac、Pip、Python 和 Default,显示 torch、torchvision 和 torchaudio 的 pip3 安装命令

未被使用的 GPU

症状:装有 NVIDIA GPU 的机器上,yolo checks 显示使用 CPU,推理速度很慢。原因:安装了仅支持 CPU 的 PyTorch 版本——例如 Windows 上默认的 pip wheel。解决方法:在上方的 PyTorch 选择器中选择操作系统、包管理器和 CUDA 版本,运行显示的命令,然后重新安装 ultralytics。在 Mac 上,和截图中的情况一样,默认构建版本是正确的;除非传入 device=mps 来使用 Apple GPU,否则 Ultralytics 会使用 CPU 运行。

首次预测#

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # 首次使用时下载约 5 MB 的 nano 模型
results = model("https://ultralytics.com/images/bus.jpg", save=True)

for box in results[0].boxes:
    print(model.names[int(box.cls)], round(float(box.conf), 2))

这两种方式都会为每张图像打印一行摘要,并将带注释的图像保存到 runs/detect/predict:

image 1/1 .../bus.jpg: 640x480 4 persons, 1 bus, 19.7ms
Speed: 0.9ms preprocess, 19.7ms inference, 0.4ms postprocess per image at shape (1, 3, 640, 480)
Results saved to runs/detect/predict

逐行来看:图像被调整为 640×480 以进行推理;模型找到了 4 个人和 1 辆公交车;在笔记本电脑 CPU 上,推理耗时约 20 毫秒。Speed 这一行是你首次检查延迟的依据——将它与规范输入部分中的帧率进行比较。打开保存的图像:每个框都包含检测课程中介绍的类别、框和置信度。

根据规范检查输出#

问题如果是如果不是
你的类别是否属于模型认识的 80 个 COCO 类别?无需训练即可制作原型你需要标注数据并进行微调(微调指南)
在你自己的图像上,超过阈值的检测框是否落在正确的对象上?任务和视角相符预计会有领域差异:从你的摄像头采集数据
输出类型是否符合决策规则的要求?继续使用当前任务更换权重:-seg、-sem、-depth、-pose、-obb 或 -cls
它在目标硬件上是否足以满足你的帧率要求?继续下一步尝试更小的模型或经过优化的导出格式

第一个问题有明确答案:model.names 列出了预训练模型认识的所有类别。对于叉车规范,person 是 COCO 类别,而 forklift 不是,因此无论阈值设为多少,预训练模型都无法找到叉车。这是首次运行时最常见的结果——模型只涵盖规范中的一部分内容。正确的做法是先用已有类别制作决策逻辑原型,同时为其余类别构建数据集。

生产环境中的变化#

部署后的模型会遇到数据集从未采样过的情况:新摄像头、新季节、新产品、新制服。如果不重新训练,准确率会逐渐下降;如果根据生产环境中遇到的情况定期重新训练,准确率就会恢复:

两张模型准确率随时间变化的图表:一张显示模型在不重新训练时准确率逐渐下降,另一张显示定期重新训练的模型在每次更新后恢复准确率

本课程的每一课都会为这个循环提供支持:规范定义失败情况,覆盖率审查指出需要关注的地方,标签检查器和指南让新数据发挥作用,而严谨的数据集划分和指标则告诉你重新训练后的模型是否真的更好。从第一天起养成两个习惯,就能让这个循环有效运转:记录一部分输入和预测,包括低置信度的结果;保留固定测试集,确保每个模型都在同一批图像上进行比较。可观测性与漂移会深入介绍数据漂移监控。

下一步学什么#

课程适合学习的情况
构建高性能 YOLO 数据集你的类别不在预训练类别中,或者你的场景与 COCO 不同
训练你的第一个 YOLO 模型你有标注数据集,并希望进行微调
生产环境中的 Ultralytics YOLO你已有模型,需要导出、跟踪和监控
使用 Ultralytics Platform 构建你希望在同一个地方完成数据处理、标注、训练和部署

更喜欢基于浏览器的工作流?Ultralytics Platform 可以运行同样的流程——上传、标注、训练、部署——无需本地安装:

试试看

编辑解决方案脚本:将规范中的类别填入 spec_classes,将你自己的图像路径填入 sources,然后运行脚本并打开保存的结果。制作一张表格,列出图像、检测到的类别、是否符合规范(是或否),最后用一句话说明你选择的下一步以及对应的课程。

提交
git add -A && git commit -m "docs(academy): completed Computer Vision Foundations"
完成条件
满足以下所有条件,即表示你已完成本课程。
  • 你已在至少 3 张自己的图像上运行 YOLO26,并打开了保存的结果。

  • 你知道规范中的哪些类别属于预训练类别,哪些需要你自己的数据。

  • 你已经用一句话说明了下一步以及为此要学习的课程。

显示解答
from pathlib import Path

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# 1. Which classes in your output line does the pretrained model already know?
spec_classes = {"person", "forklift"}
known = set(model.names.values())
print(f"pretrained: {sorted(spec_classes & known)}  needs your own data: {sorted(spec_classes - known)}")

# 2. What does it find on your images?
sources = [
    "https://ultralytics.com/images/bus.jpg",  # replace with your own images
    "https://ultralytics.com/images/zidane.jpg",
]
for source, result in zip(sources, model.predict(sources, conf=0.25, save=True, verbose=False)):
    names = [result.names[int(c)] for c in result.boxes.cls]
    print(f"{Path(source).name}: {len(names)} detections -> {sorted(set(names))}")
pretrained: ['person']  needs your own data: ['forklift']
bus.jpg: 5 detections -> ['bus', 'person']
zidane.jpg: 3 detections -> ['person', 'tie']

对于叉车规范:person 已涵盖,forklift 未涵盖。下一步:现在先用预训练模型在人身上测试区域规则,同时开始学习构建高性能 YOLO 数据集,从仓库摄像头采集并标注叉车。

接下来做什么

课程已完成——参加期末测验以获得证书,然后继续学习构建高性能 YOLO 数据集,将你的规范转化为可用于训练的数据集。

登录以保存学习进度