昇腾 AscendCL C++应用开发 获取模型的信息

news2024/11/17 12:23:24

昇腾 AscendCL C++应用开发 获取模型的信息

flyfish

举例说明 程序在香橙派 AIpro 下获取到的模型信息

在这里插入图片描述

从ACLLite代码里看一些类型,因为获取模型信息的时候,会获取到数字,所以要看数字代表的意思,所有要看常量的名字
数据类型

# data format
ACL_FORMAT_UNDEFINED = -1
ACL_FORMAT_NCHW = 0
ACL_FORMAT_NHWC = 1
ACL_FORMAT_ND = 2
ACL_FORMAT_NC1HWC0 = 3
ACL_FORMAT_FRACTAL_Z = 4
ACL_DT_UNDEFINED = -1
ACL_FLOAT = 0
ACL_FLOAT16 = 1
ACL_INT8 = 2
ACL_INT32 = 3
ACL_UINT8 = 4
ACL_INT16 = 6
ACL_UINT16 = 7
ACL_UINT32 = 8
ACL_INT64 = 9
ACL_UINT64 = 10
ACL_DOUBLE = 11
ACL_BOOL = 12
acl_dtype = {
    "dt_undefined": -1,
    "float": 0,
    "float16": 1,
    "int8": 2,
    "int32": 3,
    "uint8": 4,
    "int16": 6,
    "uint16": 7,
    "uint32": 8,
    "int64": 9,
    "double": 11,
    "bool": 12
}

代码

aclError test()
{
    std::cout << "AclmdlCreateDesc: start." << std::endl;

    aclError ret = aclInit(nullptr);
    int32_t deviceId_ = 0;
    ret = aclrtSetDevice(deviceId_);
    const char *modelPath = "../model/yolov5s.om";
    uint32_t modelId = 0;
    ret = aclmdlLoadFromFile(modelPath, &modelId);
    std::cout << "Model Id = " << modelId << "." << std::endl;

    aclmdlDesc *modelDesc = aclmdlCreateDesc();
    ret = aclmdlGetDesc(modelDesc, modelId);
    std::cout << "Function aclmdlGetNumInputs = " << aclmdlGetNumInputs(modelDesc) << "." << std::endl;
    std::cout << "Function aclmdlGetNumOutputs = " << aclmdlGetNumOutputs(modelDesc) << "." << std::endl;
    std::cout << "Function aclmdlGetInputSizeByIndex = " << aclmdlGetInputSizeByIndex(modelDesc, 0) << "." << std::endl;
    std::cout << "Function aclmdlGetOutputSizeByIndex = " << aclmdlGetOutputSizeByIndex(modelDesc, 0) << "." << std::endl;
    std::cout << "Function aclmdlGetInputNameByIndex = " << aclmdlGetInputNameByIndex(modelDesc, 0) << "." << std::endl;
    std::cout << "Function aclmdlGetOutputNameByIndex = " << aclmdlGetOutputNameByIndex(modelDesc, 0) << "." << std::endl;
    std::cout << "Function aclmdlGetInputFormat = " << aclmdlGetInputFormat(modelDesc, 0) << "." << std::endl;
    std::cout << "Function aclmdlGetOutputFormat = " << aclmdlGetOutputFormat(modelDesc, 0) << "." << std::endl;
    std::cout << "Function aclmdlGetInputDataType = " << aclmdlGetInputDataType(modelDesc, 0) << "." << std::endl;
    std::cout << "Function aclmdlGetOutputDataType = " << aclmdlGetOutputDataType(modelDesc, 0) << "." << std::endl;
    
    ret = aclmdlDestroyDesc(modelDesc);
    aclmdlUnload(modelId);
    ret = aclrtResetDevice(deviceId_);
    aclFinalize();
    std::cout << "AclmdlCreateDesc: end." << std::endl;
    return ret;
}

在main函数中 调用test函数

解释

Function aclmdlGetInputSizeByIndex = 1228800.//640*640*3 
Function aclmdlGetOutputSizeByIndex = 8568000.
Function aclmdlGetInputFormat = 1.//ACL_FORMAT_NHWC
Function aclmdlGetOutputFormat = 2.//ACL_FORMAT_ND
Function aclmdlGetInputDataType = 4.//uint8
Function aclmdlGetOutputDataType = 0.//float

8568000这个数说明下

