YOLOv8 实战:从零训练一个番茄识别模型

2026-05-12 探索 Python, YOLO

从只会 pip install 到真正跑通一个目标检测模型,记录一下今天折腾 YOLOv8 的全过程。

YOLO 是什么

YOLO(You Only Look Once)是目前最流行的目标检测算法之一,由 Ultralytics 公司维护。简单来说,它能教电脑"看懂"图片——不仅能识别图片里有什么,还能告诉你东西在哪里。

YOLOv8 支持多种视觉任务:

任务 说明
目标检测 画框标记物体位置和类别
实例分割 像素级精确勾勒物体轮廓
姿态估计 识别人体关键点和骨骼
旋转目标检测 检测倾斜物体
图像分类 判断整张图属于什么类别

本文聚焦最常用的目标检测

环境搭建踩坑

本以为装个库就行,结果折腾了半天环境。

RTX 4050 笔记本,NVIDIA 驱动已装好。但 PyTorch 装的是 CPU 版本(2.11.0+cpu),torch.cuda.is_available() 返回 False,GPU 根本没用上。

更坑的是,默认 Python 是 3.14,PyTorch 的 CUDA 版本还没有适配 Python 3.14 的预编译包。

最终方案:新建一个 Python 3.12 的虚拟环境,再装 GPU 版 PyTorch。

python -m venv F:/yolo/yolo_env
F:/yolo/yolo_env/Scripts/activate
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
pip install ultralytics

验证通过:2.6.0+cu124, True。GPU 终于能用了。

yolo检查GPU

数据集准备

本次使用的数据集包含 1386 张番茄图片(原始 + 数据增强),标注了两个类别:

YOLO 的数据集目录结构很固定:

dataset/
├── images/        ← 图片文件
└── labels/        ← 对应的标注文件(同名 .txt)

每个标注文件的内容格式是 YOLO 格式:每行一个目标,包含类别 ID 和归一化的边界框坐标。

还需要一个 data.yaml 配置文件,告诉模型数据在哪里、有几个类别。

训练模型

训练脚本很简洁,核心就是加载预训练模型然后 train:

from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO("yolov8n.pt")
    results = model.train(
        data="F:/yolo/labels/data.yaml",
        model="yolov8n.pt",
        epochs=100,
        imgsz=640,
        batch=16,
        device=0,  # GPU
    )

几个关键参数:

100 个 epoch 用 RTX 4050 大概跑了十几分钟。

yolo训练过程

看懂训练结果

训练完成后会在 runs/ 目录下生成一堆分析文件。

训练曲线

yolo训练request图片

三个 loss(box_loss、cls_loss、dfl_loss)都在持续下降,说明模型在学习。mAP50 从 0.2 一路升到 0.85,效果不错。而且 loss 在 100 epoch 时还没走平,说明还能继续训练提升。

验证集预测对比

模型已经能正确区分绿番茄和红番茄,密集场景下表现也还行,但有部分低置信度的误检。

最终指标

指标 说明
mAP50 0.85 IoU=0.5 时的精度
precision 0.85 精确率
recall 0.75 召回率

实时推理

训练好的模型可以直接接摄像头做实时检测:

from ultralytics import YOLO

model = YOLO("best.pt")
model.predict(source=0, show=True, conf=0.5)

弹出窗口,实时画面里模型会给番茄画上检测框,低于 50% 置信度的自动过滤。

[TODO: 配图 - 实时检测效果截图]

总结

整个流程跑下来,YOLOv8 的体验确实很流畅——从安装到出结果,核心代码不超过 20 行。几个经验:

  1. 环境很重要:先确认 PyTorch 能用 GPU,再开始训练
  2. 从小模型开始:Nano 模型训练快,数据量小的时候不要用大模型
  3. 看 loss 曲线:loss 还在降就加 epoch,验证 loss 开始上升就是过拟合
  4. 数据质量 > 数据数量:1386 张标注好的图就能训出不错的效果

下一步打算增加 epoch 到 300 看看能不能再提升,以及试试更大规模的模型。


本文记录了 2026 年 5 月 12 日的 YOLOv8 学习实践。

本文由一方天地发布 · 查看完整体验