华为海思系列----昇腾张量编译器(ATC)模型转换工具----入门级使用指南(LINUX版)
由于官方SDK比较冗余且经常跨文档讲解且SDK整理的乱七八糟,对于新手来说全部看完上手成本较高,本文旨在以简短的方式介绍 CAFFE / ONNX 模型转 om 模型,并进行推理的全流程。希望能够帮助到第一次接触华为海思框架的道友们。大佬们就没必要看这种基础文章啦!
注:本文所有操作均在 WSL (Windows 虚拟子系统)上操作的,默认 root 环境,默认开发板系统为LINUX,所有环境变量均写入 bashrc ,非虚拟机用户谨慎写入。所有用到的工具以及示例代码,均在文末。
目录
1. 简介
1.1 安装CANN ToolKit(以python3.9为例)
1.1.1 编译python3.9
1.1.2 安装 cann
1.2 交叉编译工具链安装
1.3 安装openssh(有的话可跳过,没有也可以通过 NFS 共享目录解决文件传输问题)
2. 使用方法
2.1 caffe 转 om(以resnet50为例)
2.2 om 模型信息查看
2.3 om 模型推理流程(类似RKNNToolKitLite)
2.4 开发板执行
2.5 源码及工具链传送门
1. 简介
ATC 是海思芯片的模型转换工具,用于将开源框架网络模型(caffe,onnx,tensorflow)转化为 .om 格式并使用 AscendCL进行推理(因为笔者比较熟悉瑞芯微系列,分别类似于类似瑞芯微系列的RKNNToolkit工具, .rknn 模型,RKNNToolkitLite板端推理工具)。
1.1 安装CANN ToolKit(以python3.9为例)
模型转换需要在 linux x86 设备上进行,因为我的服务器是ubuntu22.04,而官方给的交叉编译工具又必须在ubuntu18.04上才能用,所以我选择使用 WSL,安装ubuntu18.04参考:Windows11 安装 WSL
1.1.1 编译python3.9
坑:各 python 必须严格按照下述版本,否则执行模型转换时会报错 :Python3.7.x(3.7.5~3.7.11)、Python3.8.x(3.8.0~3.8.11)、Python3.9.x(3.9.0~3.9.2)推荐使用Python3.9.2
# 安装python3.9
sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev \libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \libncurses5-dev libncursesw5-dev xz-utils tk-dev \libffi-dev libxslt1-dev liblzma-dev python3-openssl cmake Pillow git wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz
tar -zxvf Python-3.9.2.tgz
cd Python-3.9.2
./configure --prefix=/usr/local/python3.9.2 --with-ssl-default-suites=openssl --enable-shared CFLAGS=-fPIC
make -j8
make install
vi ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/python3.9.2/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/python3.9.2/bin:$PATH
source ~/.bashrc# 安装 cann 所需 python 环境
# 注意,WSL默认sudo权限,此处如果用sudo,后续执行 ./Ascend-cann-toolkit_8.1.RC1_linux-x86_64.run --install 也要加sudo
pip3 install attrs cython numpy==1.24.0 decorator sympy cffi pyyaml pathlib2 psutil protobuf==3.20 scipy requests absl-py -i https://pypi.tuna.tsinghua.edu.cn/simple
1.1.2 安装 cann
在昇腾官网下载 cann 安装包, 并传到WSL中:社区版资源下载-资源下载中心-昇腾社区
chmod +x Ascend-cann-toolkit_5.20.t6.2.b060_linux-x86_64.run# 校验安装包是否完整, 校验成功会显示 Verifying archive integrity... 100%
./Ascend-cann-toolkit_5.20.t6.2.b060_linux-x86_64.run --check# 安装,安装过程中有协议确认,按 Y 即可,安装成功会显示 <..
相关文章:
华为海思系列----昇腾张量编译器(ATC)模型转换工具----入门级使用指南(LINUX版)
由于官方SDK比较冗余且经常跨文档讲解且SDK整理的乱七八糟,对于新手来说全部看完上手成本较高,本文旨在以简短的方式介绍 CAFFE / ONNX 模型转 om 模型,并进行推理的全流程。希望能够帮助到第一次接触华为海思框架的道友们。大佬们就没必要看这种基础文章啦! 注:本…...
supabase 怎么新建项目?
在 Supabase 中新建项目主要通过官方网站的仪表盘 (Dashboard) 来完成。以下是详细步骤: 通过 Supabase 仪表盘新建项目: 注册/登录 Supabase 账户: 访问 Supabase 官网:https://supabase.com/如果你还没有账户,点击 …...

