3. 校准数据集优化:校准数据集的选取策略、数据增强对校准的影响、样本数量与多样性的平衡

量化校准,说白了就是让模型在低精度下「重新认识」真实数据的分布。很多人以为随便拿几百张图跑一遍就能搞定,结果模型一部署,精度直接掉两三个点。我早期做安防检测时就踩过这个坑——用 COCO 的通用校准集去量化一个专门检测小目标的模型,结果召回率从 89% 掉到 72%。后来才发现,问题出在校准数据集上。

这一节,我们专门聊聊校准数据集该怎么选、怎么增强、数量多少才合适。

3.1 校准数据集的选取策略

校准集的核心任务,是让模型在 INT8 下看到的数据分布,尽可能接近实际部署时的数据分布。你想想看,如果校准集里全是白天场景,模型到了晚上就崩,这很正常。

我一般按以下三个维度来选数据:

维度 策略 说明
场景覆盖 按部署环境分层采样 白天/夜晚、室内/室外、晴天/雨天等,每种场景至少 50 张
目标分布 按目标尺寸/类别比例采样 小目标多的场景要多放,避免大目标主导激活值范围
难度梯度 包含简单、中等、困难样本 全是简单样本会导致量化后对困难样本的泛化能力变差
我的习惯:先拿 1000 张部署场景的原始图,按场景和类别做分层抽样,保证每个子集至少 100 张。然后跑一次预量化,看哪些类别的精度掉得厉害,再针对性地补充那些类别的样本。

还有一个容易被忽略的点:校准集里不要有标注错误或模糊不清的样本。我曾经因为一批标注框偏移的图片,导致量化后模型对目标位置的预测偏差大了 15%。校准集的质量,直接决定了量化后的上限。

3.2 数据增强对校准的影响

很多人觉得校准就是「喂数据」,不需要做增强。其实不然。适当的数据增强,可以让模型在 INT8 下看到更多样的激活值分布,从而找到更优的量化参数。

但增强不是越多越好。我总结了几种常见增强对校准的影响:

增强方式 对校准的影响 建议
随机翻转 轻微改变激活值分布,有助于泛化 建议使用,概率 0.5
随机裁剪 改变目标位置和尺度,丰富激活值范围 建议使用,但裁剪比例不要小于 0.8
颜色抖动 大幅改变 RGB 分布,可能导致校准偏移 谨慎使用,强度控制在 0.1 以内
高斯噪声 模拟传感器噪声,但可能掩盖真实分布 不建议用于校准,除非部署环境噪声已知
MixUp / CutMix 生成混合样本,激活值分布变化剧烈 不建议用于校准,容易导致量化参数不稳定
避坑指南:我曾经在一个人脸检测项目里,给校准集加了颜色抖动,结果量化后模型对肤色偏暗的人脸漏检率上升了 8%。后来去掉颜色抖动,只用翻转和轻微裁剪,精度就恢复了。增强的度,一定要根据实际部署场景来调。

为什么会这样?因为校准的本质是统计激活值的 min/max 或直方图分布。如果增强引入了训练时没见过的极端值(比如过亮的颜色),量化参数就会被这些极端值拉偏,导致正常样本的量化精度下降。

3.3 样本数量与多样性的平衡

这是最让人纠结的问题:到底用多少张图做校准?

我直接给结论:对于 YOLOv11,500~2000 张校准图通常就够了。少于 200 张,统计不稳定;多于 5000 张,边际收益递减,反而增加校准时间。

但数量不是唯一指标。多样性更重要。举个例子:

  • 场景 A:1000 张图,全是高速公路上的大卡车
  • 场景 B:500 张图,包含城市道路、乡村小路、隧道、雨天、夜晚

我实测过,场景 B 的量化精度比场景 A 高 1.2~1.8 个点。多样性带来的收益,远大于单纯堆数量。

那怎么平衡?我一般用这个流程:

  1. 初始采样:从部署场景中随机抽取 500 张,保证场景和类别覆盖
  2. 预量化测试:跑一次校准,看每个类别的精度损失
  3. 针对性补充:对精度损失 > 2% 的类别,补充 100~200 张该类别的样本
  4. 多样性检查:用 t-SNE 或 PCA 可视化校准集的特征分布,确保没有明显聚类空洞
  5. 最终确认:总样本量控制在 1000~2000 张,分布均匀
核心原则:校准集的多样性,比数量重要 10 倍。宁可要 500 张覆盖全面的图,也不要 5000 张单一场景的图。

下面这张图,是我常用的校准数据集优化流程:

校准数据集优化流程 部署场景分析 分层采样 500 张 预量化精度测试 精度损失 > 2%? 补充 100-200 张 t-SNE 多样性检查 最终校准集 1000-2000 张 是 否

嗯,这里要注意:补充样本时,不要只加「难样本」。我见过有人专门挑模型预测错的图来校准,结果量化参数被极端值带偏,反而让原本预测对的样本也出错了。补充样本要均匀,不要走极端。

一个小技巧:如果你不确定校准集够不够,可以跑一次「校准集自检」——用校准集本身做一次 INT8 推理,看每个类别的 mAP 和 FP32 的差距。如果某个类别的差距明显大于其他类别,说明该类别的样本不够或分布不典型。

最后总结一下:校准数据集优化的核心,就是让 INT8 下的模型「见过」足够多样、足够真实的场景。数量 1000~2000 张足够,多样性比数量重要,增强要克制,补充要均匀。做到这几点,YOLOv11 的量化精度损失基本能控制在 1% 以内。