当前位置: 首页 > news >正文

精度评估与 Bad Case 优化:从 mAP 到业务指标

精度评估与 Bad Case 优化:从 mAP 到业务指标

模型训完、量化完、部署完,不代表就完事了。上线后效果怎么样、哪里不准、为什么错、怎么改进,这些才是落地的关键。这篇讲精度评估方法、误检漏检分析、bad case 分类和迭代优化的流程。

大家好,我是黒漂技术佬。

很多人做模型,训练完看一眼 mAP 就觉得完事了。实际上线才发现:mAP 挺高,但业务上各种误检漏检,用户投诉一堆。

mAP 只是一个综合指标,不能反映所有问题。要做好落地,必须深入分析 bad case,找到问题,针对性优化。

这篇讲怎么评估模型精度、怎么分析错误、怎么分类 bad case、怎么迭代优化。


一、先搞清楚:评估什么指标?

目标检测常用指标

mAP(mean Average Precision)

最常用的综合指标,所有类别的平均精度均值。

  • 优点:综合、公平
  • 缺点:太笼统,看不出具体哪里错了
Precision / Recall
  • Precision(精确率):检测出来的里面,有多少是对的 → 误检率
  • Recall(召回率):真实目标里,检测到了多少 → 漏检率

业务上:

  • 误检代价高 → 看重 Precision
  • 漏检代价高 → 看重 Recall

售货柜商品识别:漏检 = 少收钱(公司损失),误检 = 多收钱(客诉),都不能太高。

各类别 AP

每个类别单独算 AP,看哪些类别效果差。

不同尺寸目标的 AP

小目标、中目标、大目标分别算,看小目标是不是短板。

业务指标更重要

技术指标再好看,业务指标不行也白搭。

售货柜的业务指标:

  • 订单识别准确率:整单商品识别对不对
  • 单品识别率:每个商品被正确识别的概率
  • 误触发率:没人的时候会不会误报
  • 异常处理率:特殊场景(手遮挡、商品叠放)能不能处理

最终是业务指标说了算,mAP 只是参考。


二、测试集怎么建?

评估的前提是有一个好的测试集。

测试集的要求

  1. 和训练集不重叠:不能用训练数据测,那是自欺欺人
  2. 覆盖真实场景:各种光照、角度、遮挡都要有
  3. 类别分布合理:和实际场景分布一致
  4. 标注质量高:测试集标注必须准,不然评估没意义

测试集构成建议

  • 正常场景:60%
  • 困难场景(遮挡、反光、模糊):20%
  • 边界 case(部分露出、叠放):20%

全是简单图的测试集,精度虚高,上线就崩。

测试集大小

  • 几百张:大概看看效果
  • 1000-3000 张:比较靠谱的评估
  • 10000+ 张:统计显著,细分分析有意义

根据项目规模来,至少几百张起步。


三、Bad Case 分析流程

第一步:跑测试集,收集所有错误

把测试集全部推理一遍,记录:

  • 漏检:GT 有,模型没检测出来
  • 误检:模型检测出来了,GT 没有
  • 分类错误:检测到了,但类别认错了
  • 定位不准:框偏移太大

第二步:按类型分类

把错误分类,统计占比:

错误类型数量占比典型场景
小目标漏检12835%远处的小商品
遮挡漏检9626%手挡住、商品叠放
反光误检5214%玻璃柜反光
相似品类错分4312%两种可乐分不清
背景误检329%花纹、标签被检测成商品
其他154%-

一眼就能看出主要问题在哪。

第三步:按场景分类

再按场景维度分:

  • 光照:强光 / 弱光 / 正常
  • 角度:正视角 / 侧视角
  • 距离:近 / 中 / 远
  • 遮挡:无 / 部分 / 严重

找到哪个场景下效果最差。

第四步:根因分析

每个主要错误类型,分析原因:

例:小目标漏检

  • 原因 1:训练集中小目标样本少
  • 原因 2:输入分辨率不够,小目标像素太少
  • 原因 3:量化后小目标特征损失大

例:相似品类错分

  • 原因 1:两类商品外观确实很像
  • 原因 2:训练数据区分度不够
  • 原因 3:特征提取不够细

四、常见 Bad Case 类型与优化方法

1. 漏检(Recall 低)

原因
  • 训练数据里这类目标少
  • 目标太小 / 太模糊
  • 置信度阈值设太高
  • 遮挡严重
优化方法
  1. 降低置信度阈值:简单直接,召回上去了但精确率会掉一点
  2. 补充对应场景的数据:缺什么补什么
  3. 提高输入分辨率:小目标多就加大输入尺寸
  4. 数据增强加强:随机缩放、裁剪,制造更多小目标
  5. 专门的小目标检测头:加一个高分辨率的检测分支

