【2023 · CANN训练营第一季】笔记
模型离线推理步骤:
步骤解析如下:
1、Host&Device内存管理与数据传输:Host&Device上的内存申请与释放,内存间的相互拷贝;
2、模型加载:将离线的om文件加载到Device上;在样例的资源初始化模块中进行。
3、模型输入输出准备:根据离线om的输入输出,在Device上申请好模型的输入输出内存;在样例的资源初始化模块中进行。
4、执行推理:当模型的输入内存获取到有效数据后,便可以调用AscendCL接口执行模型推理,推理完成后结果生成到输出内存中;在样例的模型推理模块中进行。
5、输出解析:使用AscendCL接口,将模型输出数据从特定格式中解析出来;在输出数据处理模块中进行。 下面将按步骤进行说明。
AIPP(Artificial Intelligence Pre-Processing)
AIPP(Artificial Intelligence Pre-Processing)人工智能预处理,用于在AI Core上完成数据预处理,包括改变图像尺寸、色域转换(转换图像格式)、减均值/乘系数(改变图像像素),数据预处理之后再进行真正的模型推理。
该模块功能与DVPP相似,都是用于图像数据预处理,但与DVPP相比,由于DVPP各组件基于处理速度和处理占有量的考虑,对输入、输出有特殊的限制,如对输出图片的宽高有对齐要求,且其输出格式通常为YUV420SP等格式。这样的设定虽在视频分析的场景下有非常广阔的输入,但深度学习模型的输入通常为RGB或BRG,且输入图片尺寸各异,因此ATC工具流程中提供了AIPP功能模块。
静态AIPP:模型转换时设置AIPP模式为静态,同时设置AIPP参数,模型生成后,AIPP参数值被保存在离线模型中,每次模型推理过程采用固定的AIPP预处理参数进行处理,而且在之后的推理过程中无法通过业务代码进行直接的修改。
如果使用静态AIPP方式,多batch情况下共用同一份AIPP参数。
动态AIPP:模型转换时设置AIPP模式为动态,每次在执行推理前,根据需求动态修改AIPP参数值,然后在模型执行时可使用不同的AIPP参数。动态AIPP参数值会根据需求在不同的业务场景下选用合适的参数(如不同摄像头采用不同的归一化参数,输入图片格式需要兼容YUV420和RGB等)。
AscendCL(Ascend Computing Language)
是一套用于在昇腾平台上开发深度神经网络推理应用的C语言API库,提供运行资源管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等API,能够实现利用昇腾硬件计算资源、在昇腾CANN平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。
由于DVPP(Digital Video Pre-Processor)图像处理单元硬件上的限制,调用AscendCL提供的媒体数据处理接口时,输入或输出图片的格式、宽高以及内存地址需满足一定的要求,可查阅对应版本的文档。
运行管理资源:
您需要按顺序依次申请如下资源:Device、Context、Stream,确保可以使用这些资源执行运算、管理任务。
显式创建Context和Stream时,需调用aclrtDestroyStream接口释放Stream,再调用aclrtDestroyContext接口释放Context。
有运行管理资源的申请,自然也有对应的释放接口,需关注资源的释放顺序。
创建Context、Stream的方式分为隐式创建和显式创建,推荐显式,适合大型、复杂交互逻辑的应用,且便于提高程序的可读性、可维护性。
- 点赞
- 收藏
- 关注作者
评论(0)