8568000 = 25200 * 85 *4
25200个检测框,每个检测框包含85个预测值,每个预测值占4个字节
85 = 5 + 80
5个基础值:x, y, width, height, 和 objectness score。
80是类别概率
输出是float类型,float占4个字节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2076020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ch32v307vct6从头移植FreeRTOS

使用官方的ide可以直接创建带FreeRTOS的工程,但是不利于我们学习移植,所以特此记录怎么从头开始移植FreeRTOS到CH32V307VCT6芯片使用。 下载FreeRTOS源码 首先进入https://www.freertos.org/官网,然后找到如下Download字样,进入下载即可 下载完成后我们解压使用。移植开始…

Anzo Capital昂首资本:外汇市场交易策略与平均价格优化

在外汇市场的波动中&#xff0c;Anzo Capital昂首资本通过优化开仓头寸的平均价格&#xff0c;以最小的风险获取最大的利润&#xff0c;致力于帮助投资者实现更精准的交易策略。本文将探讨如何通过策略性地设置订单&#xff0c;来降低平均成本并提高盈利潜力。 Anzo Capital昂…

TypeSript7 class类

ES6提供了更接近传统语言的写法&#xff0c;引入了Class&#xff08;类&#xff09;这个概念&#xff0c;作为对象的模板。通过class关键字&#xff0c;可以定义类。基本上&#xff0c;ES6的class可以看作只是一个语法糖&#xff0c;它的绝大部分功能&#xff0c;ES5都可以做到…

IF 17.3|植物细胞器想发高分文章?你缺的可能是这些内容

文章内容导读 叶绿体和线粒体是唯一拥有内共生起源基因组的细胞器。近年来&#xff0c;测序技术的进步促进了大量植物细胞器基因组的发表&#xff0c;并揭示了它们之间极大的进化轨迹差异。本综述量化了在植物进化树中分布广泛的已测序植物细胞器基因组的数量和分布情况。 文章…

DHCP详解与应用——从原理到实战模拟

1. 引言 在现代网络中&#xff0c;IP地址的自动分配已成为基础设施管理中不可或缺的一部分。动态主机配置协议&#xff08;DHCP&#xff0c;Dynamic Host Configuration Protocol&#xff09;作为一种广泛应用的网络协议&#xff0c;通过自动为设备分配IP地址、子网掩码、网关等…

实用Python自动化脚本案例分享

前言 每天你都可能会执行许多重复的任务&#xff0c;例如阅读新闻、发邮件、查看天气、打开书签、清理文件夹等等&#xff0c;使用自动化脚本&#xff0c;就无需手动一次又一次地完成这些任务&#xff0c;非常方便。而在某种程度上&#xff0c;Python就是自动化的代名词。 1、自…

【书生大模型实战营第三期 | 进阶岛第5关-茴香豆:企业级知识库问答工具】

学习心得&#xff1a;茴香豆&#xff1a;企业级知识库问答工具 摘要 《茴香豆&#xff1a;企业级知识库问答工具》课程详细介绍了由书生浦语团队开发的开源知识问答工具——茴香豆。该系统针对国内企业级使用场景进行了专门的设计和优化&#xff0c;具备三阶段Pipeline架构&am…

【Node】【3】回调函数

nodejs 是一个基于事件驱动和非阻塞异步的JavaScript运行时环境。 Node.js 采用单线程模型&#xff0c; 单线程意味着 Node.js 在任何给定时刻只能执行一段代码&#xff0c;但通过异步执行回调函数&#xff0c;可以在等待 I/O 操作完成的同时继续执行其他代码&#xff0c;从而…

【PL/pgSQL】华为数据库GaussDB及PostgreSQL 数据库系统的过程语言

文章目录 介绍 PL/pgSQL为什么选择 PL/pgSQL&#xff1f;基本语法和结构1. 基本结构2. 变量声明3. 控制结构4. 循环 存储过程与函数1. 创建存储过程2. 调用存储过程3. 自定义函数 触发器1. 创建触发器函数2. 创建触发器 异常处理高级语法特性示例控制结构条件语句循环 异常处理…

【Linux】06.Linux 下的编译器——gcc/g++

在之前的C语言的博客中&#xff0c;我们有谈到过编译与链接 从源代码到可执行程序要经过如下过程&#xff1a; 预处理&#xff08;进行宏替换&#xff09;编译&#xff08;将C语言代码翻译成汇编代码&#xff09;汇编&#xff08;将汇编代码解析成二进制指令&#xff09;链接&…

