0Pricing
Learn AI with Python · 课时

使用 YOLOv8 进行目标检测

ultralytics YOLO、model.predict()、边界框、置信度过滤和自定义训练。

使用 YOLOv8 进行目标检测 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

分类与检测

图像分类说明图像中有什么。目标检测更进一步:它会找到每个物体的位置,并绘制边界框和标签。YOLO 是最流行的实时检测器。

什么是 YOLO?

YOLO(只看一次)通过一次前向传播检测所有物体,因此速度足以处理视频。Ultralytics 的 YOLOv8 为推理和训练提供了简洁的 Python 接口。

pip install ultralytics

加载预训练模型

导入 YOLO 并加载检查点。yolov8n.pt 是微型模型:体积小且速度快。更大的变体(s、m、l、x)会以速度换取准确率。权重会在首次使用时自动下载。

from ultralytics import YOLO

model = YOLO("yolov8n.pt")

运行推理

对图像路径、网址或数组调用 model.predict(或者直接调用 model(image))。它会返回一个结果列表,每个输入图像对应一个结果。

results = model.predict("street.jpg", conf=0.5)

conf 阈值

conf 参数设置保留检测结果所需的最低置信度。提高它可以丢弃不确定的框(减少误报);降低它可以捕获更多物体,但也可能带来更多噪声。

results = model.predict("street.jpg", conf=0.25)  # more detections
results = model.predict("street.jpg", conf=0.7)   # only confident ones

读取框

每个结果都有一个 boxes 对象。boxes.xyxy 会以 [x1, y1, x2, y2] 的形式给出边界框角点,即左上角和右下角的像素坐标。

r = results[0]
print(r.boxes.xyxy)  # tensor of [x1, y1, x2, y2] rows

类别与置信度

除了框之外,您还会获得 boxes.cls(类别索引)和 boxes.conf(置信度分数)。使用 model.names 可以将索引映射到名称。

for box in r.boxes:
    cls_id = int(box.cls)
    conf = float(box.conf)
    name = model.names[cls_id]
    print(name, round(conf, 2))

可视化结果

results[0].plot() 会返回一张带注释的图像数组,其中已经绘制了框和标签,可以直接显示或保存。这非常适合快速检查检测结果。

annotated = results[0].plot()

import cv2
cv2.imwrite("output.jpg", annotated)

在视频中进行检测

传入视频文件或摄像头索引后,YOLO 会处理每一帧。使用 stream=True 时,它会逐帧生成结果,从而在处理长视频时保持较低的内存占用。

for result in model.predict("clip.mp4", stream=True):
    boxes = result.boxes
    # process each frame

自定义训练

要检测您自己的物体类别,请使用由 YAML 文件描述的带标签数据集进行训练。调用 model.train,并传入数据配置、训练周期数和图像尺寸。YOLO 会对预训练权重进行微调。

model = YOLO("yolov8n.pt")
model.train(
    data="my_dataset.yaml",
    epochs=50,
    imgsz=640
)

数据 YAML

数据集 YAML 会列出训练和验证图像文件夹以及类别名称。YOLO 要求每张图像都有一个匹配的标签文件,其中包含每个物体经过归一化的框坐标。

# my_dataset.yaml
# train: images/train
# val: images/val
# names:
#   0: helmet
#   1: vest

快速检查

检验您对 YOLOv8 的理解。

回顾:使用 YOLOv8 进行目标检测

您使用 YOLO("yolov8n.pt") 加载了预训练检测器,运行了 model.predict(img, conf=0.5),并从 results[0].boxes.xyxy、.cls 和 .conf 中读取检测结果。您使用 results[0].plot() 将结果可视化,并通过带有数据 YAML 的 model.train 在自定义类别上进行微调。

常见问题解答

「使用 YOLOv8 进行目标检测」课时是免费的吗?

是的 — 「使用 YOLOv8 进行目标检测」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「使用 YOLOv8 进行目标检测」这节课中我会学到什么?

ultralytics YOLO、model.predict()、边界框、置信度过滤和自定义训练。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「使用 YOLOv8 进行目标检测」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. PyTorch 张量与 Autograd
  2. 自定义数据集与 DataLoaders
  3. 在 PyTorch 中构建并训练 CNN
  4. 使用 YOLOv8 进行目标检测
← 返回 Learn AI with Python