八、项目B · 案例二:目标检测模型训练

案例目标:在预训练模型基础上,改路径/类别数/特征层参数,用案例一的数据集训练出高准确率的交通路牌检测模型。主流方案是 PyTorch + YOLO 系列工程(训练日志 results.csv 正是 YOLOv5/v8 的产物,值得归档对比)。下面给出两个版本的写法。

8.1 改配置文件(要点①:路径、类别名、类别数)

# data.yaml —— YOLOv8 / YOLOv5 的数据集配置(需要你亲手改的三个地方都标了)
path: /home/user/dataset          # ← 改1:数据集根目录(绝对路径最稳)
train: images/train               # 训练图目录(相对 path)
val:   images/val                 # 验证图目录
nc: 3                              # ← 改2:类别个数(有几类写几)
names: ["prohibitory", "warning", "mandatory"]   # ← 改3:类别名列表,顺序=标注时的类别号
# YOLOv5 的用户改 models/yolov5s.yaml:
nc: 3                              # 把默认的 80 类改成 3
# yolov5s.pt 预训练权重的顶层分类头是 80 类,需要改或删掉

8.2 训练脚本(要点②:训练参数调优)

# train_yolo.py
from ultralytics import YOLO

# 加载预训练模型(起点高、收敛快)
model = YOLO("yolov8n.pt")          # 或替换为你的 .pt 路径

model.train(
    data="data.yaml",               # 指向 8.1 的配置文件
    epochs=100,                     # 轮数:小数据集 100 轮起步,看着 loss 收敛即可
    imgsz=640,                      # 输入尺寸:路牌小目标建议 640,显存不够降 512
    batch=16,                       # 批大小:显存 OOM 就减半
    lr0=0.01, lrf=0.01,             # 初始/最终学习率,预训练微调别开太大
    patience=20,                    # 早停:20 轮无提升自动停,省时间
    hsv_h=0.015, hsv_s=0.7, hsv_v=0.4,   # 色彩抖动:路牌对颜色敏感,幅度要克制
    degrees=5, translate=0.1, scale=0.5,  # 几何增强:模拟行车视角
    fliplr=0.5,                     # 水平翻转(flipud 上下翻转对路牌无意义,别开)
    project="runs/sign", name="exp1")   # 输出目录,results.csv 会生成在这里

metrics = model.val()               # 训练完立即在验证集上评估
print(metrics.box.map)              # mAP@0.5:0.95
# YOLOv5 工程版(命令行方式):
python train.py --img 640 --batch 16 --epochs 100 \
       --data data.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt \
       --name exp1
# 训练日志在 runs/train/exp1/results.csv —— 训练完成后值得归档的就是它!
📊 如何看懂 results.csv(调参的依据)
列名含义健康信号
train/box_loss框回归损失(框画得准不准)持续下降后趋平
train/cls_loss分类损失(类别认得对不对)持续下降
metrics/mAP_0.5IoU≥0.5 时的平均精度上升并稳定在高位
metrics/mAP_0.5:0.95更严格的综合指标(案例四考核的就是它)越高越好

调参口诀:loss 不降 → 学习率太大,除以 10;mAP 卡住 → 加数据/加增强/换更大的模型(s→m);验证 loss 上升训练 loss 下降 → 过拟合,减轮数或加正则。改一个参数重训一次,每次都要看 results.csv 对比,别盲改

← 上一页下一页 →

— AI训练师技术交流教程 · 仅供学习交流 —