YOLOv8 实战:从零训练一个番茄识别模型
从只会 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 终于能用了。

数据集准备
本次使用的数据集包含 1386 张番茄图片(原始 + 数据增强),标注了两个类别:
green_tomato(绿番茄)red_tomato(红番茄)
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
)
几个关键参数:
yolov8n.pt:Nano 版本,最小最快的模型,适合数据量不大的场景epochs=100:把数据看 100 遍batch=16:每次喂 16 张图device=0:用 GPU 加速
100 个 epoch 用 RTX 4050 大概跑了十几分钟。

看懂训练结果
训练完成后会在 runs/ 目录下生成一堆分析文件。
训练曲线

三个 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 行。几个经验:
- 环境很重要:先确认 PyTorch 能用 GPU,再开始训练
- 从小模型开始:Nano 模型训练快,数据量小的时候不要用大模型
- 看 loss 曲线:loss 还在降就加 epoch,验证 loss 开始上升就是过拟合
- 数据质量 > 数据数量:1386 张标注好的图就能训出不错的效果
下一步打算增加 epoch 到 300 看看能不能再提升,以及试试更大规模的模型。
本文记录了 2026 年 5 月 12 日的 YOLOv8 学习实践。