参数含义
| 名词 | 是什么 | 怎么看 | 怎么调 |
|---|---|---|---|
| epoch | 把整个训练集完整扫一遍的次数。 | 100 epoch = 把 10 000 张图顺序 feed 100 轮。 | 数据少(<5 k)先 100;数据大(>50 k)50~80 就够;loss 早平就 EarlyStopping。 |
| batch / batch_size | 一次前向-反向喂给 GPU 的样本数。 | batch=32 表示 32 张图同时算梯度再更新权重。 | 显存 8 G 可 32@640;爆显存就减半;batch 越大梯度越稳但占显存。 |
| lr0 | 初始学习率,控制权重每次迈的步长。 | 默认 0.01;太大 loss 震荡,太小收敛慢。 | 微调时降 5~10 倍(0.001);warmup_epochs 里会从 0 线性升到 lr0。 |
| mAP@0.5 | 把 IoU 阈值固定在 0.5 时的平均精度(mean Average Precision)。 | 单类检测>0.9 就能用;0.85~0.9 继续加数据;<0.85 先看标注质量。 | 升 mAP:加数据→调大模型→更长时间训练→mosaic/颜色增强。 |
| mAP@0.5:0.95 | IoU 从 0.5 到 0.95 每隔 0.05 取一次 AP 再平均,更严格。 | COCO 官方指标;车牌单类场景与 @0.5 相差 2~3 个点即可。 | 同上,但对定位精度更敏感,适合评估“框是否贴边”。 |
| Recall | 所有真车牌里,被模型找出来的比例。 | Recall=0.94 表示 100 块牌里漏 6 块。 | 漏检多就降 conf-thres(0.25→0.15)、加样本、增小目标增强。 |
| Precision | 模型检出的“车牌”里,真的是车牌的比例。 | Precision=0.89 表示每 100 个框里 11 个是误报。 | 误检多就升 conf-thres、加负样本、训练时关闭 mosaic 过早易过拟合。 |
| IoU | 预测框与真框的交并比,0~1。 | 0.5 以上才算 TP(真阳性);0.7 以上定位算优秀。 | 评估指标,不用手动调。 |
| backbone | 负责“看”并提取通用特征的网络前段。 | YOLO11 的 CSPDarknet-P5;ImageNet 预训练权重。 | 通常不动;极小数据可用 freeze=10 先冻 10 epoch 再解冻。 |
| neck | 把 backbone 多尺度特征融合的“脖子”,YOLO11 是 PAN+FPN。 | 用户层无需改;换模型大小(n/s/m/l/x)即自动缩放通道数。 | —— |
| head | 最后三尺度检测头,输出 3×(5+nc) 个通道。 | 单类车牌就是 3×6=18 通道;负责给框+置信度+类别。 | —— |
| anchor | 提前聚类出的高宽比模板。 | YOLO11 默认自动聚类 3 组共 9 框;香港车牌 1:3 居多。 | 若宽高分布特殊,加 anchor=4 让代码重跑 k-means;或手动写进 *.yaml。 |
| close_mosaic | 训练后期关掉 mosaic 增强的 epoch 数。 | mosaic 把四张图拼成一张,小目标会被缩小;车牌小,设 10 表示最后 10 epoch 关掉,让网络看到“正常尺度”。 | 小目标多就 10~15;大目标可 0(全程开)。 |
| warmup_epochs | 前几 epoch 学习率从 0 线性升到 lr0,防止早期震荡。 | 默认 3;大数据集可 5;极小数据可 1。 | 一般不动。 |
| momentum | 梯度滑动平均系数,默认 0.937。 | 越大越稳但收敛慢;通常不动。 | —— |
| weight_decay | L2 正则系数,默认 0.0005。 | 防止过拟合;数据量很大可降到 0.0001。 | —— |
| conf-thres | 推理时置信度阈值,低于则丢弃。 | 默认 0.25;想减少误检就 0.4~0.5;想多召回就 0.15。 | 只影响推理,不影响训练。 |
| iou-thres | NMS 时 IoU 超过此值就合并框。 | 默认 0.7;密集车牌可 0.5;稀疏场景 0.8。 | 同上,推理参数。 |
30 秒速记口诀
- epoch 看数据量,batch 看显存;
- lr0 降五倍,mosaic 早关;
- mAP 上 90 就能用,Recall 漏检加样本;
- backbone 先冻后解,anchor 不对重聚类;
- conf/iou 只关推理,训练阶段别乱动。
训练过程中屏幕显示的
| 列名 | 现场含义 | 好坏参考 | 异常时怎么办 |
|---|---|---|---|
| Epoch | 当前第几轮(迭代完整个数据集一次算 1 epoch)。 | 涨到设定值就停。 | 想提前停看后面 mAP 是否已平稳。 |
| GPU_mem | 显存占用(GB)。 | RTX3060-12G 跑 640×batch=32 约 6-8G;>90% 就易爆。 | 降 batch 或 imgsz。 |
| box_loss | 预测框与真框的坐标/长宽误差(CIoU Loss)。 | 从 0.06 降到 0.02 以下算收敛;若反弹→震荡。 | loss 回升把 lr0 调小;长期不降加数据/增强。 |
| cls_loss | 类别置信度交叉熵(单类车牌恒=0 也显示)。 | 单类场景这条值极低(<0.01),可忽略。 | 多类时>0.03 说明类别混淆,检查标注。 |
| dfl_loss | Distribution Focal Loss,YOLOv8+ 把“框的上下左右”当分布回归产生的额外 loss。 | 同步下降即可;绝对值比 box_loss 小一个量级。 | 同 box_loss 处理。 |
| Instances | 本 batch 里参与损失计算的“目标”总数(含复制-粘贴、mosaic 后的)。 | 随 batch 大小波动即可;=0 说明 batch 里一张图都没框→会报 Nan。 | 长期=0 检查标注路径/空 txt。 |
| Size | 当前训练分辨率(imgsz)。 | 默认 640;多尺度训练时 480-640-800 轮流跳。 | 若固定 640 仍跳动,说明开启多尺度,正常。 |
7% ╸─────────── 21/295 0.0it/s 30:57<6:21:20
| 片段 | 含义 | 现场举例 |
|---|---|---|
7% | 当前 epoch 已完成的 百分比。 | 7% = 刚跑完 7 % 的 batch。 |
╸─────────── | 图形化进度条(已走 7 % 长度)。 | 纯视觉,无单位。 |
21/295 | 已跑 batch 数 / 总 batch 数。 | 295 个 batch 里才跑 21 个。 |
0.0it/s | 瞬时速度(iterations per second)。 | 0.0 是 UI 刷新延迟,正常会跳到 2~5 it/s。 |
30:57<6:21:20 | 已用时间 < 预计剩余时间。 | 已跑 30 分 57 秒,全部跑完还要 6 小时 21 分。 |
每epoch结束
会有一次
Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 37/37 2.2it/s 17.1s
一行是 当前 epoch 的“验证阶段”进度条,跑完就标志着这个 epoch 正式结束。如下:
| 片段 | 含义 | 现场值举例 |
|---|---|---|
| Class | 类别名(你只有 1 类就显示 license 或 all)。 | 单类只出现 1 行。 |
| Images | 验证集一共多少张图。 | 37 = 你的 val 文件夹共 37 张。 |
| Instances | 这 37 张图里总共多少目标(车牌)。 | 若每张 2 块牌 → ≈74。 |
| Box(P R mAP50 mAP50-95) | 4 个指标:精确率、召回率、IoU=0.5 平均精度、IoU=0.5:0.95 平均精度。 | 等进度条走完会给出 4 个数字,如 0.923 0.897 0.919 0.712。 |
| 37/37 | 已跑完 37 个 batch / 共 37 个 batch。 | 即验证集迭代完毕。 |
| 2.2it/s | 验证速度:每秒处理 2.2 个 batch。 | 越大越好,GPU 空闲时通常 5~10 it/s。 |
| 17.1s | 验证阶段总用时。 | 单 epoch 的验证一般 10~30 s。 |

