fix(actpred): 修复 HEF 帧归一化误判与部署图数值不等价,补齐 P3 审计项
- hailo_infer: 帧归一化判定改为量化网格 dequant(0)(旧启发式把归一化 帧当原始像素喂入,图像路径饱和破坏;实机 max_diff 2.55→0.37, img 敏感性 1.44→22.26) - export_deploy: pool kernel 由卷积真实输出尺寸探测(H//16 在 1080 高度下静默丢弃末行);mobilenet backbone 给出明确报错 - mt_parser: @Action 为文件末位块时解析成功,不再静默丢数据 - config: checkpoint train 段未知键/非 dict 校验;init-from 兼容性 警告助手(normalize/action_dim),train 与 pretrain 共用 - dataset: stats 文件形状校验;predict: 移除误导性 --action-dim - dfc_compile: --frame-count 参数化(原硬编码 3 帧) - gen_calibration: 旧模式校准图像改分块 memmap 生成(1080p 原一次性 分配 ~600MB) - _npu_test: torch 参考反归一化对齐后再与 HEF 比较 - 单测 81→90 全过;README 与测速报告更新为验证轮次数据
This commit is contained in:
1 parent
316758d80e
commit
823e91a30e
14 files changed
+381
-62
No files matched your search
@@ -174,10 +174,13 @@ class HailoPredictor:
|
||||
self.frame_len = len(self._frame_infos)
|
||||
self._image_layout = "nhwc_frames"
|
||||
self._frame_quant = self._frame_infos[0].quant_info
|
||||
# 帧量化零偏为负 ⇒ 校准数据是 ImageNet 归一化后的浮点,
|
||||
# 推理端需先归一化再量化;零偏为 0 则为原始像素直通
|
||||
# 帧输入是否需 ImageNet 归一化,由量化网格判定:DFC 的 zp 恒非负
|
||||
# (zp = round(-min/scale)),码 0 反量化值 dequant(0) = -zp*scale。
|
||||
# 原始像素输入(min=0, zp=0)下为 0;归一化输入(min≈-2.1)下
|
||||
# ≈ -2.1(实测 HEF zp=114, scale=0.0187)。旧启发式 zp*scale<0
|
||||
# 把归一化输入误判为原始像素直通,图像路径被饱和破坏。
|
||||
self._normalize_frames = \
|
||||
self._frame_quant.qp_zp * self._frame_quant.qp_scale < 0
|
||||
(0 - self._frame_quant.qp_zp) * self._frame_quant.qp_scale < -0.5
|
||||
|
||||
h_shape = tuple(self._history_info.shape)
|
||||
self.history_len, self.action_dim = h_shape[1], h_shape[2]
|
||||
|
||||
Reference in new issue
Block a user