| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
bounding_box_decode Co-authored-by: wow5522<wuao1@huawei.com> # message auto-generated for no-merge-commit merge: !1307 merge master into master bounding_box_decode Created-by: wow5523 Commit-by: wow5522 Merged-by: cann-robot Description: ## 描述 本 PR 新增了 bounding_box_decode 算子(目标检测边界框解码)的完整实现,覆盖 ascend950 架构。改动包括算子定义与注册、shape/dtype 推理、host 侧 tiling 切分逻辑、kernel 端解码计算,以及配套的 golden 脚本和单元测试。核心解码流程为:根据 rois(anchor box)计算宽高与中心,结合 deltas 反标准化得到 dx/dy/dw/dh,再通过 gw/gh/gx/gy 计算并裁剪出 bboxes,支持 fp32 与 fp16 两种数据类型以及空张量场景。 主要改动 1)算子定义与注册: 在 bounding_box_decode_def.cpp 中新增 BoundingBoxDecode 算子定义,声明 rois、deltas 两个输入和 bboxes 输出(支持 DT_FLOAT16/DT_FLOAT、FORMAT_ND),并定义 means、stds、max_shape、wh_ratio_clip 属性及 ascend950 的 AICore 配置。 Shape 与 Dtype 推理: 新增 InferShapeForBoundingBoxDecode 和 InferDataTypeForBoundingBoxDecode,输出形状与输入保持一致([N, 4]),校验 rank 为 2、最后一维为 4、两输入形状/类型一致,并支持未知 rank 与空张量(N=0)场景。 2)Host 侧 Tiling 逻辑: 新增 TilingFunc 及 BoundingBoxDecodePreCheck/ComputeMultiCoreSplit/ComputeUbSplit 等逻辑,完成多核按 box 数切分、UB 按 256B 对齐切分、异常校验、属性透传,以及基于 dtype 的 TilingKey 设置与空张量分支处理。 3)Kernel 端解码实现: 新增 BoundingBoxDecodeKernel 及多个 __simd_vf__ 向量函数(AnchorPreVF、DeltaDeStdVF、DecodeGwGxVF、BoxClipVF),实现 anchor 预处理、delta 反标准化、exp 解码与裁剪,fp32 路径使用自定义 Cody-Waite+Taylor 高精度 exp,fp16 路径使用 NPU 硬件 Reg::Exp。 4)测试与参考实现: 新增 golden.py 提供 torch 参考实现与容差配置,并新增 tiling 单元测试(覆盖 fp32/fp16、空张量、多核、非法 shape/dtype 等场景)、infershape 单元测试,以及一个 ge 运行示例。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-cv/issues/754 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-cv!1307 | 1 天前 | |
bounding_box_decode Co-authored-by: wow5522<wuao1@huawei.com> # message auto-generated for no-merge-commit merge: !1307 merge master into master bounding_box_decode Created-by: wow5523 Commit-by: wow5522 Merged-by: cann-robot Description: ## 描述 本 PR 新增了 bounding_box_decode 算子(目标检测边界框解码)的完整实现,覆盖 ascend950 架构。改动包括算子定义与注册、shape/dtype 推理、host 侧 tiling 切分逻辑、kernel 端解码计算,以及配套的 golden 脚本和单元测试。核心解码流程为:根据 rois(anchor box)计算宽高与中心,结合 deltas 反标准化得到 dx/dy/dw/dh,再通过 gw/gh/gx/gy 计算并裁剪出 bboxes,支持 fp32 与 fp16 两种数据类型以及空张量场景。 主要改动 1)算子定义与注册: 在 bounding_box_decode_def.cpp 中新增 BoundingBoxDecode 算子定义,声明 rois、deltas 两个输入和 bboxes 输出(支持 DT_FLOAT16/DT_FLOAT、FORMAT_ND),并定义 means、stds、max_shape、wh_ratio_clip 属性及 ascend950 的 AICore 配置。 Shape 与 Dtype 推理: 新增 InferShapeForBoundingBoxDecode 和 InferDataTypeForBoundingBoxDecode,输出形状与输入保持一致([N, 4]),校验 rank 为 2、最后一维为 4、两输入形状/类型一致,并支持未知 rank 与空张量(N=0)场景。 2)Host 侧 Tiling 逻辑: 新增 TilingFunc 及 BoundingBoxDecodePreCheck/ComputeMultiCoreSplit/ComputeUbSplit 等逻辑,完成多核按 box 数切分、UB 按 256B 对齐切分、异常校验、属性透传,以及基于 dtype 的 TilingKey 设置与空张量分支处理。 3)Kernel 端解码实现: 新增 BoundingBoxDecodeKernel 及多个 __simd_vf__ 向量函数(AnchorPreVF、DeltaDeStdVF、DecodeGwGxVF、BoxClipVF),实现 anchor 预处理、delta 反标准化、exp 解码与裁剪,fp32 路径使用自定义 Cody-Waite+Taylor 高精度 exp,fp16 路径使用 NPU 硬件 Reg::Exp。 4)测试与参考实现: 新增 golden.py 提供 torch 参考实现与容差配置,并新增 tiling 单元测试(覆盖 fp32/fp16、空张量、多核、非法 shape/dtype 等场景)、infershape 单元测试,以及一个 ge 运行示例。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-cv/issues/754 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-cv!1307 | 1 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 天前 | ||
| 1 天前 |