【CANN训练营0基础赢满分秘籍】 应用开发深入讲解→端到端案例

news2025/1/15 20:39:59

1 样例调试

1.1 日志文件

运行应用程序后,若出现报错或异常,需录取日志进一步定位问题。日志文件的默认目录为$HOME/ascend/log。

  • 可通过环境变量指定日志文件的落盘路径
export ASCEND_PROCESS_LOG_PATH=/$HOME/xxx

但需要确保该目录为任意有读写权限的目录。

  • 可通过环境变量移目志打屏显示
export ASCEND_SLOG_PRINT_T0_STDOUT=1

如果使用打屏方式显示日志,也可以在启动应用进程时,通过输出主定向方式将白志保存到指定文件中。例如:/main > log.txt。

1.2 日志格式

image.png

1.3 接口调用逻辑问题

image.png

1.4 软件约束问题

  1. 输入图片格式不支持,JPEG图片解码失败
  2. 注册算子数超过最大规格,模型加载失败
  3. 使用正确的输入图片格式
  4. 按限制使用规定数量的算子
    image.png

1.5 输入数据问题

  1. 输入码流异常,视频解码丢帧/丢包
  2. 输入图片异常,JPEG图片解码失败
  3. 检查异常码流
  4. 检查异常图片
    image.png

2 端到端样例结构

2.1 开发说明

对于CV类的应用开发,一般而言都有如下几个步骤:

  • 样例结构设计
    设计样例的流程编排,为后续步骤做准备。
  • 原始模型及输入输出分析
    分析模型的输入输出,将模型转换为离线om模型。
  • 样例编写
    根据编排好的流程及转换完成的模型进行样例的编写。
  • 样例编译运行
    编写CMakeList,并进行样例编译与运行。
    本章将结合sampleResnetDVPP的样例对流程进行介绍,样例效果如下:
    image.png

2.2 样例结构

  • 模型转换:使用ATC工具将Resnet50.onnx模型转换为离线om模型。
  • 资源初始化:初始化所有资源,包括DVPP初始化、模型初始化等。
  • 输入数据处理:使用DVPP将数据处理到模型需要的大小。
  • 模型推理:便用om模型进行推理。
  • 输出数据处理:对模型推理结果进行处理,该样例是将输出前五置信度的标签进行打印。
  • 资源释放:释放所有资源,包括DVPP及模型资源等。
  • 数据传输:样例运行过程中进行的数据传输动作
    image.png

3 原始模型及输入输出分析

3.1 原始模型输入分析

image.png

3.2 原始模型输出分析

image.png

3.3 数据预处理/后处理分析

为了加快图片处理速度,所以预处理需要使用DVPP,根据前面得到的输入数据信息,预处理需要经过如下步骤:
image.png
其中AIPP的操作需要在模型转换的过程中操作。预处理如图所示进行JpegD和Resize即可。
由模型输出分析可知,输出结果为1000个类别的置信度。所以数据后处理操作如下:

  • 将1000个置信度信息保存下来。
  • 将1000个置信度结果相加。
  • 取出topk的置信度结果并除以总置信度取值〈相当于做一次softmax,将置信度归一化到[0,1]之间,且保证所有置信度相加结果为1)。
  • 输出topk的标签及置信度。

4 样例编写

4.1 模型转换

分析完模型的输入输出,预处理及后处理后,接下来就要使用昇腾CANN提供的ATC工具进行模型转换了。
由前面的分析可以知道,ATC需要进行色域转换、减均值和归一化的操作。同时由于数据并未像pytorch数据处理一样,归一化到[0,1]之间,所以实际数据内容还是[0,255]的。所以AIPP整体需要进行如下处理:

  • 数据需要从YUV专换成RGB格式;
  • 减去的均值mean应该是[0.485255,0.456255,0.406*255];
  • 除去的系数std应该是[0.229255,0.224255,0.225*255];
  • 由于原本的计算公式可抽象为(data-m ean)/std,而在AIPP中计算公式可抽象为(data-m ean)std,所以系数std应该为[1/(0.229255),1/(0.224255),1/(0.225255)];
    image.png

4.2 资源初始化

image.png

4.3 输入数据处理

image.png

4.4 模型推理与数据后处理

image.png

4.5 资源释放

image.png

5 编译运行

image.png

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

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

相关文章

文档图像智能分析与处理:CCIG技术论坛的思考与展望

文档图像智能分析与处理:CCIG技术论坛的思考与展望 文档识别与理解的发展趋势视觉-语言预训练模型在文档处理中的应用篡改文本图像的生成与检测的研究进展华为云OCR技术的进展与行业实践智能文档处理技术的应用与挑战文档图像预处理的整体架构弯曲矫正摩尔纹去除版面…

【Linux】普通用户无法使用sudo指令的方法

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【Linux】…

计算机视觉的应用6-利用VGG模型做毕加索风格图像迁移

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用5-利用VGG模型做毕加索风格图像迁移,本文将利用VGG模型实现毕加索风格图像迁移的方法。首先,我们将简要说明图像风格迁移的原理,然后使用PyTorch框架&#xff0c…

chatgpt赋能Python-python_fig

Python中的fig:简介和应用 什么是fig? fig是Python中一个高效且易用的图形库,它支持大量的图像绘制功能,包括2D图形绘制、曲线和图像处理,以及3D图形和动画绘制等应用。fig可以在多个平台上运行,包括Wind…

客户体验|审美体验与体验管理

