华为昇腾Atlas200DK. CANN模型推理——目标检测结果不对(无检测结果)的问题解决

前言

上周我在华为昇腾Atlas200DK中部署nanodet和yolov5时,出现了目标检测结果不对(没有检测到任何物体),困扰了整整三天,最后找到原因并圆满解决,在这里记录一下debug过程。

以上测试均在python中完成。

问题描述

第一天上午,我首先将nanodet由pytorch的.pth模型转换为.onnx模型,并通过cv2.dnn模块实现仅依赖于opencv的nanodet推理部署main_nanodet.py,该部署文件能够得到正确的检测结果。

随后,我通过atlas_utils(上一篇博客中提到的CANN官方封装接口)将main_nanodet.py改造成在CANN上推理部署的acl_nanodet.py,并且仔细梳理了该acl实现的流程和细节,如下图所示:

### 昇腾 AI 郰署方法及教程 昇腾(Ascend)是由华为推出的一系列AI处理器,专为人工智能计算设计。昇腾910和昇腾310是其中较为知名的两款芯片,广泛应用于训练和推理场景。以下是关于昇腾AI部署的相关方法和技术要点: #### 1. 升腾硬件环境准备 在开始部署之前,需要确保具备合适的硬件设备。昇腾AI主要依赖于Atlas系列产品,包括加速卡、服务器以及边缘计算设备。具体来说: - Atlas 200 DK 是一款开发套件,适合用于本地调试和测试。 - Atlas 300I 和 Atlas 300T 则分别针对推理和训练任务优化[^1]。 #### 2. 软件栈配置 昇腾AI生态提供了完整的软件栈支持,主要包括CANN(Compute Architecture for Neural Networks)、MindSpore框架以及其他配套工具链。 - **CANN**:这是昇腾的核心软件平台,包含了驱动程序、编译器以及性能库等功能模块,能够帮助开发者高效利用昇腾硬件资源。 - **MindSpore**:作为华为自主研发的深度学习框架,它原生支持昇腾处理器,在模型定义、训练过程等方面进行了针对性优化[^1]。 #### 3. 模型迁移与适配 对于已有模型迁移到昇腾平台上运行的情况,通常涉及以下几个方面的工作: - 使用ModelArts服务完成云端到端侧模型转换; - 借助MOXING API简化跨平台操作逻辑; - 对特定层或者算子进行手动调整以兼容昇腾架构特性[^2]。 #### 4. 实际案例分析 假设我们要在一个视频监控项目中引入人脸识别功能,并且希望借助昇腾来提升处理效率,则可以按照如下思路展开工作: - 构建基于ResNet的人脸检测网络结构; - 将预训练权重文件导入至MindSpore环境中重新加载; - 编写相应的前向传播脚本并通过ascend_graph模式执行加速运算[^3]。 ```python import mindspore as ms from mindspore import context, Tensor context.set_context(mode=context.GRAPH_MODE, device_target="Ascend") def infer(input_data): model = ResNet50() # 定义好你的神经网络类 checkpoint_path = "./resnet50_pretrained.ckpt" param_dict = ms.load_checkpoint(checkpoint_path) ms.load_param_into_net(model, param_dict) output = model(Tensor(input_data)) return output.asnumpy() ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值