每日快报!【2023 · CANN训练营第一季】- 应用开发深入讲解 第四节 学习笔记
2023-05-17 06:53:04 哔哩哔哩

一、学习目标

1.了解DVPP+推理端到端样例的执行流程和原理

2.学会如何分析模型及CV样例如何开发

二、样例调试

1.日志


(资料图)

(1)运行应用程序后,若出现报错或异常,需获取日志进一步定位问题。日志文件的默认目录为SHOME/ascend/log,·可通过环境变量指定日志文件的落盘路径,但需确保该目录为任意有读写权限的目录。

可通过环境变量将日志打屏显示

(2)日志格式如下:

(3)日志级别设置

日志模块根据系统设置的日志级别,记录不同详细程度的内容,满足不同系统维护需求。

设置全局日志级别,例如:

设置模块日志级别,例如:

开启Event日志:

2.接口调用逻辑问题

3.软件约束问题

4. 输入数据问题

三、样例结构

结合sampleResnetDVPP样例进行分析

样例流程如图:

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

四、模型分析

原始模型及输入输出分析是应用开发中极为关键的一环,也是最难的一环,模型分析的正确与否直接决定了样例是否可以正确编写,以及编写后是否能正常输出。

主要包含:原始模型获取、原始模型输入分析、预处理分析、原始模型输出分析及后处理分析。

五、样例编写

1.模型转换

经过上一节的分析,需要使用aipp对数据进行预处理,具体需要实现的有:

(1)将输入从YUV转换成RGB格式

(2)输入数据归一化,均值为[0.485255,0.456255,0.406*255],系数为[1/0.229255,1/0.224255,1/0.225*255]

因此aipp配置为

2.资源初始化

(1)AscendCL初始化

使用AscendCL接口开发应用时,必须先初始化AscendCL,否则可能会导致后续系统内部资源初始化出错,进而导致其它业务异常。

(2)运行管理资源申请与释放

初始化AscendCL后,需要按照固定流程申请运行管理资源。

(3)DVPP初始化

代码需要使用DVPP进行JpegD和Resize操作,由于这些操作中包含一些可复用的资源,所以在初始化中直接申请,避免程序运行过程中反复申请。     

/

(4) 模型初始化

模型操作中存在可复用的操作,可以在初始化过程中进行操作。

3.输入数据处理

输入数据处理使用的是DVPP,主要为图片数据加载->JPEGD解码->VPC处理。

4.模型推理及数据后处理

5.资源释放

当程序运行结束后,需要将初始化的资源全部释放

六、样例编译运行

编写CMakeList并进行编译运行。

相关新闻: