fix(pybot×actpred): 审计修复 7 项——Hailo 部署链语义对齐 + NaN 安全

P1-1: export_deploy.py forward() 从硬编码 3 帧改为 *inputs 动态解析
P1-2: hailo_infer.py 补 predict_delta 支持(残差模式 + --ckpt 自动检测)
P1-3: pybot _load_predictor 自动查找 pred_token.npy/action_stats.npy/
      companion checkpoint,恢复 Hailo 推理训练语义
P1-4: pretrain_mt.py random_images 每 batch 重新生成噪声,防 BN 退化
P2-1: predict.py/hailo_infer.py/robot.py 三层 NaN/Inf 防线
P2-3: recorder.py imu_dim 默认 8→0,避免外部直接使用时形状错误
P2-5: _npu_test.py imu_dim 移到函数定义前,消除执行顺序依赖
This commit is contained in:
qing committed 2026-08-14 16:23:05 +08:00
1 parent 7ec8c9d0e9
commit aa271e395a
9 files changed
+109 -13

No files matched your search

+6 -4
View File
@@ -132,11 +132,13 @@ class DeployWrapper(nn.Module):
x = self.proj_convs[i](x) # 1x1 conv ≡ 池化后的 img_proj
return self.pool(x) # (1, d, 1, 1) NCHW
def forward(self, frame0: torch.Tensor, frame1: torch.Tensor, frame2: torch.Tensor,
action_history: torch.Tensor, pred_token: torch.Tensor,
imu: torch.Tensor = None) -> torch.Tensor:
def forward(self, *inputs: torch.Tensor) -> torch.Tensor:
# inputs = frame0..frame{F-1}, action_history, pred_token, [imu]
# 全程 (1, 1, S, d) 布局:seq 占 W 维,避免任何 transpose
frames = [frame0, frame1, frame2]
frames = list(inputs[:self._frame_len])
action_history = inputs[self._frame_len]
pred_token = inputs[self._frame_len + 1]
imu = inputs[self._frame_len + 2] if self._imu_dim > 0 else None
feats = [self._frame_feat(frames[i], i).permute(0, 2, 3, 1)
for i in range(self._frame_len)] # (1, 1, 1, d) NHWC
img_tokens = torch.cat(feats, dim=2) + self.proj_bias # (1, 1, F, d)