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进一步做色域转换、抠图、填充等。
AIPP&DVPP

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

  • DVPP功能模块
    DVPP

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

概念与接口

Host&Device

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

AscendCL初始化与去初始化

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

1
2
3
4
5
6
7
// 初始化
const char * aclConfigPaht = "../src/acl.json";
aclError ret = aclInit(aclConfigPath);


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

运行管理资源

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

同步与异步

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

数据类型的操作接口

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

接口

通用接口

  • 申请与释放内存
    acldvppMalloc

  • 创建与释放通道

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

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

JPEGD图片解码

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

  • 调用流程
    pipeline
  • 接口说明
    apiintro
    apiintro

VPC视觉预处理

  • 支持功能
    vpc
  • 调用流程
    pipeline
  • 接口说明
    resize
    resize2
    crop
    crop2
    cropandpaste

PNGD图片解码

  • 支持功能
    pngd
  • 调用流程
    pipeline
  • 接口说明
    pngdecode
    info

JPEGD+VPC

JPEGD+VPC
JPEGD+VPC