Windows环境下maven的安装与配置
1.检查JAVA_HOME环境变量 Maven是使用java开发的,所以必须知道当前系统环境中的JDK的安装目录。 搜索栏直接输入“cmd” 或者 WinR 输入cmd 在打开的终端窗口输入“echo %JAVA_HOME”,就可以看到jdk的位置了。 如果没有的话,请参考我的文章&a…...

LeetCode:513、找树左下角的值
//递归法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* t…...

Vxe UI vue vxe-table 实现表格数据分组功能,不是使用树结构,直接数据分组
Vxe UI vue vxe-table 实现表格数据分组功能,不是使用树结构,直接数据分组 查看官网:https://vxetable.cn gitbub:https://github.com/x-extends/vxe-table gitee:https://gitee.com/x-extends/vxe-table 代码 通过…...

如何禁止chrome自动更新
百度了一下 下面这个方法实测有效 目录 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable 3、验证是否禁止更新成功: 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable GoogleUpdater InternalService…...

阳光学院【2020下】计算机网络原理-A卷-试卷-期末考试试卷
一、单选题(共25分,每空1分) 1.ICMP协议工作在TCP/IP参考模型的 ( ) A.主机-网络 B.网络互联层 C.传输层 D.应用层 2.下列关于交换技术的说法中,错误的是 ( ) A.电路交换适用于突发式通信 B.报文交换不能满足实时通信 C.报文…...
Spring Boot 使用 OSHI 实现系统运行状态监控接口
在实际开发中,我们经常需要获取服务器的运行状态,例如:CPU 使用率、内存使用情况、磁盘状态、JVM 运行信息等,以便于运维监控和性能分析。本文将基于 Spring Boot OSHI 实现一个系统信息接口,可返回当前服务运行的详细…...
FastAPI+MongoDB+React实现查询博客详情功能
第一部分:FastAPI 和 MongoDB 后端 确保你的 FastAPI 应用已经配置好,并且 MongoDB 数据库已经运行。以下是完整的后端代码: # main.py from fastapi import FastAPI, HTTPException, Depends from motor.motor_asyncio import AsyncIOMotorClient from pydantic import B…...

kotlin-协程(什么是一个协程)
1.什么指一个协程对于线程来说一个thread就是就是指一个线程,thread为什么成为线程呢?因为他实现了对线程的一个抽象管理,可以管理这个线程,启动,可以查看各种信息 那么协程呢? public fun CoroutineScop…...

数组和切片的区别
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