2. 误检(Precision 低)

原因
  • 背景里有类似目标的东西
  • 训练集负样本不够
  • 阈值太低
优化方法
  1. 提高置信度阈值:简单直接
  2. 加入难例负样本:把误检的背景图加进去训
  3. 困难样本挖掘:把模型容易搞错的样本重点训练
  4. 增加训练数据多样性:更多背景、更多场景

3. 分类错误

原因
  • 两类确实长得像
  • 类别数据不均衡
  • 特征区分度不够
优化方法
  1. 补充易错类别的数据:增加相似品类的样本
  2. 细粒度特征:加注意力、改 backbone
  3. 类别均衡采样:训练时少的类别多采样
  4. 后处理规则:业务上能区分的,加规则辅助(比如位置、价格)

4. 定位不准(框偏移)

原因
  • 标注本身不准
  • 模型回归能力不够
  • 量化损失
优化方法
  1. 检查标注质量:先确认标注准不准
  2. 增加定位损失权重:训练时调 loss 权重
  3. CIoU / DIoU loss:更好的回归损失函数
  4. 更大的输入尺寸:像素多了定位更准

5. 特定场景效果差

比如晚上、逆光、雨天效果差。

优化方法
  1. 补充该场景的数据:最直接有效
  2. 针对性数据增强:模拟暗光、加噪点
  3. 图像预处理:暗光增强、去反光
  4. 多模型融合:不同场景用不同模型(复杂了点)

五、迭代优化流程

模型优化不是一锤子买卖,是循环迭代的过程。

第一轮:基线

  • 训个 baseline 模型
  • 跑测试集,评估指标
  • 分析 bad case,找出 Top3 问题

第二轮:数据优化

  • 针对主要问题补充数据
  • 加强对应的数据增强
  • 再训一版,看提升多少

第三轮:模型优化

  • 数据优化后还不行,考虑调模型
  • 换大一点的模型、加模块、调结构
  • 对比收益和速度代价

第四轮:后处理优化

  • 加业务规则过滤误检
  • NMS 参数调优
  • 时序融合(视频流多帧结果融合)

循环往复

  • 上线收集真实 bad case
  • 加入测试集,补充训练集
  • 再训再评估
  • 直到满足业务要求

六、视频流场景的特殊优化

售货柜是视频流,不是单张图,可以利用时序信息。

1. 多帧融合

连续几帧都检测到同一个目标,置信度更高;单帧偶然出现的,可能是误检。

连续 3 帧都检测到 → 确认是真目标 只出现 1 帧 → 可能是误检,过滤掉

简单的时序过滤就能去掉不少误检。

2. 轨迹追踪

用目标追踪(DeepSORT、ByteTrack)把同一目标在不同帧关联起来:

  • 减少重复检测
  • 补全短暂遮挡的漏检
  • 轨迹平滑,框更稳

3. 结果投票

多帧结果投票决定最终类别:

帧1: 可乐 置信度 0.8 帧2: 可乐 置信度 0.7 帧3: 雪碧 置信度 0.6 → 最终:可乐(2票胜出)

比单帧识别准很多。

💡 售货柜项目里,加了多帧投票后,单品识别准确率提升了 3 个点,几乎零成本。


七、量化后的精度问题排查

部署到 RK3588 上精度掉了,怎么排查?

第一步:确认 FP16 精度正常

先测 FP16(不量化)版本的精度:

  • FP16 也掉很多 → 不是量化的问题,是转换/预处理的问题
  • FP16 正常,INT8 掉 → 是量化的问题

第二步:检查预处理对齐

最常见的坑:

  • RGB/BGR 搞反了
  • 归一化 mean/std 不对
  • resize 方式不一样(letterbox vs 直接缩放)
  • 像素值范围(0-255 vs 0-1)

逐个对比 PC 端和板端的预处理,确保输入完全一致。

第三步:逐层对比输出

拿同一输入,对比 ONNX 和 RKNN 每层的输出差异,找误差最大的层。

第四步:针对性优化

找到问题层后:

  • 某层量化误差大 → 指定那层 FP16
  • 整体都大 → 优化校准集、换量化方法
  • 第一层误差大 → 输入预处理的问题

八、实际案例:售货柜 bad case 优化

分享一下售货柜项目的一轮优化:

初始版本问题

  • 整体 mAP:94%
  • 业务问题:部分商品漏检、反光时误检、相似品类偶尔认错

Bad Case 分析

  1. 底部货架商品漏检多(角度偏、光线暗)
  2. 玻璃反光时容易把反光点误检成商品
  3. 两种口味的薯片经常认错

