车企目标检测分类模型调优
编写时间:2024-05
目标检测训练迭代,类别以若干车端业务目标为主,并讨论新增相近长尾类别。这不是一次单纯训练,而是训练、评测、数据清洗、量化评估、再训练的持续迭代。
训练迭代流程
Mermaid Loading...
在此之外,实验分支尝试更大的检测模型,同样走训练、评测、数据清洗的迭代。
大模型分支对比
阶段结论是:更大模型在主要类别上整体优于主模型,尤其是召回侧改善更明显;但这个结论只针对同条件离线对照,不代表一定能直接上车,因为车端还有量化、运行时、阈值策略和资源占用。
| 对比项 | 主模型 | 大模型分支 | 结论 |
|---|---|---|---|
| 误检控制 | 基准 | ↑ | 有提升,但需要看车端阈值 |
| 漏检控制 | 基准 | ↑↑ | 改善更明显 |
| 小目标表现 | 基准 | ↑ | 受输入尺寸和数据覆盖影响 |
| 量化后表现 | 待评估 | 待评估 | 不能只看浮点结果 |
| 部署成本 | 低 | ↑ | 需要额外评估延迟和资源 |
评估指标
最早的目标很朴素:漏检可以先接受一些,误检不行,所以误检控制优先级更高,召回可以在后续迭代中逐步补齐。如果多模型、多框架对比,需要统一评估代码。
| 评估维度 | 作用 |
|---|---|
| 误检控制 | 车端体验非常敏感,优先级高 |
| 漏检控制 | 和功能覆盖相关,需要持续补数据 |
| 框位置质量 | 判断定位是否稳定,尤其是小目标 |
| 长尾场景表现 | 看低频高风险场景是否被覆盖 |
| 量化后一致性 | 确认离线收益是否能保留到车端 |
| 综合平衡 | 避免单一指标提升掩盖业务退化 |
重点场景
场景表可以沉淀成模型评估 checklist:
| 类型 | 场景 | 难点 |
|---|---|---|
| 功能需求 | 低照度高反光目标 | 反光、雨滴、低照度 |
| 功能需求 | 远距离特定车辆目标 | 小目标、特征弱 |
| BadCase | 镜头边缘畸变 | 目标形变 |
| 常见挑战 | 夜间/隧道 | 低光、噪点、低饱和 |
| 常见挑战 | 遮挡 | 目标外观不完整、短时丢失 |
| 常见挑战 | 过曝 | 特征丢失 |
下图只表达相对优先级,坐标不对应真实统计数值。
Mermaid Loading...
自定义输入尺寸
为适配车端视角,训练里尝试过非正方形尺寸。YOLOv5 里不能只改一个参数,要同步检查 train.py、dataloader.py、val.py、multi-scale、log 显示和 hyp['obj'] 缩放。
parser.add_argument('--imgsz', '--img', '--img-size', type=list, default=[H, W])这个修改的经验是:自定义尺寸不是“能跑就行”,还要保证训练、验证、anchor、日志和导出链路一致。
数据闭环
这类车企视觉模型的重点不在某个 fancy backbone,而在持续闭环:数据集每次变更后要确认指标变化方向、BadCase 是否真的被覆盖、量化后阈值是否一致。模型只是闭环中的一环。