3. 校准数据集优化:校准数据集的选取策略、数据增强对校准的影响、样本数量与多样性的平衡
量化校准,说白了就是让模型在低精度下「重新认识」真实数据的分布。很多人以为随便拿几百张图跑一遍就能搞定,结果模型一部署,精度直接掉两三个点。我早期做安防检测时就踩过这个坑——用 COCO 的通用校准集去量化一个专门检测小目标的模型,结果召回率从 89% 掉到 72%。后来才发现,问题出在校准数据集上。
这一节,我们专门聊聊校准数据集该怎么选、怎么增强、数量多少才合适。
3.1 校准数据集的选取策略
校准集的核心任务,是让模型在 INT8 下看到的数据分布,尽可能接近实际部署时的数据分布。你想想看,如果校准集里全是白天场景,模型到了晚上就崩,这很正常。
我一般按以下三个维度来选数据:
| 维度 | 策略 | 说明 |
|---|---|---|
| 场景覆盖 | 按部署环境分层采样 | 白天/夜晚、室内/室外、晴天/雨天等,每种场景至少 50 张 |
| 目标分布 | 按目标尺寸/类别比例采样 | 小目标多的场景要多放,避免大目标主导激活值范围 |
| 难度梯度 | 包含简单、中等、困难样本 | 全是简单样本会导致量化后对困难样本的泛化能力变差 |
还有一个容易被忽略的点:校准集里不要有标注错误或模糊不清的样本。我曾经因为一批标注框偏移的图片,导致量化后模型对目标位置的预测偏差大了 15%。校准集的质量,直接决定了量化后的上限。
3.2 数据增强对校准的影响
很多人觉得校准就是「喂数据」,不需要做增强。其实不然。适当的数据增强,可以让模型在 INT8 下看到更多样的激活值分布,从而找到更优的量化参数。
但增强不是越多越好。我总结了几种常见增强对校准的影响:
| 增强方式 | 对校准的影响 | 建议 |
|---|---|---|
| 随机翻转 | 轻微改变激活值分布,有助于泛化 | 建议使用,概率 0.5 |
| 随机裁剪 | 改变目标位置和尺度,丰富激活值范围 | 建议使用,但裁剪比例不要小于 0.8 |
| 颜色抖动 | 大幅改变 RGB 分布,可能导致校准偏移 | 谨慎使用,强度控制在 0.1 以内 |
| 高斯噪声 | 模拟传感器噪声,但可能掩盖真实分布 | 不建议用于校准,除非部署环境噪声已知 |
| MixUp / CutMix | 生成混合样本,激活值分布变化剧烈 | 不建议用于校准,容易导致量化参数不稳定 |
为什么会这样?因为校准的本质是统计激活值的 min/max 或直方图分布。如果增强引入了训练时没见过的极端值(比如过亮的颜色),量化参数就会被这些极端值拉偏,导致正常样本的量化精度下降。
3.3 样本数量与多样性的平衡
这是最让人纠结的问题:到底用多少张图做校准?
我直接给结论:对于 YOLOv11,500~2000 张校准图通常就够了。少于 200 张,统计不稳定;多于 5000 张,边际收益递减,反而增加校准时间。
但数量不是唯一指标。多样性更重要。举个例子:
- 场景 A:1000 张图,全是高速公路上的大卡车
- 场景 B:500 张图,包含城市道路、乡村小路、隧道、雨天、夜晚
我实测过,场景 B 的量化精度比场景 A 高 1.2~1.8 个点。多样性带来的收益,远大于单纯堆数量。
那怎么平衡?我一般用这个流程:
- 初始采样:从部署场景中随机抽取 500 张,保证场景和类别覆盖
- 预量化测试:跑一次校准,看每个类别的精度损失
- 针对性补充:对精度损失 > 2% 的类别,补充 100~200 张该类别的样本
- 多样性检查:用 t-SNE 或 PCA 可视化校准集的特征分布,确保没有明显聚类空洞
- 最终确认:总样本量控制在 1000~2000 张,分布均匀
下面这张图,是我常用的校准数据集优化流程:
嗯,这里要注意:补充样本时,不要只加「难样本」。我见过有人专门挑模型预测错的图来校准,结果量化参数被极端值带偏,反而让原本预测对的样本也出错了。补充样本要均匀,不要走极端。
最后总结一下:校准数据集优化的核心,就是让 INT8 下的模型「见过」足够多样、足够真实的场景。数量 1000~2000 张足够,多样性比数量重要,增强要克制,补充要均匀。做到这几点,YOLOv11 的量化精度损失基本能控制在 1% 以内。