【CANN训练营第三季】数字视觉预处理
收藏回复举报
【CANN训练营第三季】数字视觉预处理
发表于2022-12-20 14:13:26
0 查看

AI基础

用于图像视觉的编解码,将从网络或终端设备获取的视觉数据,进行预处理以实现格式和精度转换等要求,之后提供给AI计算引擎。

而在CANN中开发应用使用的DSL就是ACL(AscendCL),它提供了一套在昇腾平台上开发深度学习网络推理应用的C语言API库(Python为PyACL)。 ACL的基本功能分为两个方面,一个是运行资源管理,另一个为内存管理。运行资源管理可以指定硬件资源、创建管理对象和创建维护执行顺序的Stream;内存管理体现在各阶段申请数据的内存、释放内存和通过内存拷贝实现数据传输。

true

数据预处理

数据预处理是指当获取的源图或源视频不符合网络模型输入时,需要将源图或源视频处理为符合模型要求的图或视频。一般包括图或视频的编解码、色域转换、旋转缩放、剪裁等。 CANN提供了两套数据预处理方式:AIPP和DVPP。在使用时一般先使用DVPP对图片或视频进行解码、抠图、缩放等基本处理,再使用AIPP进一步做色域转换、抠图、填充等。 true

  • DVPP+AIPP处理流程,其中DVPP在DVPP上运行,AIPP在AI Core上处理。 true

  • DVPP功能模块 true

  • 硬件对图片宽高的要求存在宽对齐和高对齐,即对图片宽高的数值有倍数要求。

概念与接口

Host&Device

true 在昇腾应用场景中,服务器CPU和内存是Host侧,推理卡是Device侧。数据在Host侧收集,发送到Device侧供NPU进行推理,推理结束后,将结果从Device侧发送回Host侧进行后处理,输出结果。

AscendCL初始化与去初始化

一个应用开发过程为:AscendCL初始化 -> 运行管理资源申请 -> 执行业务 -> 运行管理资源释放 -> AscendCL去初始化

// 初始化
const char * aclConfigPaht = "../src/acl.json";
aclError ret = aclInit(aclConfigPath);


// 去初始化
ret = aclFinalize();

运行管理资源

true 一个用户线程对应一个ctx,对应一个默认的stream,一个ctx属于一个唯一的device。 一个ctx可以创建多个stream,显式创建需要显式释放, true

同步与异步

同步与异步的区别在于是否会阻塞当前线程。 true

数据类型的操作接口

是指创建数据类型、参数值类型、销毁数据类型的一系列接口,目的是减少兼容性问题。 true

接口

通用接口

  • 申请与释放内存 true

  • 创建与释放通道

    1. 创建及销毁通道描述信息 true
    2. 创建及销毁通道 true
  • 创建于释放图片描述信息 true

    设置图片描述参数的接口 true

JPEGD图片解码

此模块作用是将jpeg不同的编码格式,解码输出不同的格式 true

  • 调用流程 true
  • 接口说明 true true

VPC视觉预处理

  • 支持功能 true
  • 调用流程 true
  • 接口说明 true true true true true

PNGD图片解码

  • 支持功能 true

  • 调用流程 true

  • 接口说明 true

    true

JPEGD+VPC

true true

我要发帖子