【2023 · CANN训练营第一季】进阶班 应用开发深入讲解→端到端案例

news2024/11/19 23:26:51

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/553936.html

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

相关文章

外参手算方法

虽然有的slam系统是代外参标定功能,可以在线标定(vins)或者离线进行标定,但外参标定的质量也会与运动激励相关的,例如对于3自由度的小车很难把z方向的外参标定的很好。有些情况车子或者是定位模块是有设计图纸的&#…

Ubuntu22.04下使用Conda安装PyTorch GPU版本

环境 首先,你需要有 GPU 支持。 Ubuntu 22.04 显卡 $ nvidia-smi Mon May 22 11:15:33 2023 --------------------------------------------------------------------------------------- | NVIDIA-SMI 530.30.02 Driver Version: 530.30.02 CUDA…

MySQL在Centos7环境下的安装操作

文章目录 一、卸载不需要的环境二、通过yum安装MySQL1.安装MySQL的yum源2.安装MySQL 三、启动mysql的服务器四、登录MySQL1.方法一2.方法二3.方法三 五、配置my.cnf文件 一、卸载不需要的环境 首先要检查服务器中是否存在mariadb,mariadb是MySQL的一个开源分支&…

栈与C++中的std::stack详解(多图超详细)

文章目录 栈(stack)什么是栈?栈的基本操作和应用入栈(push)出栈(pop)入栈和出栈的复杂度和应用场景 类模板std::satck形参T和Container成员函数元素访问栈的容量栈的修改 用法示例 栈(stack) 什么是栈? 栈是一种线性的数据结构&…

Python爬虫被封ip解决方案

在使用 Python 程序进行网络爬虫开发时,可能因以下原因导致被封 IP 或封禁爬虫程序: 1、频繁访问网站 爬虫程序可能会在很短的时间内访问网站很多次,从而对目标网站造成较大的负担和压力,这种行为容易引起目标网站的注意并被封禁…

2023ACP世界大赛中国总决赛|让世界再多一个微笑

5月21日,正值第三十三次全国助残日,作为公益推行的一份子,恒利联创也呈现出了“仁者爱人”的文化内核。 恒利联创携手微笑明天慈善基金会合作同行,旨在推动公益,促进残疾人事业的全面发展。在前行的道路上&#xff0c…

MQTT入门手册

初识MQTT MQTT 协议简介 概览 MQTT 是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT 协议广泛应用于物联网、移动互联网、智能硬件、车联网…

​LeetCode解法汇总1080. 根到叶路径上的不足节点

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 给你二叉树的根节点 root 和一个整数 limit ,请你同时删除树中所有 …

Mybatis连接MySQL数据库通过逆向工程简化开发流程

文章目录 一、使用步骤1、建立新项目2、引入pom依赖3、创建逆向工程的配置文件 generatorConfig.xml4、运行逆行工程,生成代码文件 二、案例展示1、建立数据表2、改写对应的配置文件内容1、数据库连接配置,指定自己的数据库2、配置pojo生成的位置3、配置sql映射文件…

新一代数据湖存储技术Apache Paimon入门Demo

目录 前言 1. 什么是 Apache Paimon 一、本地环境快速上手 1、本地Flink伪集群 2、IDEA中跑Paimon Demo 2.1 代码 2.2 IDEA中成功运行 3、IDEA中Stream读写 3.1 流写 3.2 流读(toChangeLogStream) 二、进阶:本地(IDEA&…

【Java EE】Spring介绍

Spring笔记 1.概述1.1 IOC1.2.context上下文和bean1.3.AOP 2.IoC 控制反转2.1. Spring IoC容器和Bean简介2.2. 容器概述2.2.1. 配置元数据2.2.2. 实例化一个容器2.2.3. 使用容器 2.3. Bean 概览2.3.1. Bean 命名2.3.2. 实例化 Bean2.3.3 bean的生命周期 3.AOPAOP 概念 参考资料…

【微博-UITableViewController介绍 Objective-C语言】

一、加载xib文件的另外一种办法 1.我们说,加载xib,一种方式就是, CZFooterView *footerView = [[[NSBundle mainBundle] loadNibNamed:@“CZFooterView” owner:nil options:nil] lastObject]; 吧,这是一种方式, 2.另外一种方式,就是这里这种方式, UINIb *nib = [UI…

关于Jetpack DataStore(Preferences)的八点疑问

前言 DataStore是Android上一种轻量级存储方案,依据官方教程很容易就写出简易的Demo。 本篇主要是分析关于DataStore(Preferences)使用过程中的一些问题,通过问题寻找本质,反过来能更好地指导我们合理使用DataStore。 本篇内容目录&#xff…

浪涌保护器的不同类型解析

本页提到了不同的电涌保护器类型,即1型电涌保护器,2型,3型和4型电涌保护器。 它提到了电涌保护器类型,即GDT(气体放电管),TSPD(晶闸管浪涌保护装置),TVS&…

来赞达Lazada商品详情接口(item_get-根据ID取商品详情)代码封装

item_get-根据ID取商品详情接口 通过代码封装该接口可以拿到商品标题,商品价格,商品促销信息,商品优惠价,商品库存,sku属性,商品图片,desc图片,desc描述,sku图片&#xf…

记一次支付宝支付的功能开发

背景: 公司需要增加一项支付宝PC端的收款功能 解决: 使用的支付宝官方文档中的电脑网站支付->统一收单下单并支付,当然,我们的支付宝账号需要开通该产品。官方API连接:https://opendocs.alipay.com/open/028r8t?…

小航助学信息学奥赛C++ GoC期末考试试卷(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 单选题4.0分 删除编辑 答案:B 第1题GoC的编译运行的快捷键是() A、F5B、F11C、F8D、F12 答案解析&#xf…

超声波雷达介绍 ———— 分类介绍

文章目录 介绍安装位置UPAAPA 传感器种类等方性传感器超声波雷达异方性传感器超声波雷达 技术方案模拟式四线式数位二线式数位三线式主动数位 其他密闭式超声波传感器开放式超声波传感器 介绍 超声波的定义 —— 波长短于2cm的机械波称为“超声波”。 超声波属于机械波&#xf…

【prism】容器使用

获取容器对象 当我们使用了prism框架之后,我们就会拥有一个 对象创建/管理 工厂 —— 容器(IOC)。 回忆一下prism工程的构架过程: 我们当前的App 其实 已经继承了 Prism 给我们提供的APP,所以,我们当前的App对象其实就包含了一个容器对象,所以我们可以从任何地方拿到…

javaweb实验:Servlet应用开发

目录 前言实验目的实验内容实验原理或流程图实验过程一个简单的servletServlet表单结果展示 使用servlet处理表单请求servlet结果展示 在Servlet中获取应用程序配置参数servlet 使用Servlet处理用户登录请求Servlet登录表单登陆成功页面登录失败页面结果展示![在这里插入图片描…