Guofu 第 93⭐️ 篇原创文章分享 (点击👆🏻上方卡片关注我,加⭐️星标⭐️~) 🚏 写在前面 伽达默尔说:“如果某个东西被经历过,而且它的经历存在还获得一种使自身继续存在意义的特征…

chatgpt赋能Python-python_har

Python HAR:一种高效的网络监测工具 Python HAR(HTTP Archive)是一个用于监测网络资源的强大工具,它能够记录网络请求、响应和资源加载的细节信息,并以可视化和格式化的方式呈现出来。Python HAR的应用范围广泛&#…

单模光纤二维模场分布的MATLAB仿真

在上一篇文章中,我们介绍了单模光纤的一维模场分布,能看出沿着径向的光场分布情况,并分析能量的分布 这一篇中,我们绘制光纤横截面上的二维光场分布:代码如下: clear close all V 2.4000; U 1.6453; W …

C4D R26 渲染学习笔记(1):C4D版本选择和基础知识(更新中)

C4D版本知识 C4D通过R来进行版本区分,现在2023年5月22日最新版的是R26。说一下特殊版本。 C4D版本介绍特点R19OC快乐版3.07最高版本,OC是C4D最具性价比的渲染器,OC学习成本低,渲染速度快,但是注意OC 3.07只支持10系N…

如何提取微信公众号的链接?非常简单!

今天在公众号里面想要复制公众号链接,用于小程序里面引导用户关注,因为小程序里面的关注公众号只能是扫码小程序才能使用,想起以前使用的原始链接跳转方法,就想试一试,结果公众号后台居然没有链接可以复制了&#xff0…

代码随想录算法训练营day49 | 121. 买卖股票的最佳时机,122.买卖股票的最佳时机II

代码随想录算法训练营day49 | 121. 买卖股票的最佳时机,122.买卖股票的最佳时机II 121. 买卖股票的最佳时机解法一:动态规划解法二:贪心算法 122.买卖股票的最佳时机II解法一:动态规划解法二:贪心算法 121. 买卖股票的…

数据要素流通使用的安全风险分析及应对策略

数据要素流通使用的安全风险分析及应对策略 刘业政1,2, 宗兰芳1, 金斗1,袁昆1,2 1 合肥工业大学管理学院,安徽 合肥 230009 2 大数据流通与交易技术国家工程实验室,上海 201203 摘要:系统地分析了数据要素流通使用过程中存在的安全…

直播预告 | 医疗人工智能入行经验分享

(本文阅读时间:2 分钟) 或许大家从不同程度上听说或使用过智能导诊机器人、语音电子病历或是智能问诊?这些高端大气又便利的产物都是人工智能在医疗健康领域的重要应用场景产品及服务。 “AI医疗”是人工智能技术赋能医疗健康产业…

综述 | 基于 Transformer 网络的多模态学习

关注公众号,发现CV技术之美 Transformer 网络结构作为一种性能卓越的神经网络学习器,已经在各类机器学习问题中取得了巨大的成功。伴随着近年来多模态应用和多模态大数据的蓬勃发展,基于Transformer 网络的多模态学习已经成为了人工智能领域的…

chatgpt赋能Python-python_for_loop

Python For Loop: 了解循环结构控制的重要性 在Python编程中,循环结构控制是必备技能之一。它允许程序员重复执行指定的代码块,而不需要手动多次输入。Python提供了几种类型的循环结构,其中for循环是最常用的之一。我们将在本文中讨论for循环…

( 回溯算法) 332. 重新安排行程 ——【Leetcode每日一题】

❓332. 重新安排行程 难度:困难 给你一份航线列表 tickets ,其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生&#xf…

【泛微ecology_oracle】如何把查询到的单列人力资源id合并成多人力资源格式

如何把查询到的单列人力资源id合并成多人力资源格式 在泛微ecology中,单列人力资源id合并成多人力资源的使用场景在泛微ecology中,在数据库里人员姓名存储形式那如何实现人力资源字段合并多人力资源字段呢? 在泛微ecology中,单列人…

Node.js博客项目开发思路笔记

博客项目介绍 1. 目标 开发一个博客系统,具备博客基本功能只开发 server 端,不关心前端 2. 需求 首页、作者页、博客详情页登陆页管理中心、新建页、编辑页 3. 技术方案 数据如何存储 博客 idtitlecontentcreatetimeauthor1标题 1内容 11111112z…

Vue购物车实例练习

功能介绍 金额 单价 * 数量金额会自动根据数量的变化进行变化,我们可以点击按钮增加或减少商品的数量。合计金额:只有在序号列号勾选上才会被计入总金额中,金额总数会根据用户的操作自动更新数据。删除:如图我们勾选了第2个商品&…

【开源项目】Easy-Trans数据翻译服务的快速入门及原理解析

项目介绍 easy-trans是一款用于做数据翻译的代码辅助插件&#xff0c;利用mybatis plus/jpa/beetsql 等ORM框架的能力自动查表&#xff0c;让开发者可以快速的把id/字典码 翻译为前端需要展示的数据。 快速入门 maven依赖 <properties> <fhs.release.version>2.…

痞子衡嵌入式:MCUBootUtility v5.0发布,初步支持i.MXRT1180

--   痞子衡维护的NXP-MCUBootUtility工具距离上一个大版本(v4.0.0)发布过去4个多月了&#xff0c;期间痞子衡也做过两个小版本更新&#xff0c;但不足以单独介绍。这一次痞子衡为大家带来了全新大版本v5.0.0&#xff0c;这次更新主要是想和大家特别聊聊恩智浦新一代 i.MXRT …