优化措施

  1. 补充数据:底部货架角度 +500 张,反光场景 +300 张,易错薯片各加 200 张
  2. 数据增强:加随机亮度、加模拟反光的增强
  3. 阈值调整:置信度从 0.25 调到 0.3,减少误检
  4. 多帧投票:连续 3 帧结果投票,过滤单帧误检

优化结果

  • mAP:94% → 96.2%
  • 底部漏检率:12% → 4%
  • 反光误检:每小时 5 次 → 0.3 次
  • 薯片认错率:8% → 2%

业务指标大幅提升,用户投诉明显减少。


九、常见误区

误区 1:只看 mAP

mAP 高不代表业务好用。误检集中在某个高频场景,mAP 掉不多但用户感知很强。

误区 2:盲目加数据

什么数据都往里加,不如针对性补充 bad case 数据。100 张难例数据顶得上 1000 张普通数据。

误区 3:一上来就换大模型

精度不够先看数据、看训练,最后才考虑换大模型。很多时候数据优化的收益比换模型大。

误区 4:测试集和训练集同分布

测试集太简单,评估结果虚高。测试集要比训练集「难」一点,才能真实反映上线效果。

误区 5:优化只靠算法

业务规则、后处理、时序融合,这些工程手段的优化效果往往不比算法差,而且更快。


十、本篇小结

  • 评估不能只看 mAP,Precision/Recall、各类别 AP、业务指标都要看
  • 测试集要覆盖真实场景,困难场景不能少
  • Bad Case 分析:分类统计 → 找主要问题 → 根因分析 → 针对性优化
  • 常见问题:漏检、误检、错分、定位不准,各有对应的优化方法
  • 视频流场景可以用多帧融合、轨迹追踪、结果投票进一步提升
  • 量化掉精度先排查预处理,再分析是哪层误差大
  • 迭代优化:分析 → 补数据 → 调模型 → 加后处理,循环提升
  • 工程优化(后处理、规则)有时候比算法优化见效更快

下一篇讲部署工程化:模型版本管理、热更新、异常处理、监控告警——生产环境要考虑的那些事。

我是黒漂技术佬。

http://www.jsqmd.com/news/1189301/

相关文章:

  • 基于TPS61170和STM32的高效DC-DC升压转换设计
  • 2026年7月最新无锡萧邦官方售后客服中心地址电话及服务网点分布 - 萧邦中国官方服务中心
  • 贪吃蛇算法与双语言实现:从状态机到BFS寻路
  • 2026年南宁茅台回收门店推荐排行榜TOP5 - 官方资讯
  • 贵阳制造企业100人春季团建:5万元预算与雨天预案
  • 【Bug已解决】openclaw regex timeout / RegExp execution exceeded — OpenClaw 正则表达式超时解决方案
  • K-Means算法实战:从原理到Python实现与调优
  • 工业负载控制方案:TPD2017FN与PIC18F2682实战解析
  • 基于YOLOv8的药物识别检测系统:从原理到实践部署指南
  • 爱彼中国官方售后服务中心|服务热线与详细地址权威信息通告(2026年7月最新) - 爱彼中国官方服务中心
  • 基于 HTTP 402 协议构建 AI Skill 平台:13 个 Skill 免费体验,开发者友好
  • ChatGPT在客服系统中的崩溃级误用案例(2024年最新审计报告曝光)
  • MediaPipe模型离线部署与本地Demo运行实战
  • 真力时中国官方售后服务中心详细网点地址与电话实地考察报告+多信源验证(2027年7月最新) - 亨得利官方服务中心
  • TensorFlow Lite模型自动化验证:量化一致性与跨平台测试
  • AI大模型14项核心弊端与根治方案解析
  • Veritas NetBackup 10.1 Windows管理控制台部署与安全访问配置
  • AI For Science:垂直 Agent 的“垂直”,并不主要来自 Prompt
  • 开源之夏openEuler社区:Docker容器化部署完整指南
  • SpringBoot3+Vue3 全套视频教程 52-56
  • Linux共享内存原理与高性能IPC实践
  • 计算机毕业设计之基于springboot健身房会员管理系统设计与实现
  • 基于深度学习的肺炎影像诊断系统设计与实践
  • 2026长沙AI培训正规机构横向解析:课程迭代、项目实训、企业内推 - 梦想蓝途
  • 向量空间JBoltAI:企业大脑如何跨越语义鸿沟?
  • 湿法冶炼XRF-ICP-EDS交叉验证与DCS-LIMS集成项目方案
  • 2026年7月最新重庆宇舶官方售后客服服务电话及地址网点大全 - 亨得利官方服务中心
  • 虚拟歌姬二创技术:从音频分离到调教实战指南
  • Java 后端接入大模型:Spring Boot + RAG 知识库实战
  • 仙桃家庭教育指导师正规报名机构推荐 - 当下教育培训干货