【CANN训练营0基础赢满分秘籍】进阶班 应用开发深入讲解

news2024/11/24 17:44:39

1 AIPP

AIPP (Artificial Intelligence Pre-Processing)人工智能预处理,在AI Corfe上完成数据预处理。

1.1 静态AIPP

  1. 构造AIPP配置文件*.cfg
  2. 使能静态AIPP,将其配置参数保存在模型文件中。
atc --framework=3--soc_version=S[soc_version)
--model= SHOME/module/resnet50 tensorfiow.pb
--insert_op conf= SHOME/modulefinsert op.cfg
--output= $HOME/module/outcf resnet50
  1. 调用AscendCL接口加载模型,执行推理。

1.2 动态AIPP

  1. 构造AIPP配置文件*.cfg。aipp_op
  2. 使能动态AIPP。
atc --framework=3--soc version=$(soc_version)
--model= SHOME/module/resnet50 tensorflow.pb- 
--insert op conf-$HOME/module/insert op.cfg
--output=SHOME/module/out/tf resnet50

  1. 调用AscendCL接口加载模型,设置AIPP参数后,再执行推理。
aclmdIAIPP *aippDynamicSet = aclmdlCreateAIPP(batchNumber);aclmdlSetAIPPSrclmageSizeaippDynamicSet,250, 250);
acImdlSetAIPPInputFormat(aippDynamicSet,ACL_YUV420SP_U8):aclmdlSetAIPPCscParams(aippDynamicSet,1, 256,0,359,256,-88,-183,256,454,0,0.0,0,0,128,128);
aclmdlSetAIPPCropParams(aippDynamicSet,1,2.2,224,224,0);aclmdISetInputAIPP(modelld, inputindex,aippDynamicSet);acImdIDestroyAIPP(aippDynamicSet);

2 AIPP-Crop/Padding

AIPP改变图片尺寸需要遵守如下图中的顺序,即先Crop再Padding,每个操作仅能执行一次。

  • 场景功能:输入到AIPP中的图片尺寸为srclmageSizeW, srclmageSizeH;模型要求的图片尺寸为dstlmageSizeW.dstlmageSizeH。
  • Crop操作:在原图中距离左上角宽load_start_pos_w,高load_start_pos_h距离的点裁剪出宽为crop_size_w,高为crop_size_h大小的图片。
  • Paste操作:指明在裁剪后的图像四周padding的尺寸,即left_padding_size.right_padding_size.top_padding_size和bottom_padding_size。而经过图像尺寸改变之后最终图片大小,需要跟模型文件输入的图像大小即模型要求的图片尺寸dstlmagesizew. dstlmageSizeH相等。
    其中,对于YUV420SP_u8图片类型,load_start_pos_w. load_start_pos_h参数
    实际上,大多图像缩放或裁剪的工作都在样例中的输入预处理中做过了,如使用opencv的resize函数进行缩放等。初步学习的过程中,仅需要了解AIPP具备这样的功能即可。

crop: true #抠图开关,用于改变图片尺寸
load_start_pos_h: o #抠图起始位置水平、垂直方向坐标
load_start_pos_w: o

开启Crop且没有配置padding, crop_size_w和crop_size_h才能取值为0或不配置。

此时抠图大小(crop_size[W|H])的宽和高取值来自模型文件–
input_shape中的宽和高,并且–input_shape中的宽和高取值范围为[1,4096]。

换言之,通过这样的简单配置,就可以自动将输入的图片裁剪成模型要求的图片天小,避免输入预处理后的图片与模型要求的图片大小不一致的问题。但可能会带来丢失一部分原始图片而导致的精度损失问题。

3 AIPP-RGB说明

3.1 大小格式说明

3.2 OpenCV传统流程处理

4. AIPP色域转换

在执行RGB->YUV,或者RGB->BGR等色域转换时,就可以直接使用AIPP,通过硬件能力快速完成色域转换。