上图意味着:
- 37 张验证图、74 块车牌;
- 精确率 92.3 %,召回率 89.7 %,mAP@0.5 = 91.9 %(单类看这条就行),mAP@0.5:0.95 = 71.2 %(更严格)。
- 验证条走完立刻进入下一 epoch 的训练。
一句话:它是“小考交卷”进度条,数字就是本 epoch 的 mAP 成绩。
中止训练
- 随时 Ctrl+C 都能拿到“能用”的权重,但要不要停、什么时候停,看两个数即可:
- 中间停止 = 立刻生成可用权重
- Ultralytics YOLO 默认 每个 epoch 结束都保存一次:
- runs/train/xxx/weights/last.pt ← 最新完整 epoch
- runs/train/xxx/weights/best.pt ← 历史验证 mAP 最高的一次
- 你按下 Ctrl+C 后,程序会再写一次 last.pt(当前 epoch 刚跑完的状态),直接加载就能继续或推理:
model = YOLO('runs/train/xxx/weights/last.pt')
model.predict('test.jpg') # 立刻用
复制
model = YOLO(‘runs/train/xxx/weights/last.pt’)
model.predict(‘test.jpg’) # 立刻用
2. 什么时候停最划算?——盯两行数字即可
| 指标 | 建议阈值 | 说明 |
|---|---|---|
| box_loss 不再下降 | 连续 5-10 epoch 波动 <0.001 | 模型已“学不动”,再跑只是过拟合。 |
| mAP@0.5 平稳 | 连续 5-10 epoch 变化 <0.002 | 验证集不再提升,可早停。 |
在 runs/train/xxx/results.csv 里拉一下折线图,两线都平即可停;
或者肉眼盯终端 mAP 数字:
Epoch 050: mAP@0.5=0.903
Epoch 051: mAP@0.5=0.904
...
Epoch 059: mAP@0.5=0.903 ← 连续 10 epoch 不上 0.905
→ Ctrl+C 停,用 best.pt 即可。
3. 想让代码自动停:早停参数
yolo train ... patience=20 # 验证 mAP 20 epoch 无提升就自动停
默认 patience=100(即一直跑完你设的 epochs),调成 20 可省 30-50 % 时间。
4. 停后继续跑(可选)
yolo train resume data=hkplate.yaml model=runs/train/xxx/weights/last.pt
会从断点 epoch 接着跑,不需要从头再来。
一句话口诀
“loss 不降、mAP 不平不罢休,一平就 Ctrl+C,best.pt 直接投。”
YOLO训练参数详解

8861

被折叠的 条评论
为什么被折叠?



