第五章:计算机视觉(Computer Vision)- 项目实战之目标检测实战

第二部分:目标检测实战:中国交通标志检测

第三节:YOLOv8 模型搭建

在完成 数据准备与格式转化 之后,本节我们进入 YOLOv8 模型的搭建与训练 阶段。YOLOv8 是 Ultralytics 于 2023 年推出的最新一代 YOLO 模型,相比 YOLOv5、YOLOv7,具备更快的推理速度和更优的检测精度,非常适合我们在 中国交通标志检测 中使用。


1. YOLOv8 环境搭建

在开始之前,我们需要准备好运行环境:

# 安装 YOLOv8
pip install ultralytics

# 检查是否安装成功
yolo help

如果你看到一系列命令提示(如 yolo detect train/predict/val/export),说明 YOLOv8 已安装成功。


2. 数据集配置文件(data.yaml)

YOLOv8 需要一个 YAML 配置文件,用来描述数据集路径与类别信息。例如针对 TT100K 交通标志数据集 转换后的格式,我们编写如下文件:

# data.yaml
path: datasets  # 数据集根目录
train: images/train
val: images/val
test: images/test

nc: 200  # 类别数量 (TT100K 是200类,可根据实际精简)
names:
  - prohibitory
  - speedlimit
  - stop
  - crosswalk
  - trafficlight
  - ... # 依次写入 classes.txt 的内容

其中:

  • nc 表示类别总数。

  • names 必须与 classes.txt 保持一致。

  • 你可以选择保留全部 200 类,或只保留常见的 10 类标志以降低难度。


3. YOLOv8 模型选择

YOLOv8 提供多个预训练模型,大小与速度各不相同:

模型 参数量 特点
yolov8n.pt 最小 速度最快,适合入门或移动端
yolov8s.pt 小型 较平衡,适合快速实验
yolov8m.pt 中型 准确率更高
yolov8l.pt 大型 精度高但速度稍慢
yolov8x.pt 最大 最强性能,适合 GPU 训练

在交通标志检测任务中,如果我们只是想 快速验证流程,可以用 yolov8n.pt;如果要 实际部署,推荐 yolov8s.ptyolov8m.pt


4. 模型训练

准备好数据后,开始训练模型:

yolo detect train \
  data=datasets/data.yaml \
  model=yolov8n.pt \
  epochs=50 \
  imgsz=640 \
  batch=16 \
  name=traffic_sign_yolov8

参数说明:

  • data:数据集配置文件。

  • model:预训练权重,可以选择 yolov8n.pt 等。

  • epochs:训练轮数,50~100 较为常见。

  • imgsz:输入图像尺寸,通常 640。

  • batch:批量大小,根据显存设置。

  • name:保存实验的名称。


5. 模型验证与测试

训练完成后,可以使用验证命令:

yolo detect val model=runs/detect/traffic_sign_yolov8/weights/best.pt data=datasets/data.yaml

也可以直接在测试集图片上运行预测:

yolo detect predict model=runs/detect/traffic_sign_yolov8/weights/best.pt source=datasets/images/test

预测结果会保存在 runs/detect/predict/ 文件夹下。


6. 可视化结果

YOLOv8 默认会生成训练过程中的曲线图,包括:

  • loss 曲线:显示训练/验证集的损失下降情况。

  • mAP 曲线:显示检测精度提升情况。

  • PR 曲线:Precision-Recall 关系。

这些图表可以帮助我们判断模型是否 收敛,是否存在 过拟合


7. 总结

在本节中,我们完成了 YOLOv8 的搭建与训练

  1. 安装 YOLOv8 并准备运行环境。

  2. 编写 data.yaml 配置文件,定义交通标志数据集。

  3. 选择合适的 YOLOv8 模型(n/s/m/l/x)。

  4. 使用 yolo detect train 命令进行训练。

  5. 使用验证与预测命令测试模型效果。

这样,我们就得到了一个能够自动检测交通标志的 YOLOv8 模型。

更多推荐