| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Fix] 校验 BoundingBoxEncode 空输入属性 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !1573 merge fix/2026-09-12-ops-cv-bounding-box-encode-empty-skips-attrs-01 into master [Fix] 校验 BoundingBoxEncode 空输入属性 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: ## 修复摘要 将 ParseMeansStds 放到 dim0 == 0 快速返回之前,使空 Tensor 也遵循 means/stds 长度、非空数据和非零 stds 约束。合法空输入仍设置 blockDim=1 成功,非法属性返回 GRAPH_FAILED。 ## 变更范围 - 目标仓库:cann/ops-cv - 目标分支:master - 修复分支:fix/2026-09-12-ops-cv-bounding-box-encode-empty-skips-attrs-01 - 修改文件:objdetect/bounding_box_encode/op_host/arch35/bounding_box_encode_tiling_arch35.cpp - 不改变 dtype、shape、非空输入或合法空输入的计算语义。 ## 测试结果 - 普通 Host 模型和 UBSan 模型编译/运行退出码均为:0,输出 MODEL_ASSERTIONS=PASS。 - 覆盖合法空输入、非法 means/stds 属性、非空失败、shape/dtype 失败对照。 - 固定基线 git apply --check 和修复工作树 git diff --check 通过。 - 未运行目标 Ascend950/CANN 9.2 的真实 Host/gtest 或 NPU;本机 Toolkit 为 9.1.0。 ## 关联的 Issue - https://gitcode.com/cann/ops-cv/issues/935 See merge request: cann/ops-cv!1573 | 1 个月前 | |
适配350:新增image/objdetect等13个算子ascend350平台支持 Co-authored-by: zhouliang<zhouliang88@huawei.com> # message auto-generated for no-merge-commit merge: !1747 merge master into master 适配350:新增image/objdetect等13个算子ascend350平台支持 Created-by: zhou-liang1027 Commit-by: zhouliang Merged-by: cann-robot Description: ## 描述 适配350:新增image/objdetect等13个算子ascend350平台支持 ## 关联的Issue https://gitcode.com/cann/ops-cv/issues/1163 ## 测试 st测试pass obp冒烟 ,david冒烟pass ## 文档更新 不涉及文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-cv!1747 | 16 天前 | |
fix(bounding_box_encode): add validations in geir path and inferdatatype Co-authored-by: ugzhangyiyi<zhangyiyi4@huawei.com> # message auto-generated for no-merge-commit merge: !1182 merge fix into master fix(bounding_box_encode): add validations in geir path and inferdatatype Created-by: ugzhangyiyi Commit-by: ugzhangyiyi Merged-by: cann-robot Description: 本 PR 针对 bounding_box_encode 算子的 geir(图模式)通路补齐了 5 条缺失的参数校验代码,并通过真实 NPU 负向测试矩阵验证了拦截有效性。 ### 问题背景 经静态分析和 NPU 实测发现,geir 通路的 InferShape/InferDataType 为空壳透传实现,README 中声明的 8 条约束仅有 2 条(dtype 集合、stds≠0)能被拦截,其余 5 条约束(dtype 一致性、shape[1]==4、shape 完全一致、rank==2、means/stds 长度==4)在代码中无任何校验逻辑,导致非法输入静默通过或越界读。 ### 修复方案 在 tiling 层(真实执行路径)补齐全部缺失校验: 1. **ParseMeansStds**:在读取 means[0..3] 和 stds[0..3] 前先调用 GetSize() 验证长度为 4,消除越界读风险 2. **CheckInputsConsistency**(新增函数):在 tiling 入口校验 anchor 与 groundtruth 的 dtype 一致性、rank==2、shape[1]==4、shape 完全相等 3. **InferShape4BoundingBoxEncode**:同步补齐 README 约束校验(注:geir 路径被内置 V1 proto 屏蔽,实际由 tiling 生效,但保留以对齐规范) ### 验证方法 构造 14 例负向/对照测试矩阵(覆盖全部 README 约束 + 边界情况),在真实 NPU 上以完整 AddGraph+RunGraph 流程执行 Before/After 对比: - **Before(基线)**:8 处 silent leak(shape[1]≠4、shape 不匹配、rank≠2、means/stds 长度异常静默通过或越界) - **After(修复后)**:未拦截项从 8 降至 1,仅 dtype 不一致因 FE 自动插入 Cast 节点统一类型的结构性限制无法在算子层拦截(已在报告中实证归因) ## 关联的Issue https://gitcode.com/cann/ops-cv/issues/650 ## 测试 ### 1. 负向拦截测试(NPU 真机) - **测试工程**:tests/geir_intercept/test_geir_intercept.cpp + run_intercept.sh - **测试矩阵**:14 例(控制 1 例 + 负向 13 例) - C0: 对照(全合法输入)→ 预期通过 ✅ - C1: anchor=fp16, gt=fp32(dtype 不一致)→ 结构性不可拦 ⚠️ - C2: dtype=int32(非法 dtype)→ 拦截 ✅ - C3/C4: shape=(N,3)/(N,8)(K≠4)→ 拦截 ✅ - C5: anchor=(10,4), gt=(8,4)(shape 不匹配)→ 拦截 ✅ - C6/C7: rank=1/rank=3(非 rank-2)→ 拦截 ✅ - C8/C9: means 长度=3/5(长度异常)→ 拦截 ✅ - C10/C11: stds 长度=3/5(长度异常)→ 拦截 ✅ - C12: stds=[0,1,1,1](含 0)→ 拦截 ✅ - C13/C14: 动态 shape/rank 正常情况 → 通过 ✅ - **结果**:13/14 达预期(C1 因 FE 框架层自动类型转换无法拦截,已归因) ### 2. 回归测试 - **白盒测试**:原有白盒用例全部通过(包括之前 shape[1]≠4 被误判为"正常"的用例,现在被正确拦截) - **ST 测试**:L0+L1+L2 用例覆盖度保持,正常用例精度不受影响 ### 3. 环境清理验证 - 确认修改后需清除 /root/atc_data/kernel_cache/* 以避免旧 tiling 行为残留 - 重编译+重装 vendors 包后负向用例拦截 100% 生效(除 C1) ## 文档更新 - **新增**:tests/geir_intercept/INTERCEPT_REPORT.md(Before/After 对照 + 根因分析 + 修改清单) - **新增**:tests/geir_intercept/test_geir_intercept.cpp(负向测试工程源码) - **新增**:tests/geir_intercept/run_intercept.sh(NPU 编译执行脚本) ## 类型标签 - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [x] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-cv!1182 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 16 天前 | ||
| 2 个月前 |