Python基础—Python保护代码和数据的方法

保护代码和数据的安全性至关重要。无论是防止代码被轻易修改&#xff0c;还是确保数据的隐私与完整性&#xff0c;采取适当措施都是必不可少的。今天&#xff0c;我们就来揭开六大保护策略的神秘面纱&#xff0c;让初学者也能轻松掌握这些实用技巧。 1. 使用加密技术保护敏感…

无需代码,快速搭建:JNPF低代码平台的创新应用案例

在数字化转型的浪潮中&#xff0c;企业对于迅速开发和部署应用的需求不断上升。传统的软件开发方法耗时较长、成本较高&#xff0c;难以适应快速变化的市场需求。低代码平台应运而生&#xff0c;它通过可视化界面和配置化手段&#xff0c;显著简化了应用开发流程。JNPF作为一款…

Java 中的抽象工厂模式:优雅地掌握对象创建

文章目录 一、概述三、抽象工厂设计模式的意图四、抽象工厂模式的详细解释及实际示例五、Java 中抽象工厂模式的编程示例六、抽象工厂模式类图七、Java 中何时使用抽象工厂模式八、抽象工厂模式 Java 教程九、抽象工厂模式的优点和权衡十、Java 中抽象工厂模式的实际应用十一、…

Python中的random模块及相关模块详解例子2解析

Python 的 random 模块提供了生成随机数的函数&#xff0c;这些函数可以用于各种场景&#xff0c;如模拟、游戏开发、加密等。以下是 random 模块的一些常用功能和示例。 基本函数 random.seed(aNone, /) - 初始化随机数生成器。如果提供相同的种子值&#xff0c;将生成相同的…

elastic-job定时任务

静态任务案例 ​ 使用elastic-job很容易&#xff0c;我们接下来学习下elastic-job的使用&#xff0c;这里的案例我们先实现静态任务案例&#xff0c;静态任务案例也就是执行时间事先写好。 实现步骤&#xff1a; 1.引入依赖包 2.配置zookeeper节点以及任务名称命名空间 3.实…

数据分析:锚定黄金营销节点,【出行+文化】成小红书大势

导语 据悉&#xff0c;小红书发布《十大搜索趋势洞察》&#xff0c;小编发现其中涉及到热门趋势【理性听劝】。本期&#xff0c;小编将以此展开&#xff0c;为即将到来的十一长假&#xff0c;为品牌提供营销启示。 洞察【出行文化】这件大事 在出行这件事上&#xff0c;小红…

FuTalk设计周刊-Vol.071

#AI漫谈 热点捕手 1.Midjourney 网页版开放&#xff0c;提供了免费的使用额度 链接https://x.com/midjourney/status/1826305298560418171 2.Stability AI推出Stable Video 4D模型 Stability AI最新推出Stable Video 4D模型&#xff0c;支持多视角生成、4D模型生成等能力。S…

【网络】传输层协议——TCP协议(进阶)

目录 1.TCP连接的11种状态 2.再次理解三次挥手 2.1.再次理解三次握手 2.2.Socket编程和三次握手的关系 2.2.1.listen的参数 2.2.2.accept函数 2.3.TCP三次握手的优点 2.3.1.阻止重复历史连接的初始化 2.3.2.为什么两次握手不能防止旧的重复连接初始化造成混乱呢&am…

Java开发笔记-spring的@schedule低级错误

最近在追一个数据库等待锁超时&#xff0c;数据库死锁导致的数据问题。考虑是定时任务占用锁&#xff0c;触发器sql冲突导致。于是在研究程序日志。发现了另外一个问题&#xff1a;我的定时任务明明注解的 每天七点执行&#xff0c;他偏偏9点才执行。 之前也没去管它&#xff0…

三维扫描建模是什么?有什么优势?适用于哪些场景?

扫描建模是指通过专业的三维扫描仪对产品进行三维数据的采集&#xff0c;快速获取物体精确的3D数据&#xff0c;实现1:1复刻原物体&#xff0c;扫描后所得的数字化3D模型以obj、fbx、glb、gltf等格式保存。 积木易搭自主研发多款三维扫描设备&#xff0c;通过非接触式扫描硬件设…