跳转到内容

Ultralytics — YOLOv8/v11 易用 SDK

待复核

Ultralytics 是一个把 YOLO 系列模型做成开箱即用 SDK的项目:检测、分割、姿态、分类、跟踪、导出,尽量都用同一个 YOLO(...) 入口。日常类比:YOLO 原理像一台会看图的相机,Ultralytics 像把相机、说明书、充电器、导出线都装进一个工具箱。

最小例子是先拿预训练模型看一张图:

Terminal window
pip install ultralytics
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

如果写 Python,也是一套心智:

from ultralytics import YOLO
model = YOLO("yolov8n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
results[0].show()

它解决的问题不是“重新发明 YOLO”,而是把训练、验证、预测、部署这些工程步骤压成一套稳定接口。

不理解 Ultralytics,下面这些事会卡住你:

  • 你会以为目标检测只能从论文代码开始,结果卡在环境、权重、数据格式,而不是模型本身
  • 你很难解释为什么一个库能同时做检测框、分割 mask、人体关键点和倾斜框
  • 你会把“训练框架”和“部署格式”混成一件事,不知道为什么同一个模型还要导出 ONNX / TensorRT / CoreML
  • 你会低估 SDK 的价值:真正项目里,调通数据、评估指标、导出格式,常常比改一层网络更耗时间

记住 Ultralytics 的三件事:

  1. 统一入口YOLO("xxx.pt") 像一个通用遥控器,后面可以接 train()val()predict()track()export()。新手不用先理解每个脚本放在哪里,只要先知道自己处在“训练、验证、预测、导出”哪个阶段。

  2. 任务靠模型后缀区分:普通检测模型像 yolov8n.pt,分割是 -seg,姿态是 -pose,倾斜框是 -obb。类比餐厅菜单:主菜都是 YOLO,但加了不同配菜,输出就从框变成 mask、关键点或旋转框。

  3. 从研究到部署的桥:训练时它用 pytorch,上线前可以导出成 ONNX、TensorRT、CoreML、TFLite 等格式。类比写文档:源文件是 Word,上线时要另存成 PDF、网页或图片,给不同设备读。

官方 README 和检测文档都给了这个最小路径:

Terminal window
yolo detect predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

逐部分解释:

  • detect 表示做目标检测,只输出框、类别和置信度
  • model=yolov8n.pt 里的 n 是 nano,小模型快,适合先跑通
  • source 可以是图片 URL、本地文件、文件夹、视频,甚至摄像头编号
  • 跑完以后会生成带框结果,适合快速确认“模型和环境是不是通了”

Python 里拿到结构化结果:

from ultralytics import YOLO
model = YOLO("yolov8n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
for result in results:
print(result.boxes.xyxy)
print(result.boxes.conf)
print([result.names[int(c)] for c in result.boxes.cls])

这不是安装指南,而是告诉你:Ultralytics 把“跑一次推理”压到了几行。

案例 2:用小数据集训练、验证、再导出

Section titled “案例 2:用小数据集训练、验证、再导出”

官方 Python 使用文档用 coco8.yaml 展示完整闭环:

from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.train(data="coco8.yaml", epochs=3, imgsz=640)
metrics = model.val()
path = model.export(format="onnx")
print(metrics.box.map, path)

逐部分解释:

  • coco8.yaml 是很小的示例数据集,目的是验证流程,不是追求精度
  • epochs=3 让新手先看到训练日志和输出目录,别一上来跑几小时
  • model.val() 给出 mAP 等指标,说明模型不是“看起来能跑”就算完
  • export(format="onnx") 把 PyTorch 权重变成更容易部署的中间格式

这条路径对应真实项目的骨架:先用小样本跑通,再换自己的数据。

案例 3:视频里做跟踪,给每个目标一个 ID

Section titled “案例 3:视频里做跟踪,给每个目标一个 ID”

跟踪文档里给出的用法是从检测模型继续往前走:

from ultralytics import YOLO
model = YOLO("yolov8n.pt")
results = model.track(
source="https://youtu.be/LNwODJXcvt4",
show=True,
tracker="bytetrack.yaml",
)

逐部分解释:

  • track() 不只是逐帧检测,还会把前后帧里的同一个目标连起来
  • tracker="bytetrack.yaml" 选择 ByteTrack;默认也可以用 BoT-SORT
  • 输出里会带跟踪 ID,后续才能算“这辆车走了多久”“这个人有没有回来”
  • 同一接口也能加载 yolov8n-seg.ptyolov8n-pose.pt,只是输出从框变成 mask 或关键点

所以 Ultralytics 常见的三种姿势就是:先预测看效果,再训练自己的数据,最后导出或跟踪接到业务里。

  1. 把 demo 精度当业务精度:预训练模型认的是 COCO 等公开类别,你自己的场景、角度、光照不一样,必须重新评估。

  2. 数据 YAML 写错路径:训练报错常常不是模型问题,而是 train / val 路径、类别数、类别名对不上。

  3. 小模型快但不一定够准n / s 适合原型,复杂场景可能要 m / l / x,代价是速度和显存。

  4. 导出后输出格式要重新理解:ONNX / TensorRT 可能给你原始 tensor,后处理、NMS、类别索引要按导出参数确认。

适用

  • 想快速把图片 / 视频里的物体框出来、分割出来或追踪起来
  • 需要一个从训练到导出的统一工作流,而不是散落的论文脚本
  • 做媒体 AI、工业检测、运动分析、零售客流这类视觉原型
  • 已经用 pytorch 训练,但希望导出到 ONNX / TensorRT / CoreML

不适用

  • 只想学习 YOLO 网络结构细节,不想碰工程封装;这时应读论文和模型源码
  • 要做图像生成、视频生成、扩散模型工作流;那是 comfyui / open-sora 的领域
  • 极端端侧部署且不能带 Python runtime;这时要看 ncnn、TFLite 或硬件 SDK
  • 商业闭源产品不想遵守 AGPL-3.0;需要提前确认许可证或购买企业授权
  • 2015-2016 年:YOLO 论文把目标检测从“两阶段慢慢找”推向“一眼看完整图”。
  • 2020 年前后:社区 YOLO 实现很多,速度快,但版本、训练脚本和数据格式常常各走各路。
  • 2023 年:Ultralytics YOLOv8 让 pip install ultralytics + YOLO("yolov8n.pt") 成为新手最常见入口。
  • 2024-2026 年:项目继续覆盖检测、分割、姿态、OBB、跟踪和多种部署格式,GitHub stars 量级已经到数万。
  1. 好 SDK 是把重复工程压平:同样是 YOLO,训练、验证、预测、导出统一后,学习成本明显下降。
  2. 视觉任务可以共享一套骨架:检测框、mask、关键点看起来不同,但模型加载、数据配置、评估、导出流程高度相似。
  3. 部署不是训练的附属品:ONNX、TensorRT、CoreML 这些格式决定模型能不能进真实产品。
  4. 快跑 demo 和严肃上线是两件事:demo 证明工具可用,上线还要补数据质量、评估、许可证和硬件约束。
  • pytorch —— Ultralytics 训练和推理的主要深度学习底座
  • onnx —— 把 .pt 权重导出成通用推理格式的关键中间层
  • opencv —— 做摄像头、视频帧、结果可视化时经常一起出现
  • ncnn —— 端侧部署路线之一,适合和 Ultralytics 导出链路对照
  • paddle-lite —— 同样关注移动端推理,只是生态和模型格式不同
  • comfyui —— 同属媒体 AI 工具,但一个做视觉识别,一个做扩散生成工作流

(暂无反向链接)