函数:set_aipp_dtc_pixel_min
函数:set_aipp_crop_params
| C函数原型 | aclError **aclmdlSetAIPPCropParams(**aclmdlAIPP *aippParmsSet, int8_t cropSwitch,int32_t cropStartPosW, int32_t cropStartPosH, int32_t cropSizeW, int32_t cropSizeH,uint64_t batchIndex) |
|---|---|
| Python函数 | ret = acl.mdl.set_aipp_crop_params(aipp_parms_set, crop_switch, crop_start_pos_w, crop_start_pos_h, crop_size_w, crop_size_h, batch_index) |
| 函数功能 | 动态AIPP场景下,设置抠图相关的参数,同步接口。 |
| 输入说明 | aipp_parms_set:int,动态AIPP参数对象的指针地址,需提前调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据。 crop_switch:int,是否对图片执行抠图操作。取值范围: - 0:不执行抠图操作,设置为0时,则设置cropStartPosW、cropStartPosH、cropSizeW、cropSizeH参数无效。 - 1:执行抠图操作。 crop_start_pos_w:int,抠图时,坐标点起始位置在图中横向的坐标。 对于YUV420SP_U8格式的图像,参数取值要求是偶数。对于YUV422SP_U8/YUYV_U8格式的图像,参数取值要求是偶数,取值范围:[0, 4095]。 crop_start_pos_h:int,抠图时,坐标点起始位置在图中纵向的坐标。对于YUV420SP_U8格式的图像,参数取值要求是偶数,取值范围:[0, 4095]。 crop_size_w:int,抠图区域的宽度。对于YUV420SP_U8格式的图像,参数取值要求是偶数,取值范围:[1, 4096]。 crop_size_h:int,抠图区域的高度。对于YUV420SP_U8格式的图像,参数取值要求是偶数,取值范围:[1, 4096]。 batch_index:int,指定对第几个Batch上的图片执行抠图操作,默认为0,取值范围:[0, batch_size),batch_size是在调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据时设置。 |
| 返回值说明 | ret:int,错误码 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 若开启抠图功能,则通过acl.mdl.set_aipp_src_image_size接口设置的参数与通过acl.mdl.set_aipp_crop_params接口设置的参数之间必须满足以下公式: - srcImageSizeW ≥ cropSizeW + cropStartPosW - srcImageSizeH ≥ cropSizeH + cropStartPosH |
父主题: 设置动态AIPP参数
函数:set_aipp_padding_params
| C函数原型 | aclError **aclmdlSetAIPPPaddingParams(**aclmdlAIPP *aippParmsSet, int8_t paddingSwitch,int32_t paddingSizeTop, int32_t paddingSizeBottom,int32_t paddingSizeLeft, int32_t paddingSizeRight,uint64_t batchIndex) |
|---|---|
| Python函数 | ret = acl.mdl.set_aipp_padding_params(aipp_parms_set, padding_switch, padding_size_top, padding_size_bottom, padding_size_left, padding_size_right, batch_index) |
| 函数功能 | 动态AIPP场景下,设置补边相关的参数,同步接口。 |
| 输入说明 | aipp_parms_set:int,动态AIPP参数对象的指针地址,需提前调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据。 padding_switch:int,是否对图片执行补边操作。取值范围: - 0:不执行补边操作,默认为0。 - 1:执行补边操作。 padding_size_top:int,在图片上方填充的值,取值范围:[0, 32]。 padding_size_bottom:int,在图片下方填充的值,取值范围:[0, 32]。 padding_size_left:int,在图片左方填充的值,取值范围:[0, 32]。 padding_size_right:int,在图片右方填充的值,取值范围:[0, 32]。 batch_index:int,指定对第几个Batch上的图片执行补边操作,默认为0,取值范围:[0, batch_size),batch_size是在调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据时设置。 |
| 返回值说明 | ret:int,错误码 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 补边之后,图片的宽必须小于等于1080。 |
父主题: 设置动态AIPP参数
函数:set_aipp_dtc_pixel_mean
| C函数原型 | aclError **aclmdlSetAIPPDtcPixelMean(**aclmdlAIPP *aippParmsSet, int16_t dtcPixelMeanChn0, int16_t dtcPixelMeanChn1, int16_t dtcPixelMeanChn2, int16_t dtcPixelMeanChn3, uint64_t batchIndex) |
|---|---|
| Python函数 | ret = acl.mdl.set_aipp_dtc_pixel_mean(aipp_parms_set, dtc_pixel_mean_chn0, dtc_pixel_mean_chn1, dtc_pixel_mean_chn2, dtc_pixel_mean_chn3, batch_index) |
| 函数功能 | 动态AIPP场景下,设置通道的均值,同步接口。 |
| 输入说明 | aipp_parms_set:int,动态AIPP参数对象的指针地址,需提前调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据。 dtc_pixel_mean_chn0:int,通道0的均值,取值范围:[0, 255]。 dtc_pixel_mean_chn1:int,通道1的均值,取值范围:[0, 255]。 dtc_pixel_mean_chn2:int,通道2的均值,取值范围:[0, 255]。 dtc_pixel_mean_chn3:int,通道3的均值,如果只有3个通道,则该参数传默认值0。取值范围:[0, 255]。 batch_index:int,指定对第几个Batch上的图片设置通道均值,默认为0,取值范围:[0, batch_size),batch_size是在调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据时设置。 |
| 返回值说明 | ret:int,错误码 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 无 |
父主题: 设置动态AIPP参数
函数:set_aipp_dtc_pixel_min
| C函数原型 | aclError **aclmdlSetAIPPDtcPixelMin(**aclmdlAIPP *aippParmsSet, float dtcPixelMinChn0, float dtcPixelMinChn1, float dtcPixelMinChn2, float dtcPixelMinChn3, uint64_t batchIndex) |
|---|---|
| Python函数 | ret = acl.mdl.set_aipp_dtc_pixel_min(aipp_parms_set, dtc_pixel_mean_chn0, dtc_pixel_mean_chn1, dtc_pixel_mean_chn2, dtc_pixel_mean_chn3, batch_index) |
| 函数功能 | 动态AIPP场景下,设置通道的最小值,同步接口。 |
| 输入说明 | aipp_parms_set:int,动态AIPP参数对象的指针地址,需提前调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据。 dtc_pixel_mean_chn0:int,通道0的均值,取值范围:[0, 255]。 dtc_pixel_mean_chn1:int,通道1的均值,取值范围:[0, 255]。 dtc_pixel_mean_chn2:int,通道2的均值,取值范围:[0, 255]。 dtc_pixel_mean_chn3:int,通道3的均值,如果只有3个通道,则该参数传默认值0。取值范围:[0, 255]。 batch_index:int,指定对第几个Batch上的图片设置通道均值,默认为0,取值范围:[0, batch_size),batch_size是在调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据时设置。 |
| 返回值说明 | ret:int,错误码 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 无 |
父主题: 设置动态AIPP参数
函数:set_aipp_pixel_var_reci
| C函数原型 | aclError **aclmdlSetAIPPPixelVarReci(**aclmdlAIPP *aippParmsSet, float dtcPixelVarReciChn0, float dtcPixelVarReciChn1, float dtcPixelVarReciChn2, float dtcPixelVarReciChn3, uint64_t batchIndex) |
|---|---|
| Python函数 | ret = acl.mdl.set_aipp_pixel_var_reci(aipp_parms_set, dtc_pixel_var_reci_chn0, dtc_pixel_var_reci_chn1, dtc_pixel_var_reci_chn2, dtc_pixel_var_reci_chn3, batch_index) |
| 函数功能 | 动态AIPP场景下,设置通道的方差,同步接口。 |
| 输入说明 | aipp_parms_set:int,动态AIPP参数对象,需提前调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据。 dtc_pixel_var_reci_chn0:int,通道0的方差,默认值为1.0,取值范围:[-65504, 65504]。 dtc_pixel_var_reci_chn1:int,通道1的方差,默认值为1.0,取值范围:[-65504, 65504]。 dtc_pixel_var_reci_chn2:int,通道2的方差,默认值为1.0,取值范围:[-65504, 65504]。 dtc_pixel_var_reci_chn3:int,通道3的方差,如果只有3个通道,则该参数传默认值1.0,取值范围:[-65504, 65504]。 batch_index:int,指定对第几个Batch上的图片设置通道的方差,取值范围:[0, batch_size),batch_size是在调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据时设置。 |
| 返回值说明 | ret:int,错误码 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 无 |
父主题: 设置动态AIPP参数
函数:set_input_aipp
| C函数原型 | aclError aclmdlSetInputAIPP(uint32_t modelId, aclmdlDataset *dataset, size_t index, const aclmdlAIPP *aippParmsSet) |
|---|---|
| Python函数 | ret = acl.mdl.set_input_aipp(model_id, dataset, index, aipp_parms_set) |
| 函数功能 | 动态AIPP场景下,根据指定的动态AIPP输入的输入index,设置模型推理时的AIPP参数值,同步接口。 动态AIPP支持的几种操作的计算方式及其计算顺序如下:抠图->色域转换->缩放(当前版本不支持缩放)->减均值/归一化->padding。 |
| 输入说明 | model_id:int,模型的ID, 调用acl.mdl.load_from_file接口/acl.mdl.load_from_mem接口/acl.mdl.load_from_file_with_mem接口/acl.mdl.load_from_mem_with_mem接口加载模型成功后,会返回模型ID。 dataset:int,表示模型的输入数据,使用aclmdlDataset类型的数据描述模型推理时的输入数据,输入的内存地址、内存大小用aclDataBuffer类型的数据来描述。 index:int,标识动态AIPP输入的输入index。 - 多个动态AIPP输入的场景下,用户可调用acl.mdl.get_aipp_type接口获取指定模型输入所关联的动态AIPP输入的输入index。 - 为保证向前兼容,如果明确只有一个动态AIPP输入,可调用acl.mdl.get_input_index_by_name接口获取,输入名称固定为“ascend_dynamic_aipp_data”。 aipp_parms_set:int,动态AIPP参数对象的指针地址,需提前调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据。 |
| 返回值说明 | ret:int,错误码 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 经过动态AIPP处理后的图像的宽、高必须与原始模型中输入Shape中的宽、高保持一致。 - 多Batch场景下,根据每个Batch的配置计算出动态AIPP后输出图片的宽、高,经过动态AIPP后每个Batch的输出图片宽、高必须是一致的。计算输出图片宽、高的计算公式如表1所示。 - 抠图或者缩放或者padding之后,对图片宽、高的校验规则如下,其中,aippOutputW、aippOutputH分别表示AIPP输出图片的宽、高,其它参数是acl.mdl.set_aipp_src_image_size、acl.mdl.set_aipp_crop_params、acl.mdl.set_aipp_padding_params接口的入参。 |
| 参考资源 | 接口调用流程与示例,参见动态AIPP(单个动态AIPP输入)。 |
表1 输出图片宽、高计算公式
| 抠图 | 缩放 | 补边(padding) | 动态AIPP输出图片的宽、高 |
|---|---|---|---|
| 否 | 否 | 否 | aippOutputW = srcImageSizeW aippOutputH = srcImageSizeH |
| 是 | 否 | 否 | aippOutputW = cropSizeW aippOutputH = cropSizeH |
| 是 | 是 | 否 | aippOutputW = scfOutputSizeW aippOutputH = scfOutputSizeH |
| 是 | 否 | 是 | aippOutputW = cropSizeW + paddingSizeLeft + paddingSizeRight aippOutputH = cropSizeH + paddingSizeTop + paddingSizeBottom |
| 否 | 否 | 是 | aippOutputW = srcImageSizeW + paddingSizeLeft + paddingSizeRight aippOutputH = srcImageSizeH + paddingSizeTop + paddingSizeBottom |
| 否 | 是 | 是 | aippOutputW = scfOutputSizeW + paddingSizeLeft + paddingSizeRight aippOutputH = scfOutputSizeH + paddingSizeTop + paddingSizeBottom |
| 否 | 是 | 否 | aippOutputW = scfOutputSizeW aippOutputH = scfOutputSizeH |
| 是 | 是 | 是 | aippOutputW = scfOutputSizeW + paddingSizeLeft + paddingSizeRight aippOutputH = scfOutputSizeH + paddingSizeTop + paddingSizeBottom |
父主题: 设置动态AIPP参数
总体说明
您可以通过以下接口获取aclmdlDataset类型的数据、并对aclmdlDataset的数据执行一些操作。该数据类型下的操作接口都是同步接口。
aclmdlDataset主要用于描述模型推理时的输入数据、输出数据,模型可能存在多个输入、多个输出,每个输入/输出的内存地址、内存大小用aclDataBuffer类型的数据来描述。
父主题: aclmdlDataset
在线提单