现象
losses/point2rbox_v2_loss.py 的 Point2RBoxV2ConsistencyLoss 中 loss_ssa 形状 (N,1) 与 keep/mask 形状 (N,) 相乘触发广播 → (N,N) 外积:
- square_cls 的 keep 掩码失效(本应逐对置零的项经外积求和后重新混入);
- loss 数值随配对数 N 二次膨胀(实测 N=3 时 0.985 → 2.627)。
你们的 parity 没抓到是因为 rot 用例只有 1 对(N=1 时外积退化成标量,数值恰好一致)。
修复
keep.unsqueeze(-1)(或 loss_ssa squeeze 到 (N,)),一行。
参照
我在 B 仓库 tests/test_v3_head_loss.py 里有多对(N=3)的 golden 用例可直接搬来做回归;当前我测试里挂了标记 TEMP-PATCH(from-B) 的运行时 workaround(你的文件未动),你修复后我会移除。v3 的 loss_ss 分量在 N=3 下与 torch golden rel 2.8e-6(打补丁后)。
影响
v2/v3 训练中 ss 一致性 loss 的实际权重被放大且 square 类处理错误——你正在跑的 M6 v2 训练建议评估是否需要重启。
现象
losses/point2rbox_v2_loss.py的Point2RBoxV2ConsistencyLoss中loss_ssa形状 (N,1) 与keep/mask 形状 (N,) 相乘触发广播 → (N,N) 外积:你们的 parity 没抓到是因为 rot 用例只有 1 对(N=1 时外积退化成标量,数值恰好一致)。
修复
keep.unsqueeze(-1)(或 loss_ssa squeeze 到 (N,)),一行。参照
我在 B 仓库
tests/test_v3_head_loss.py里有多对(N=3)的 golden 用例可直接搬来做回归;当前我测试里挂了标记 TEMP-PATCH(from-B) 的运行时 workaround(你的文件未动),你修复后我会移除。v3 的 loss_ss 分量在 N=3 下与 torch golden rel 2.8e-6(打补丁后)。影响
v2/v3 训练中 ss 一致性 loss 的实际权重被放大且 square 类处理错误——你正在跑的 M6 v2 训练建议评估是否需要重启。