CANN/asc-devkit SetAippFunctions API

📅 2026/7/16 11:04:12
CANN/asc-devkit SetAippFunctions API
SetAippFunctions【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品AI Core支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品不支持功能说明设置图片预处理AIPPAI Core pre-process相关参数。和LoadImageToLocal接口配合使用。设置后调用LoadImageToLocal接口可在搬运过程中完成图像预处理操作包括数据填充、通道交换、单行读取、数据类型转换、通道填充、色域转换。调用SetAippFunctions接口时需传入源图片在Global Memory上的矩阵、源图片的图片格式。数据填充在图片HW方向上padding。分为如下几种模式模式0常量填充模式padding区域各位置填充为常数支持设置每个通道填充的常数。该模式下仅支持左右padding不支持上下padding。图1常量填充模式图片中间的绿色区域表示原始数据其他为padding数据![](https://raw.gitcode.com/cann/asc-devkit/raw/1cd1d1192e01ae4a8684cd07552c35e13e5c4bdf/docs/zh/api/figures/常量填充模式图片中间的绿色区域表示原始数据-其他为padding数据.png 常量填充模式图片中间的绿色区域表示原始数据——其他为padding数据?utm_sourcegitcode_repo_files)模式1行列填充模式padding区域各位置填充行/列上最邻近源图片位置的数据。图2行列填充模式图片中间的绿色区域表示原始数据其他为padding数据![](https://raw.gitcode.com/cann/asc-devkit/raw/1cd1d1192e01ae4a8684cd07552c35e13e5c4bdf/docs/zh/api/figures/行列填充模式图片中间的绿色区域表示原始数据-其他为padding数据.png 行列填充模式图片中间的绿色区域表示原始数据——其他为padding数据?utm_sourcegitcode_repo_files)模式2块填充模式按照padding的宽高从源图片拷贝数据块进行padding区域填充。图3块填充模式图片中间的绿色区域表示原始数据其他为padding数据![](https://raw.gitcode.com/cann/asc-devkit/raw/1cd1d1192e01ae4a8684cd07552c35e13e5c4bdf/docs/zh/api/figures/块填充模式图片中间的绿色区域表示原始数据-其他为padding数据.png 块填充模式图片中间的绿色区域表示原始数据——其他为padding数据?utm_sourcegitcode_repo_files)模式3镜像块填充模式按照padding的宽高从源图片拷贝数据块的镜像进行padding区域填充。图4镜像块填充模式图片中间的绿色区域表示原始数据其他为padding数据![](https://raw.gitcode.com/cann/asc-devkit/raw/1cd1d1192e01ae4a8684cd07552c35e13e5c4bdf/docs/zh/api/figures/镜像块填充模式图片中间的绿色区域表示原始数据-其他为padding数据.png 镜像块填充模式图片中间的绿色区域表示原始数据——其他为padding数据?utm_sourcegitcode_repo_files)通道交换将图片通道进行交换。对于RGB888格式支持交换R和B通道。对于YUV420SP格式支持交换U和V通道。对于XRGB8888格式支持X通道后移XRGB→RGBX和交换R和B通道。单行读取源图片中仅读取一行。[!NOTE]说明 调用数据搬运接口时若开启了单行读取设置的目的图片高度参数将无效如LoadImageToLocal接口的loadImageToLocalParams.vertSize。数据类型转换转换像素的数据类型支持uint8_t转换为int8_t或half。当uint8_t转换成int8_t的时候输出数据范围限制在[-128127]。// 例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][!NOTE]说明 转换后的数据类型由模板参数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、XRGB8888templatetypename T, typename U __aicore__ inline void SetAippFunctions(const GlobalTensorT src0, AippInputFormat format, AippParamsU config)输入图片格式为YUV420 Semi-Planartemplatetypename T, typename U __aicore__ inline void SetAippFunctions(const GlobalTensorT src0, const GlobalTensorT src1, AippInputFormat format, AippParamsU config)参数说明表1模板参数说明参数名称含义T输入的数据类型需要与format中设置的数据类型保持一致。U输出的数据类型需要在搬运接口配置同样的数据类型如LoadImageToLocal的dstLocal参数数据类型。•如果不使能数据类型转换功能需要与输入类型保持一致•如果使能数据类型转换功能需要与期望转换后的类型保持一致。表2参数说明参数名称输入/输出含义src0输入源图片在Global Memory上的矩阵。源图片格式为YUV420SP时表示Y维度在Global Memory上的矩阵。src1输入源图片格式为YUV420SP时表示UV维度在Global Memory上的矩阵。源图片格式为其他格式时该参数无效。format输入源图片的图片格式。AippInputFormat为枚举类型取值为AippInputFormat::YUV420SP_U8图片格式为YUV420 Semi-Planar数据类型为uint8_tAippInputFormat::XRGB8888_U8图片格式为XRGB8888数据类型为uint8_tAippInputFormat::RGB888_U8图片格式为RGB888数据类型为uint8_tAippInputFormat::YUV400_U8图片格式为YUV400数据类型为uint8_tenum class AippInputFormat : uint8_t {YUV420SP_U8 0,XRGB8888_U8 1,RGB888_U8 4,YUV400_U8 9,};config输入图片预处理的相关参数类型为AippParams结构体具体定义为templatestruct AippParams {AippPaddingParams paddingParams;AippSwapParams swapParams;AippSingleLineParams singleLineParams;AippDataTypeConvParams dtcParams;AippChannelPaddingParams cPaddingParams;AippColorSpaceConvParams cscParams;};AippParams结构体内各子结构体定义如下•数据填充功能相关参数说明见表3。templatestruct AippPaddingParams {uint32_t paddingMode;T paddingValueCh0;T paddingValueCh1;T paddingValueCh2;T paddingValueCh3;};•通道交换功能相关参数说明见表4。struct AippSwapParams {bool isSwapRB;bool isSwapUV;bool isSwapAX;};•单行读取功能相关参数说明见表5。struct AippSingleLineParams {bool isSingleLineCopy;};•数据类型转换功能相关参数说明见表6。struct AippDataTypeConvParams {uint8_t dtcMeanCh0{ 0 };uint8_t dtcMeanCh1{ 0 };uint8_t dtcMeanCh2{ 0 };half dtcMinCh0{ 0 };half dtcMinCh1{ 0 };half dtcMinCh2{ 0 };half dtcVarCh0{ 1.0 };half dtcVarCh1{ 1.0 };half dtcVarCh2{ 1.0 };uint32_t dtcRoundMode{ 0 };};•通道填充功能相关参数说明见表7。templatestruct AippChannelPaddingParams {uint32_t cPaddingMode;T cPaddingValue;};•色域转换功能相关参数说明见表8。struct AippColorSpaceConvParams {bool isEnableCsc;int16_t cscMatrixR0C0;int16_t cscMatrixR0C1;int16_t cscMatrixR0C2;int16_t cscMatrixR1C0;int16_t cscMatrixR1C1;int16_t cscMatrixR1C2;int16_t cscMatrixR2C0;int16_t cscMatrixR2C1;int16_t cscMatrixR2C2;uint8_t cscBiasIn0;uint8_t cscBiasIn1;uint8_t cscBiasIn2;uint8_t cscBiasOut0;uint8_t cscBiasOut1;uint8_t cscBiasOut2;};表3AippPaddingParams结构体内参数说明参数名称输入/输出含义paddingMode输入padding的模式取值范围[0, 3]默认值为0。0常数填充模式此模式仅支持左右填充。1行列拷贝模式。2块拷贝模式。3镜像块拷贝模式。paddingValueCh0输入padding区域中channel0填充的数据仅常数填充模式有效数据类型为T默认值为0。paddingValueCh1输入padding区域中channel1填充的数据仅常数填充模式有效数据类型为T默认值为0。paddingValueCh2输入padding区域中channel2填充的数据仅常数填充模式有效数据类型为T默认值为0。paddingValueCh3输入padding区域中channel3填充的数据仅常数填充模式有效数据类型为T默认值为0。表4AippSwapParams结构体内参数说明参数名称输入/输出含义isSwapRB输入对于RGB888、XRGB8888格式是否交换R和B通道。默认值为false。isSwapUV输入对于YUV420SP格式是否交换U和V通道。默认值为false。isSwapAX输入对于XRGB8888格式是否将X通道后移即XRGB→RGBX。默认值为false。表5AippSingleLineParams结构体内参数说明参数名称输入/输出含义isSingleLineCopy输入是否开启单行读取模式。开启后仅从源图片读取一行。默认值为false。表6AippDataTypeConvParams结构体内参数说明参数名称输入/输出含义dtcMeanCh0输入计算公式内的mean值channel0数据类型为uint8_t默认值为0。dtcMeanCh1输入计算公式内的mean值channel1数据类型为uint8_t默认值为0。dtcMeanCh2输入计算公式内的mean值channel2数据类型为uint8_t默认值为0。dtcMinCh0输入计算公式内的min值channel0数据类型为half默认值为0。Atlas 200I/500 A2 推理产品不支持配置该参数。dtcMinCh1输入计算公式内的min值channel1数据类型为half默认值为0。Atlas 200I/500 A2 推理产品不支持配置该参数。dtcMinCh2输入计算公式内的min值channel2数据类型为half默认值为0。Atlas 200I/500 A2 推理产品不支持配置该参数。dtcVarCh0输入计算公式内的var值channel0数据类型为half默认值为1.0。dtcVarCh1输入计算公式内的var值channel1数据类型为half默认值为1.0。dtcVarCh2输入计算公式内的var值channel2数据类型为half默认值为1.0。dtcRoundMode输入控制dtc做数据类型转换的模式数据类型为uint32_t默认值为0。0四舍五入到最接近的整数值C语言round。1四舍五入到最接近的偶数C语言rint。[!NOTE]说明 参数dtcRoundMode仅在Atlas 200I/500 A2 推理产品支持配置。表7AippChannelPaddingParams结构体内参数说明参数名称输入/输出含义cPaddingMode输入channel padding的类型取值范围为[0, 1]默认值为0。0填充到32B。即输出数据类型U为int8_t、uint8_t时填充到32通道为half时填充到16通道。1填充到4通道。cPaddingValue输入channel padding填充的值数据类型为T默认值为0。表8AippColorSpaceConvParams结构体内参数说明参数名称输入/输出含义isEnableCsc输入是否开启色域转换功能默认值为false。cscMatrixR0C0输入色域转换矩阵cscMatrix[0][0]。cscMatrixR0C1输入色域转换矩阵cscMatrix[0][1]。cscMatrixR0C2输入色域转换矩阵cscMatrix[0][2]。cscMatrixR1C0输入色域转换矩阵cscMatrix[1][0]。cscMatrixR1C1输入色域转换矩阵cscMatrix[1][1]。cscMatrixR1C2输入色域转换矩阵cscMatrix[1][2]。cscMatrixR2C0输入色域转换矩阵cscMatrix[2][0]。cscMatrixR2C1输入色域转换矩阵cscMatrix[2][1]。cscMatrixR2C2输入色域转换矩阵cscMatrix[2][2]。cscBiasIn0输入RGB转YUV偏置cscBiasIn[0]。YUV转RGB时无效。cscBiasIn1输入RGB转YUV偏置cscBiasIn[1]。YUV转RGB时无效。cscBiasIn2输入RGB转YUV偏置cscBiasIn[2]。YUV转RGB时无效。cscBiasOut0输入YUV转RGB偏置cscBiasOut0[0]。RGB转YUV时无效。cscBiasOut1输入YUV转RGB偏置cscBiasOut1[1]。RGB转YUV时无效。cscBiasOut2输入YUV转RGB偏置cscBiasOut2[2]。RGB转YUV时无效。返回值说明无约束说明src0、src1在Global Memory上的地址对齐要求如下图片格式src0src1YUV420SP必须2Bytes对齐必须2Bytes对齐XRGB8888必须4Bytes对齐-RGB888无对齐要求-YUV400无对齐要求-对于XRGB输入格式的数据芯片会默认丢弃第四个通道的数据输出RGB格式的数据。如果X在channel0的场景下X通道后移功能必须使能将输入通道转换为RGBX反之如果X在channel3的场景下X通道后移功能必须不使能以输出RGB格式的数据。调用示例SetAippFunctions需与LoadImageToLocal接口配合使用完整调用示例含搬运过程请参考LoadImageToLocal的调用示例。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考