SetAippFunctions
产品支持情况
功能说明
设置图片预处理(AIPP,AI core pre-process)相关参数。和LoadImageToLocal接口配合使用。设置后,调用LoadImageToLocal接口可在搬运过程中完成图像预处理操作:包括数据填充,通道交换,单行读取、数据类型转换、通道填充、色域转换。调用SetAippFunctions接口时需传入源图片在Global Memory上的矩阵、源图片的图片格式。
-
数据填充:在图片HW方向上padding。分为如下几种模式:
-
模式0:常量填充模式,padding区域各位置填充为常数,支持设置每个通道填充的常数。该模式下仅支持左右padding,不支持上下padding。
-
模式1:行列填充模式,padding区域各位置填充行/列上最邻近源图片位置的数据。
-
模式2:块填充模式,按照padding的宽高,从源图片拷贝数据块进行padding区域填充。
-
模式3:镜像块填充模式,按照padding的宽高,从源图片拷贝数据块的镜像进行padding区域填充。
-
-
通道交换:将图片通道进行交换。
对于RGB888格式,支持交换R和B通道。
对于YUV420SP格式,支持交换U和V通道。
对于XRGB8888格式,支持X通道后移(XRGB->RGBX)、支持交换R和B通道。
-
单行读取:源图片中仅读取一行。
说明
调用数据搬运接口时,开启单行读取后设置的目的图片高度参数无效,如LoadImageToLocal接口的loadImageToLocalParams.vertSize。
-
数据类型转换:转换像素的数据类型,支持uint8_t转换为int8_t或half。当uint8_t转换成int8_t的时候,输出数据范围限制在[-128, 127]。
// 例1:实现uint8_t ->int8_t 的类型转换,同时实现零均值化:设置每个通道mean值为该通道所有数据的平均值(min和var值无效,不用设置)。 output[i][j][k] = input[i][j][k] - mean[k] // 例2:实现uint8_t -> fp16 的类型转换,同时实现归一化:设置每个通道mean值为该通道所有数据的平均值,min值为该通道所有数据零均值化后的最小值,var值为该通道所有数据的最大值减最小值的倒数。 uint8_t -> fp16: output[i][j][k] = (input[i][j][k] - mean[k] - min[k]) * var[k]说明
转换后的数据类型是由模板参数U配置,U为uint8_t时数据类型转换功能不生效。 调用数据搬运接口时,目的Tensor的数据类型需要与本接口输出数据类型保持一致,如LoadImageToLocal的dstLocal参数的数据类型。
-
通道填充:在图片通道方向上padding。默认为模式0。
模式0:将通道padding至32Bytes。即输出数据类型为uint8_t/int8_t时,padding至32通道;输出数据类型为fp16时,padding至16通道。
模式1:将通道padding至4通道。
-
色域转换:RGB格式转换为YUV格式,或YUV模式转换为RGB格式。


函数原型
-
输入图片格式为YUV400、RGB888、XRGB8888
template<typename T, typename U> __aicore__ inline void SetAippFunctions(const GlobalTensor<T>& src0, AippInputFormat format, AippParams<U> config) -
输入图片格式为YUV420 Semi-Planar
template<typename T, typename U> __aicore__ inline void SetAippFunctions(const GlobalTensor<T>& src0, const GlobalTensor<T>& src1, AippInputFormat format, AippParams<U> config)
参数说明
表 1 模板参数说明
输出的数据类型,需要在搬运接口配置同样的数据类型,如LoadImageToLocal的dstLocal参数数据类型。
|
表 2 参数说明
源图片的图片格式。AippInputFormat为枚举类型,取值为: AippInputFormat::YUV420SP_U8:图片格式为YUV420 Semi-Planar,数据类型为uint8_t AippInputFormat::XRGB8888_U8:图片格式为XRGB8888,数据类型为uint8_t AippInputFormat::RGB888_U8:图片格式为RGB888,数据类型为uint8_t AippInputFormat::YUV400_U8:图片格式为YUV400,数据类型为uint8_t enum class AippInputFormat : uint8_t { YUV420SP_U8 = 0, XRGB8888_U8 = 1, RGB888_U8 = 4, YUV400_U8 = 9, }; |
||
图片预处理的相关参数,类型为AippParams,结构体具体定义为: template <typename T>
struct AippParams {
AippPaddingParams<T> paddingParams;
AippSwapParams swapParams;
AippSingleLineParams singleLineParams;
AippDataTypeConvParams dtcParams;
AippChannelPaddingParams<T> cPaddingParams;
AippColorSpaceConvParams cscParams;
};
|
表 3 AippPaddingParams结构体内参数说明
表 4 AippSwapParams结构体内参数说明
表 5 AippSingleLineParams结构体内参数说明
表 6 AippDataTypeConvParams结构体内参数说明
表 7 AippChannelPaddingParams结构体内参数说明
channel padding的类型,取值范围为[0, 1],默认值为0。 |
||
表 8 AippColorSpaceConvParams结构体内参数说明
约束说明
-
src0、src1在Global Memory上的地址对齐要求如下:
-
对于XRGB输入格式的数据,芯片在处理的时候会默认丢弃掉第四个通道的数据输出RGB格式的数据,所以如果是X在channel0的场景下,为了达成上述目的,X通道后移的功能必须使能,将输入的通道转换为RGBX;反之如果是X在channel3的场景下,X通道后移的功能必须不使能以输出RGB格式的数据。
返回值说明
无



