【CANN训练营第三季】数字视觉预处理
AI基础
用于图像视觉的编解码,将从网络或终端设备获取的视觉数据,进行预处理以实现格式和精度转换等要求,之后提供给AI计算引擎。
而在CANN中开发应用使用的DSL就是ACL(AscendCL),它提供了一套在昇腾平台上开发深度学习网络推理应用的C语言API库(Python为PyACL)。
ACL的基本功能分为两个方面,一个是运行资源管理,另一个为内存管理。运行资源管理可以指定硬件资源、创建管理对象和创建维护执行顺序的Stream;内存管理体现在各阶段申请数据的内存、释放内存和通过内存拷贝实现数据传输。
<img src=“/images/cann-intro3/2022-12-15-21-11-13.png” >
数据预处理
数据预处理是指当获取的源图或源视频不符合网络模型输入时,需要将源图或源视频处理为符合模型要求的图或视频。一般包括图或视频的编解码、色域转换、旋转缩放、剪裁等。
CANN提供了两套数据预处理方式:AIPP和DVPP。在使用时一般先使用DVPP对图片或视频进行解码、抠图、缩放等基本处理,再使用AIPP进一步做色域转换、抠图、填充等。
-
DVPP+AIPP处理流程,其中DVPP在DVPP上运行,AIPP在AI Core上处理。
-
DVPP功能模块
-
硬件对图片宽高的要求存在宽对齐和高对齐,即对图片宽高的数值有倍数要求。
概念与接口
Host&Device
在昇腾应用场景中,服务器CPU和内存是Host侧,推理卡是Device侧。数据在Host侧收集,发送到Device侧供NPU进行推理,推理结束后,将结果从Device侧发送回Host侧进行后处理,输出结果。
AscendCL初始化与去初始化
一个应用开发过程为:AscendCL初始化 -> 运行管理资源申请 -> 执行业务 -> 运行管理资源释放 -> AscendCL去初始化
1 | // 初始化 |
运行管理资源
一个用户线程对应一个ctx,对应一个默认的stream,一个ctx属于一个唯一的device。
一个ctx可以创建多个stream,显式创建需要显式释放,
同步与异步
同步与异步的区别在于是否会阻塞当前线程。
数据类型的操作接口
是指创建数据类型、参数值类型、销毁数据类型的一系列接口,目的是减少兼容性问题。
接口
通用接口
-
申请与释放内存
-
创建与释放通道
- 创建及销毁通道描述信息
- 创建及销毁通道
- 创建及销毁通道描述信息
-
创建于释放图片描述信息
设置图片描述参数的接口
JPEGD图片解码
此模块作用是将jpeg不同的编码格式,解码输出不同的格式
- 调用流程
- 接口说明
VPC视觉预处理
- 支持功能
- 调用流程
- 接口说明
PNGD图片解码
- 支持功能
- 调用流程
- 接口说明
JPEGD+VPC