4、任务指标对齐:分类、检测、分割等不同任务如何选择与对齐评估指标
在TFLite模型量化评估中,最常犯的错误之一就是“一把尺子量所有任务”。分类任务看Top-1准确率,检测任务看mAP,分割任务看mIoU——这些指标看似都是“准确率”的变体,但它们的数学定义、对误差的敏感度、以及量化噪声的影响路径完全不同。如果不对齐任务指标,量化前后的对比就会失真,甚至得出“量化后模型变好了”的错误结论。本章将系统梳理分类、检测、分割三大类任务的指标选择逻辑,并给出量化评估中指标对齐的具体操作流程。
4.1 核心原理:为什么任务指标不能混用
量化评估的本质是比较“量化前模型”与“量化后模型”在相同任务上的性能差异。但不同任务的输出空间和误差定义截然不同:分类任务输出的是类别概率分布,检测任务输出的是“类别+边界框坐标”,分割任务输出的是逐像素的类别标签。这意味着,量化噪声(权重离散化误差、激活值截断误差)在不同任务中会以不同的方式影响最终指标。
以分类任务为例,Top-1准确率只关心最大概率对应的类别是否正确,对概率值的大小不敏感。因此,即使量化导致logits整体偏移,只要类别间的相对排序不变,Top-1就不会下降。而检测任务的mAP则对边界框的IoU(交并比)非常敏感——一个框偏移几个像素,IoU可能从0.7掉到0.5,直接导致该预测被判为假阳性。分割任务的mIoU则对边界像素的预测错误极其敏感,因为边界像素在整张图中占比虽小,但错误会同时影响两个类别的IoU计算。
4.2 判断方法:三类任务的指标选择与对齐操作流程
在实际TFLite量化评估中,建议按照以下流程进行指标对齐:
- 明确任务类型与输出定义:分类任务输出logits向量;检测任务输出“类别概率+边界框坐标(通常为[x_center, y_center, width, height]或[x1, y1, x2, y2])”;分割任务输出与输入同分辨率的类别概率图。
- 选择与任务匹配的评估指标:分类用Top-1/Top-5;检测用mAP@[.5:.95](COCO标准)或mAP@.5(Pascal VOC标准);分割用mIoU、Dice系数、Pixel Accuracy。
- 固定评估配置:量化前后必须使用完全相同的评估脚本、数据集划分、预处理参数(归一化均值/方差、输入分辨率)、后处理参数(置信度阈值、NMS的IoU阈值、类别数)。
- 逐类别/逐区域对比:不要只看均值。分类任务要对比每个类别的准确率;检测任务要对比每个类别的AP;分割任务要对比每个类别的IoU。这样才能定位量化退化的具体来源。
- 记录量化敏感度:对每个类别或每个像素区域,计算量化前后的指标差值,形成敏感度报告。差值超过预设阈值(如相对下降超过5%)的类别需要重点分析。
| 任务类型 | 推荐指标 | 量化敏感点 | 对齐注意事项 |
|---|---|---|---|
| 图像分类 | Top-1 / Top-5 | logits分布偏移、类别混淆 | 固定输入分辨率、固定归一化参数 |
| 目标检测 | mAP@[.5:.95] | 边界框回归精度、置信度校准 | 固定NMS阈值、固定置信度阈值、固定anchor配置 |
| 语义分割 | mIoU / Dice | 边界像素预测、小目标类别 | 固定上采样方式、固定损失函数权重 |
| 实例分割 | mask AP | 掩码边界精度 | 固定mask阈值、固定检测与分割的联合后处理 |
4.3 案例拆解:检测模型量化后mAP下降的定位过程
假设我们有一个基于MobileNetV2-SSD的检测模型,在COCO子集上训练,原始浮点模型mAP@[.5:.95]为0.312。使用TFLite默认的int8量化后,mAP降至0.247,相对下降20.8%,这显然是不可接受的。但如果我们只看整体mAP,无法知道问题出在哪里。
我们按照指标对齐流程进行逐类别分析,发现“自行车”类别的AP从0.28降至0.11,下降60%;而“人”类别的AP从0.45降至0.42,仅下降6.7%。进一步检查发现,量化后的模型在“自行车”类别上输出的边界框普遍偏大,且置信度偏低。通过打印量化前后该类别所有预测框的坐标分布,发现量化后边界框的宽度和高度普遍增加了5-8个像素。
深入分析后确认,这是因为量化时对边界框回归头的激活值范围估计不准确——校准数据集(calibration dataset)中“自行车”样本较少,导致该分支的激活值动态范围被低估,量化截断误差增大。解决方案是:在量化校准阶段,为“自行车”类别增加样本权重,或者使用更长的校准步数(如从100步增加到500步),并采用“逐通道量化”(per-channel quantization)对边界框回归头单独处理。
4.4 常见误区与总结复盘
误区一:用Top-1准确率评估检测模型。这是最严重的错误。检测模型的输出包含定位信息,Top-1只能反映分类分支的性能,完全忽略边界框质量。即使分类全对,边界框偏移也会导致mAP大幅下降。
误区二:量化前后使用不同的后处理参数。例如,浮点模型使用置信度阈值0.5,量化模型为了“看起来更好”而把阈值降到0.3。这会让对比失去意义。后处理参数必须完全一致。
误区三:只报告均值指标,不报告方差或逐类别结果。均值会掩盖个别类别的严重退化。在量化评估报告中,至少应包含逐类别指标表,并标注相对变化超过10%的类别。
误区四:忽略输入分辨率对量化评估的影响。如果浮点模型在640×640分辨率下评估,量化模型在320×320下评估,结果完全不可比。输入分辨率影响激活值分布,进而影响量化参数。
总结复盘:任务指标对齐的核心原则是“同任务、同配置、同数据、逐类别”。分类任务关注Top-1,检测任务关注mAP,分割任务关注mIoU,但更重要的是理解每个指标对量化噪声的敏感路径。在量化评估报告中,建议采用以下模板:
量化评估报告(任务:目标检测)
- 模型:MobileNetV2-SSD
- 量化方式:int8全量化(per-tensor)
- 数据集:COCO val2017子集(500张)
- 评估配置:输入分辨率320×320,置信度阈值0.5,NMS IoU阈值0.5
- 浮点模型mAP@[.5:.95]:0.312
- 量化模型mAP@[.5:.95]:0.247(相对下降20.8%)
- 逐类别AP对比:
- person: 0.45 → 0.42(-6.7%)
- bicycle: 0.28 → 0.11(-60.7%)⚠️
- car: 0.33 → 0.29(-12.1%)
- 分析结论:bicycle类别退化严重,疑似校准集样本不足
- 优化建议:增加bicycle样本权重,或对回归头使用per-channel量化