| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
修复iou3d算子精度问题 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !1197 merge iou3d into master 修复iou3d算子精度问题 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 ### 背景与根因 Iou3D 的 A5 实现与 MMCV CUDA 参考实现之间存在浮点运算路径差异,主要包括顶点生成顺序、交点收集与去重、极角排序分支以及面积累加顺序。完成几何路径对齐后,100 条用例的 TTK 原生 L1 三方校验仍有 iou3d_L2_008 失败。 隔离 AscendC::Sin 和 AscendC::Cos 后确认:该用例的剩余偏差来自默认 Cos 在 |theta| 约为 2.8~3.0 的角度归约精度,不是 Sin。以 CPU FP64 golden 为基准时,修复前该用例的小值域 ErrorCount 为 NPU/GPU=13/6,Ratio=2.1666666667,超过 L1 门槛 2.0。 ### 修改内容 1. 对齐 MMCV 几何计算路径: - BoxCorners 按 MMCV 的左下、右下、右上、左上顺序生成轴对齐顶点后逐点旋转; - CollectCorners 移除相对阈值去重,候选点上限由 8 调整为 16,并按 MMCV 顺序收集边交点和包含点; - SortPolygonArea 补齐 diamond-angle 第三象限分支 keyRaw = -2.0f - t,使排序与 atan2 的 [-pi, pi] 分支一致; - 所有 m >= 3 的多边形统一使用排序后首顶点扇形叉积累加,末尾一次 abs / 2,对齐 MMCV 的 fp32 运算顺序; - 对有限输入增加 Z 轴无交集短路,避免 BEV 中间结果溢出后产生 NaN * 0。 2. 仅修复 Cos,保留原生 Sin: - 使用官方 AscendC::Cos<float, false, CosConfig{CosAlgo::RADIAN_REDUCTION}> 生成高精度候选值; - host 侧使用同一 CosConfig 调用 GetCosMaxMinTmpSize,通过新增的 cosTmpSize tiling 字段向 kernel 传递显式 shared temporary buffer 大小; - 默认 Sin/Cos 仍先按原路径执行,仅在 2.8 <= |theta| <= 3.0 且高精度值与默认值差异 > 5.9e-8 时覆盖默认 Cos; - 不按 testcase、shape、batch 或元素下标特判,Sin 调用和结果缓冲保持不变; - 删除实验阶段的自拟合 FittedCos、Cody-Waite 归约和 Chebyshev 多项式,最终只使用现成官方 API。 涉及文件: - objdetect/iou3d/op_kernel/arch35/iou3d.h - objdetect/iou3d/op_kernel/arch35/iou3d_tiling_data.h - objdetect/iou3d/op_host/arch35/iou3d_tiling_arch35.cpp ### 影响范围 - 仅修改 arch35 的 Iou3D kernel/tiling 实现,不改变算子接口、输入输出 dtype、shape 或格式约束; - 100 条回归中仅 iou3d_L2_008 输出发生变化,其余 99 条逐元素完全一致; - iou3d_L2_008 改变 765/31250 个元素(2.448%),最大绝对变化 5.364418029785156e-7; - 完整 100 条共改变 765/49791 个元素(1.5364%),无精度状态回退; - 算子仍按 Vector-bound 场景评估。 ## 关联的 Issue 关联并修复:[#666 Iou3D 算子精度问题](https://gitcode.com/cann/ops-cv/issues/666) ## 测试 ### 测试方法 - TTK kernel 直调; - 从 kernel_iou3d.csv 选取 100 条覆盖不同 dtype、shape 和值域的用例; - CPU golden 使用 FP64 升精度,TTK 参数为 --golden-mode Promote; - GPU golden 对齐 MMCV/PyTorch 实现; - 精度级别:L1; - 三方结果使用 TTK 原生 CrossCheckComparison 判定。 ### 精度结果 | 项目 | 修复前 | 修复后 | |---|---:|---:| | TTK kernel 直调基础精度 | - | 100/100 PASS | | CPU FP64 / NPU / GPU 原生 L1 | 99/100 PASS | 100/100 PASS | | iou3d_L2_008 状态 | FAIL | PASS | | iou3d_L2_008 MARE Ratio | 1.0662077995 | 1.0662077995 | | iou3d_L2_008 MERE Ratio | 1.0590700508 | 1.0399741779 | | iou3d_L2_008 RMSE Ratio | 0.2802136132 | 0.2696275100 | | iou3d_L2_008 小值域 ErrorCount(NPU/GPU) | 13/6 | 12/6 | | iou3d_L2_008 小值域 ErrorCount Ratio | 2.1666666667 | 2.0(L1 PASS,位于门槛边界) | ### 性能结果 同一固定输入下的 kernel 计时: | 指标 | 结果 | |---|---:| | baseline A5 | 806.195 us | | 自拟合 Cos 实验版 A5 | 872.424 us | | 最终官方 API 版 A5 | 836.202 us | | 最终版相对 baseline | +3.7221% | | 最终版相对自拟合版 | -4.1519% | | GPU NVTX CUDA-kernel p50 | 315.745 us | | 最终 A5 / GPU | 2.6483x | ### 自动流水线 截至 2026-07-31、PR head 96ae285cdeb532d2636dd054aa37c2688407c6ff:编译矩阵、API_Check、PreSmoke_A900、PreSmoke_ATK_Test_A2 已通过;UT_Test 与 SCA 仍显示失败,具体状态和后续重跑结果以 PR 页面实时流水线为准,本描述不将其误标为通过。 ## 文档更新 无对外 API 或 README 文档变更;仅同步更新 kernel/tiling 实现注释。 ## 类型标签 - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-cv!1197 | 15 天前 | |
iou3d算子支持ascend950 ascendc实现 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !1119 merge iou3d into master iou3d算子支持ascend950 ascendc实现 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> iou3d算子支持ascend950 ascendc实现 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-cv/issues/617 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-cv!1119 | 23 天前 |