WPF内嵌其他进程的窗口
WPF内嵌其他进程窗口的常见方法有 HwndHost SetParent 和 WindowsFormsHost WinForms Panel SetParent 推荐使用自定义HwndHost 两者的对比区别 示例代码 public class MyWndHost : HwndHost {const int WS_CHILD 0x40000000;const int WS_VISIBLE 0x10000000;const i…...
阿里云购买ECS 安装redis mysql nginx jdk 部署jar 部署web
服务:ECS防火墙要开启、阿里云控制平台:网路端口安全策略要设置 阿里云服务维护 1.安装JDK 查询要安装jdk的版本,命令:yum -y list java* 命令:yum install -y java-1.8.0-openjdk.x86_64 yum install -y java-17-openjdk.x8…...

CVPR2025 | Prompt-CAM: 让视觉 Transformer 可解释以进行细粒度分析
Prompt-CAM: Making Vision Transformers Interpretable for Fine-Grained Analysis 摘要-Abstract引言-Introduction方法-Approach预备知识-PreliminariesPrompt-CAM: Prompt Class Attention Map特征识别与定位-Trait Identification and Localization变体与扩展-Variants an…...
Fabric系列 - SoftHSM 软件模拟HSM
在 fabric-ca-server 上使用软件模拟的 HSM(密码卡) 功能 安装 SoftHSMv2 教程 SoftHSMv2 默认的配置文件 /etc/softhsm2.conf默认的token目录 /var/lib/softhsm/tokens/ 初始化和启动fabric-ca-server,需要设置一个管理员用户的名称和密码 初始化令牌 # 初始…...

解锁 DevOps 新境界 :使用 Flux 进行 GitOps 现场演示 – 自动化您的 Kubernetes 部署
前言 GitOps 是实现持续部署的云原生方式。它的名字来源于标准且占主导地位的版本控制系统 Git。GitOps 的 Git 在某种程度上类似于 Kubernetes 的 etcd,但更进一步,因为 etcd 本身不保存版本历史记录。毋庸置疑,任何源代码管理服务…...
LLM大模型中的基础数学工具—— 信号处理与傅里叶分析
Q51: 推导傅里叶变换 的 Parseval 定理 傅里叶变换的 Parseval 定理揭示了啥关系? Parseval 定理揭示了傅里叶变换中时域与频域的能量守恒关系,即信号在时域的总能量等于其在频域的总能量。这就好比一个物体无论从哪个角度称重,重量始终不…...
calico.yaml+国内源
pod网段为:10.244.0.0/16 #kubeadm init 时设置的pod网段,每个环境不同,参考自身环境。 calico.yaml文件里的镜像均为: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/calico/cni:v3.26.1 swr.cn-north-4.myhuaweiclou…...

橡胶制品行业质检管理的痛点 质检LIMS如何重构橡胶制品质检价值链
橡胶制品广泛应用于汽车、医疗、航空等领域,其性能稳定性直接关联终端产品的安全性。从轮胎耐磨性测试到密封件耐腐蚀性验证,每一项检测数据都是企业参与市场竞争的核心筹码。然而,传统实验室管理模式普遍面临设备调度混乱、检测流程追溯断层…...
5.2 参数管理
目标 访问参数,用于调试、诊断和可视化;参数初始化;在不同模型组件间共享参数。 模型:单隐藏层的MLP import torch from torch import nnnet nn.Sequential(nn.Linear(4, 8), nn.ReLU(), nn.Linear(8, 1)) X torch.rand(size…...
gvm安装go报错ERROR: Failed to use installed version
这里写自定义目录标题 使用gvm安装版本报错解决方案可以尝试在版本后面添加--binary,例如还不行记得在多切换几个准确的版本 使用gvm安装版本报错 gvm install go1.22 Installing go1.22.0 as go1.22… Compiling… /Users/uncledd2/.gvm/scripts/install: line 9…...

CAElinux系统详解
CAElinux 系统详解:从系统层面到专业应用 一、CAElinux 的定位与核心目标 CAElinux 是一款专门为 计算机辅助工程(CAE) 设计的定制化 Linux 发行版,目标用户为从事工程仿真、数值模拟、高性能计算(HPC)的…...

计算机系统----软考中级软件设计师(自用学习笔记)
目录 1、计算机的基本硬件系统 2、CPU的功能 3、运算器的组成 4、控制器 5、计算机的基本单位 6、进制转换问题 7、原码、反码、补码、移码 8、浮点数 9、寻址方式 10、奇偶校验码 11、海明码 12、循环冗余校验码 13、RISC和CISC 14、指令的处理方式 15、存储器…...

django的权限角色管理(RBAC)
在 Django 中,User、Group 和 Permission 是权限系统的核心组件。下面通过代码示例演示它们的 CRUD(创建、读取、更新、删除) 操作: 一、User 模型 CRUD from django.contrib.auth.models import User# 创建用户 user User.obje…...
新建一个reactnative 0.72.0的项目
npx react-native0.72.0 init ProjectName --version 0.72.0 下面是初始化,并且添加了对应路由的库依赖,Android项目能run起来的版本号 { "name": "ProjectName", "version": "0.0.1", "private&quo…...

线性表-顺序表(Sequential List)
1 线性表 1.1 顺序表(Sequential List) 顺序表并不难理解,主要是知道顺序表是在内存中连续存储的一段数据,知道这个后,相应的算法也就非常简单了。 线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的…...
框架篇八股(自用)
框架篇 Spring框架中的bean不是线程安全的 Scope() singleton单例 prototype多例 一个类中有可修改的成员变量需要考虑线程安全 bean没有可变状态(service类,DAO类) 某种程度单例bean是线程安全的 AOP面向切面编程…...
软考高级《系统架构设计师》知识点(十七)
知识产权和标准化 知识产权基础知识 知识产权是指公民、法人、非法人单位、对自己的创造性智力成果和其他科技成果依法享有的民事权。是智力成果的创造人依法享有的权利和在生产经营活动中标记所有人依法所享有的权利的总称。 知识产权基础知识包含著作权、专利权、商标权、商业…...
在 Envoy 的配置文件中出现的 “@type“ 字段
在 Envoy 的配置文件中出现的 "type" 字段是 Protocol Buffers(Protobuf)的 JSON/YAML 编码规范的一部分,属于 Typed Struct 的表示方式。它的作用是明确指定当前配置对象的 Protobuf 类型,以便 Envoy 正确解析配置。以…...
思维链实现 方式解析
思维链的实现方式 思维链的实现方式除了提示词先后顺序外,还有以下几种: 增加详细的中间步骤提示:通过提供问题解决过程中的详细中间步骤提示,引导模型逐步推导和思考。例如,在解决数学证明题时,提示词可以具体到每一步需要运用的定理、公式以及推理的方向,帮助模型构建…...