转换单目标跟踪模型(两个分支,cls和reg),reg分支部分中间层的余弦相似度出现了异常低值,量化后的模型已经经过长时间验证,发现在部分场景下,reg分支的输出结果相较于onnx模型波动较大,由于跟踪问题较为特殊,模型误差会随着时间累积,因此需要量化后的模型结果尽可能接近原始模型。请问如何改善余弦相似度过低的问题。附件中是原始的onnx模型和转换日志。
1. 建议先更换校准方法,从default开始进行尝试;不行的话,将 calibration_type
配置为 max
,并配置 max_percentile
为不同的分位数(取值范围是0-1之间),推荐您优先尝试 0.99999
、0.99995
、0.9999
、0.9995
、0.999
,通过这五个配置观察模型精度的变化趋势,最终找到一个最佳的分位数;尝试启用 per_channel
,可与之前任意校准方式配合使用。
2. 可以尝试适当增加或减少数据数量(通常来说检测场景相较于分类场景需要的校准数据要少;此外可以观察模型输出的漏检情况,适当增加对应场景的校准数据);
3. 指定算子(满足一定要求)运行在 CPU 上请通过yaml文件中的 run_on_cpu
参数,通过指定节点名称将对应算子运行在cpu上(参考示例:run_on_cpu: conv_0),可以尝试将相似度较低的算子指定跑在CPU上;
4. 预计下个月会新发版,建议届时尝试新版工具链再次尝试一下;
5. 预计在新发版工具链中会提供debug调试工具,欢迎尝试使用!