csc_switch : true
#色域转换开关
matrix_rOc0 : 256
#色域转换系数,用户无需修改
matrix_rOc1 : 0
matrix_rOc2 : 359
matrix_r1c0 : 256
matrix_r1c1 : -88
matrix_r1c2 : -183
matrix_r2c0 : 256
matrix_r2c1 : 454
matrix_r2c2 : 0
input_bias_0 : 0
input_bias_1 : 128
input_bias_2 : 128

色域转换功能由csc_switch参数控制,并通过色域转换系数
matrix_rc、通道交换rbuv_swap_switch等参数配合使用。
AlPP中,一旦确认了AIPP处理前与AIPP处理后的图片格式,即可确定色域转换相关的参数值,用户无需修改,模板示例以及更多配置模板请参见色域转换配置说明在示例中,就做了一个YUV420SP转RGB的色域转换操作.

aipp_op {
aipp_mode : static
#AIPP香配置模式。这里为静态AIPP
input_format : YUV420SP_U8#输入给AIPP的原始图片格式src_image_size_w : 250#输入给AIPP的原始图片宽高src_image_size_h : 250
crop: true
#抠图开关,用于改变图片尺寸
load_start_pos_h: o
#抠图是起始位善水平、垂直方向坐标
load_start_pos_w: o
aipp_op {
aipp_mode : static
#AIPP香配置模式。这里为静态AIPP
input_format : YUV420SP_U8#输入给AIPP的原始图片格式src_image_size_w : 250#输入给AIPP的原始图片宽高src_image_size_h : 250
crop: true
#抠图开关,用于改变图片尺寸
load_start_pos_h: o
#抠图是起始位善水平、垂直方向坐标
load_start_pos_w: o
csc_switch : true
#色域转换开关
matrix_roc0 : 256
#色域专换系数。用户无需修改
matrix_roc1 : o
matrix_roc2 : 359
matrix_r1c0 : 256
matrix_r1c1 : -88
matrix_r1c2 : -183
matrix_r2c0 : 256
matrix_r2c1 : 454
matrix_r2c2 : 0
input_bias_o : 0
input_bias_1 : 128
input_bias_2 :128
mean_chn_0:104
#归一化配置
mean_chn_1: 117
mean_chn_2:123
min_chn_0: 0.0
min_chn_1: 0.0
min_chn_2: 0.0
var_reci_chn_0: 1.0
var_reci_chn_1: 1.0
var_reci_chn_2:1.0

5.AIPP归一化

归一化就是要把需要处理的数据经过处理后限制在一定范围内,符合模型要求。
AIPP支持的归一化设置,通过减均值和乘系数的操作完成,其中,mean_chn i表示每个通道的均值,min_chn_i表示每个通道的最小值,var_reci_chn表示每个通道方差的倒数,各通路的这三个值都是需要进行配置的参数。

pixel_out_chx(i)=[pixel_in_chx(i)-mean_chn_i-min_chn_i]*var_reci_chn

在test.cfg中,mean_chn_i有取值,min_chn_i为0,
var_reci_chn为1.0,所以只做了减均值的操作,片段如下:

mean_chn_0: 104
#归一化配置
mean_chn_1: 117
mean_chn_2: 123
min_chn_0: 0.0
min_chn_1: 0.0
min_chn_2: 0.0
var_reci_chn_0: 1.0
var_reci_chn_1: 1.0
var_reci_chn_2: 1.0

6 基本场景及参数介绍

接下来将根据图片分类应用[2中的模型转换介绍实际使用场景。

6.1.场景说明

该样例使用的是已经训练好的pytorch框架的ResNet-50开源模型。模型的基本信息如下所示:
输入数据:RGB格式、224*224分辨率的输入图片。
输出数据:图片的类别标签及其对应置信度。
**归一化:**需要进行减均值([0.485,0.456,0.406])及乘系数([0.229,0.224,0.225])操作

6.2 不使用AIPP进行模型转换

该模型的转换命令如下:


wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx
atc --model=resnet50.onnx 
--framework=5 
--output=resnet50 
--input_format=NCHW 
--input_shape="actual_input_1:1,3,224,224" 
--soc_version=Ascend310

经过模型转换后,输出的om模型和原始模型输入输出数据一致。此时数据预处理需要将数据处理为RGB格式,缩放到224*224分辨率、数据进行归一化后才能送入om模型进行推理。

6.3 使用AIPP进行模型转换

AIPP配置文件如下:

aipp_op{
wget https://obs-9be7.obs.cn-east-
aipp_mode:static
2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx
input_format : RGB888_U8
src_image_size_w : 256
wget https://obs-9be7.obs.cn-east-
src_image_size_h : 256
2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50_CV/aipp.cfg
crop: true
load_start_pos_h : 16
load_start_pos_w : 16
crop_size_w : 224
crop_size_h: 224
min_chn_0 : 123.675
min_chn_1 :116.28min_chn_2 : 103.53
var_reci_chn_O: 0.0171247538316637
var_reci_chn_1: 0.0175070028011204
var_reci_chn_2: 0.0174291938997821

模型转换命令如下:

模型转换命令如下:
wget https://obs-9be7.obs.cn-east-
2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx
wget https://obs-9be7.obs.cn-east-
2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50_CV/aipp.cfg
atc --model=resnet50.onnx --framework=5 --output=resnet50 -
-input_format=NCHw --
input_shape="actual_input_1:1,3,224,224"--
soc_version=Ascend310 --insert_op_conf=aipp.cfg

经过模型转换后,输出的om模型和原始模型输入不一致,输出数据一致。此时数据预处理需要将数据处理为RGB格式、缩放到224*224分辨率后即可送入om模型进行推理。此时om会先通过AlPP进行归一化,然后再继续推理。
soc_version=Ascend310 --insert_op_conf=aipp.cfg
\

6.4参数说明

6.4.1 --model

填写原始网络模型文件路径与文件名。当原始模型为Caffe框架时,需要和–weight参数配合使用。参数使用参考示例如下:

# Caffe模型
--model=$HOME/module/resnet50.prototxt 
--weight=$HOME/module/resnet50.c.affemodel
# MindSpore模型
--model=resnet50.airpb模型
--model=resnet50.pb
# onnx模型
--model=resnet50.onnx--framework

atc --model=resnet50.onnx --framework=5 --output=resnet50 -
-input_format=NCHw –
input_shape=“actual_input_1:1,3,224,224”–

6.4.2 framework

填写原始网络模型框架,参数取值与使用参考示例如下:

#取值为O时,即为Caffe框架网络模型,模型包括后缀为prototxt的模型文件和后缀为caffemodel的权重文件
--framework=0
#取值为1时,即为MindSpore框架网络模型,仅支持后缀为*.air的模型文件。
--framework=1
#取值为3时,即为TensorFlow框架网络模型,只支持尾缀为pb的模型文件
--framework=3
#取值为5时,即为ONNX格式网络模型,仅支持ai.onnx算子域中opset v11版本的算子,用户也可以将其他opset版本的算子(比如opset v9),通过PyTorch转换成opset v11版本的ONNx算子;而使用PyTorch训练出的pth模型需要转化为ONNX格式的模型,才能进行模型转换。
--framework=5

6.4.3 --input_format

填写输入数据格式,Caffe、ONNX默认为NCHW; TensorFlow默认为NHWC。该参数一般不需要填写,直接使用默认值即可,但是该参数存在以下限制:
1.如果TensorFlow模型是通过ONNX模型转换工具输出的,则该参数必填,且值为NCHW.2.当原始框架为MindSpore时,只支持配置为NCHW.
3.如果模型转换时开启AIPP,在进行推理业务时,输入图片数据要求为NHWC排布,该场景下最终与AIPP连接的输入节点的格式被强制
改成NHWC,可能与atc模型转换命令中–input_format参数指定的格式不—致。


# input format参数填写示例
--input_format=NCHw

#input shape参数填写示例
--input_shape="actual_input_1:1,3,224,224"

6.4.4 --output

当进行开源框架的网络模型转换时,填写输出的离线模型的路径以及文件名。参数使用参考示例如下:

#指定目录
--output=$HOME/resnet50#当前目录
--output=resnet50

换后的模型文件名以该参数指定的为准,自动以.om后缀结尾,以上示例最终生成的模型为resnet50.om。

6.4.5 --insert_op_conf

填写插入算子的配置文件路径与文件名,例如aipp预处理算子。
本章节中主要使用场景为插入aipp预处理算子,使用该参数后,则输入数据类型为UINT8。

--insert_op_conf=aipp.cfg

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

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

相关文章

基于51单片机的电子琴Protues仿真设计

一、设计背景 基于51单片机的电子琴是一款由51单片机控制器、音频模块和硬件阵列组成的数字化乐器。它可以模拟各种乐器的音效,同时也具有许多常规电子琴所没有的高级功能。 首先,这种电子琴是以数字信号处理技术为基础的。通过软件编程,将…

【JUC】Java对象内存布局和对象头

【JUC】Java对象内存布局和对象头 文章目录 【JUC】Java对象内存布局和对象头1. 对象的内存布局1.1 对象头1.1.1 对象标记1.1.2 类元信息/类型指针 1.2 实例数据1.3 对齐填充 2. 测试 1. 对象的内存布局 在 HotSpot 虚拟机里,对象在堆内存中的存储布局可以划分为三…

MSP432学习笔记6:中断优先级管理

所用型号:MSP432P401R 今日继续我的MSP432电赛速通之路。 主要学习的是:中断优先级管理、软件挂起中断、屏蔽中断优先级 目录 MSP432具有8级可编程的中断优先级。 中断优先级管理库函数: 软件挂起中断: 屏蔽中断优先级&#…

微信小程序富文本插件mp-html

使用场景: 偏偏后端传过来的数据又要用到富文本标签,然后找了很多组件,要不就是下载量低,要不就是里面功能太少,只有这款mp-html组件深得我心,里面功能丰富,简单实用,真的绝绝子&…

DMA直接存储器存取

目录 存储器映像 寄存器 DMA框图 DMA基本结构 DMA请求映射 数据宽度与对齐 ​编辑 存储器到存储器 ​编辑 外设与存储器 来源b站江科大stm3入门教程 存储器映像 寄存器 DMA框图 AHB从设备(DMA自身的寄存器)连接在总线矩阵右侧的AHB总线上 所以DMA既…

LeetCode:509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

509. 斐波那契数 题目 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),…

无底线内卷?谈谈如何在职场中实现人生巅峰

在竞争激烈的职场上,各种职场难题时常出现,如何进行有效沟通、如何应对工作压力、如何提升职业能力等,这都是需要去克服的问题。 1. 尝试人际沟通A:TO 企业B:TO 员工 2. 适应工作压力A:原因B:TO…

ROS2 入门应用 创建启动文件(C++)

ROS2 入门应用 创建启动文件(C) 1. 创建功能包2. 添加依赖关系3. 添加编译信息4. 创建启动文件4.1. Python4.2. XML4.3. YAML 5. 编译和运行 1. 创建功能包 用Python、XML或YAML编写的启动文件可以启动和停止不同的节点,以及触发和处理各种事…

法规标准-GB/T 39323标准解读(2020版)

GB/T 39323是做什么的? GB/T 39323全称为乘用车车道保持辅助(LKA)系统性能要求及试验方法,其中主要描述了LKA系统的功能要求及测试要求 一般要求 1.系统应能在状态良好的车道边线环境下识别车辆与车道边线的相对位置,辅助驾驶员将车辆保持…

76.建立一个主体样式第二部分

上节课的时候我们完成的页面是这个样子! ● 之后我们通过绝对定位来解决位置定位的问题 .header-container {width: 1200px;margin: 0 auto;position: absolute;left: 50%;top: 50%; }header {height: 100vh;background-color: orange;position: relative; }● 之…

通过Python的PyPDF2库提取pdf中的文字

文章目录 前言一、PyPDF2库是什么?二、安装PyPDF2库三、查看PyPDF2库版本四、使用方法1.引入库2.定义pdf路径3.打开PDF文件4.创建PDF阅读器对象5.获取PDF文件中的页数6.遍历每一页7.获取当前页内容8.提取当前页文本9.打印当前页文本10.效果 总结 前言 一、PyPDF2库…

【2023 · CANN训练营第一季】初识新一代开发者套件 Atlas 200I DK A2---介绍Atlas 200I DK A2的基本使用

1.Atlas 200I DK A2开发者套件板介绍 应用场景:昇腾AI开发者上手学习、实践创新场景,提供配套软硬件 关键特性规格描述形态135mm120mm44mmAI 算力整数精度(INT8):8 TOPS 半精度(FP16): 4 TFLOPS摄像头接口2* MIPI - CSI 支持两个…

研报精选230521

目录 【行业230521山西证券】煤炭行业周报:量减需增进口倒挂,煤炭价格企稳反弹 【行业230521东吴证券】大炼化周报:油价弱势震荡,下游表现疲软 【行业230521东海证券】4月社零报告专题:低基数下创新高,实质…

MyBatisX

文章目录 MyBatisXMybatis带参方法 动态条件查询多条件查询多条件-动态条件查询ifchoose(when,otherwise) 添加添加-主键返回 修改修改全部字段修改动态字段 删除MyBatis参数传递多个参数单个参数 MyBatis注解完成增删改查 MyBatisX pojo类中的属性名要和数据库中的一致才能实现…

ARM学习笔记_2 模式,寄存器,流水线

ARM arm体积小功耗低性能高,支持thumb ARM双指令集,兼容8/16位器件;大量使用寄存器,指令定长,寻址简单。 ARM是32位架构,Word 32bit, half Word 16bit. 模式 用户模式是用户程序的模式&#…

RK3568平台开发系列讲解(驱动基础篇)RK平台IR的使用

🚀返回专栏总目录 文章目录 一、红外遥控配置二、内核驱动2.1 DTS 定义键值表2.2 内核用户码和IR键值的获取2.3 编译 IR 驱动进内核2.4 Android 键值映射三、IR 波形沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对RK IR的使用进行学习。 一、红外遥控配置 …

解决插件加载动态库的冲突问题

最近发给用户的插件在使用过程中,UI界面一直未能加载成功,分析后发现和其他的插件发生冲突了,同时用到了一个UI库:MahApps.Metro(自己改造过的版本)。 分析过程中使用ProcessExplorer查看Revit运行过程中所…

二叉树最大宽度-广度优先方式 -队列应用_20230520

二叉树最大宽度-广度优先(BFS)方式 -队列应用 前言 上一遍介绍了求解二叉树最大宽度的DFS解法,求解的核心主要是对根节点、左孩子及右孩子的宽度取最大值,通过赋值给根节点后,然后通过递归栈层层返回,当返回至树的根节点上的时候…

数字图像处理—图像分割算法详解(边缘检测、阈值处理)

前言 令R表示一幅图像占据的整个空间区域。图像分割:把R分为n个子区域R1,R2,…,Rn的过程,满足 点、线、边缘检测 背景知识 一阶导数的近似要求: (1)在恒定灰度区域必须为零 (2)在灰度台阶或…

【连续介质力学】张量值张量函数

张量值张量函数 张量值张量函数有以下类型:标量,向量和高阶张量 标量值张量函数: Ψ Ψ ( T ) det ⁡ T Ψ Ψ ( T , S ) T : S \Psi \Psi(T) \det T \\ \Psi \Psi(T,S) T:S ΨΨ(T)detTΨΨ(T,S)T:S 其中, T , S T, S …