4、任务指标对齐:分类、检测、分割等不同任务如何选择与对齐评估指标

在TFLite模型量化评估中,最常犯的错误之一就是“一把尺子量所有任务”。分类任务看Top-1准确率,检测任务看mAP,分割任务看mIoU——这些指标看似都是“准确率”的变体,但它们的数学定义、对误差的敏感度、以及量化噪声的影响路径完全不同。如果不对齐任务指标,量化前后的对比就会失真,甚至得出“量化后模型变好了”的错误结论。本章将系统梳理分类、检测、分割三大类任务的指标选择逻辑,并给出量化评估中指标对齐的具体操作流程。

任务指标对齐决策框架 分类任务 检测任务 分割任务 核心指标 Top-1 / Top-5 混淆矩阵 / 类别准确率 量化关注:logits分布偏移 核心指标 mAP@[.5:.95] / mAP@.5 AR / 各类别AP 量化关注:边界框回归精度 核心指标 mIoU / Dice / Pixel Acc 边界F1-score 量化关注:边界像素预测 对齐策略(量化前后必须一致) ① 同一数据集、同一预处理、同一后处理参数 ② 同一置信度阈值 / NMS参数 / 类别权重 ③ 逐类别对比,不只对比均值;记录每个类别的指标变化 ④ 量化敏感度分析:按类别/按像素区域定位退化来源

4.1 核心原理:为什么任务指标不能混用

量化评估的本质是比较“量化前模型”与“量化后模型”在相同任务上的性能差异。但不同任务的输出空间和误差定义截然不同:分类任务输出的是类别概率分布,检测任务输出的是“类别+边界框坐标”,分割任务输出的是逐像素的类别标签。这意味着,量化噪声(权重离散化误差、激活值截断误差)在不同任务中会以不同的方式影响最终指标。

以分类任务为例,Top-1准确率只关心最大概率对应的类别是否正确,对概率值的大小不敏感。因此,即使量化导致logits整体偏移,只要类别间的相对排序不变,Top-1就不会下降。而检测任务的mAP则对边界框的IoU(交并比)非常敏感——一个框偏移几个像素,IoU可能从0.7掉到0.5,直接导致该预测被判为假阳性。分割任务的mIoU则对边界像素的预测错误极其敏感,因为边界像素在整张图中占比虽小,但错误会同时影响两个类别的IoU计算。

关键认知:量化评估不是“看一个数字”,而是要看“量化噪声如何通过任务特有的误差传播路径影响最终指标”。分类任务对量化最鲁棒,检测次之,分割最敏感。这不是因为分割模型更复杂,而是因为mIoU的数学定义放大了边界误差。

4.2 判断方法:三类任务的指标选择与对齐操作流程

在实际TFLite量化评估中,建议按照以下流程进行指标对齐:

  1. 明确任务类型与输出定义:分类任务输出logits向量;检测任务输出“类别概率+边界框坐标(通常为[x_center, y_center, width, height]或[x1, y1, x2, y2])”;分割任务输出与输入同分辨率的类别概率图。
  2. 选择与任务匹配的评估指标:分类用Top-1/Top-5;检测用mAP@[.5:.95](COCO标准)或mAP@.5(Pascal VOC标准);分割用mIoU、Dice系数、Pixel Accuracy。
  3. 固定评估配置:量化前后必须使用完全相同的评估脚本、数据集划分、预处理参数(归一化均值/方差、输入分辨率)、后处理参数(置信度阈值、NMS的IoU阈值、类别数)。
  4. 逐类别/逐区域对比:不要只看均值。分类任务要对比每个类别的准确率;检测任务要对比每个类别的AP;分割任务要对比每个类别的IoU。这样才能定位量化退化的具体来源。
  5. 记录量化敏感度:对每个类别或每个像素区域,计算量化前后的指标差值,形成敏感度报告。差值超过预设阈值(如相对下降超过5%)的类别需要重点分析。
任务类型推荐指标量化敏感点对齐注意事项
图像分类Top-1 / Top-5logits分布偏移、类别混淆固定输入分辨率、固定归一化参数
目标检测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)对边界框回归头单独处理。

经验总结:检测模型的量化退化往往集中在少数类别上,而不是均匀分布。逐类别AP对比是定位问题的第一把钥匙。如果整体mAP下降但所有类别AP下降幅度相近,则可能是全局激活值范围估计问题;如果只有个别类别大幅下降,则可能是该类别样本在校准集中占比不足。

4.4 常见误区与总结复盘

误区一:用Top-1准确率评估检测模型。这是最严重的错误。检测模型的输出包含定位信息,Top-1只能反映分类分支的性能,完全忽略边界框质量。即使分类全对,边界框偏移也会导致mAP大幅下降。

误区二:量化前后使用不同的后处理参数。例如,浮点模型使用置信度阈值0.5,量化模型为了“看起来更好”而把阈值降到0.3。这会让对比失去意义。后处理参数必须完全一致。

误区三:只报告均值指标,不报告方差或逐类别结果。均值会掩盖个别类别的严重退化。在量化评估报告中,至少应包含逐类别指标表,并标注相对变化超过10%的类别。

误区四:忽略输入分辨率对量化评估的影响。如果浮点模型在640×640分辨率下评估,量化模型在320×320下评估,结果完全不可比。输入分辨率影响激活值分布,进而影响量化参数。

风险提示:在TFLite中,量化模型的输入张量通常被固定为int8格式,但浮点模型的输入是float32。评估时,必须使用相同的输入缩放因子(scale)和零点(zero_point)。如果预处理代码中使用了不同的归一化方式(如除以255 vs. 减去均值再除以标准差),会导致输入分布不一致,量化模型性能被低估。

总结复盘:任务指标对齐的核心原则是“同任务、同配置、同数据、逐类别”。分类任务关注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量化