总体说明
函数: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
函数:create_dataset
| C函数原型 | aclmdlDataset *****aclmdlCreateDataset() |
|---|---|
| Python函数 | mdl_dataset = acl.mdl.create_dataset() |
| 函数功能 | 创建aclmdlDataset类型的数据。 |
| 输入说明 | 无 |
| 返回值说明 | mdl_dataset:int,aclmdlDataset类型的指针地址。 |
| 约束说明 | 无 |
父主题: aclmdlDataset
函数:destroy_dataset
| C函数原型 | aclError aclmdlDestroyDataset(const aclmdlDataset *dataset) |
|---|---|
| Python函数 | ret = acl.mdl.destroy_dataset(dataset) |
| 函数功能 | 销毁aclmdlDataset类型的数据。 |
| 输入说明 | dataset:int,待销毁的aclmdlDataset的指针地址。 |
| 返回值说明 | ret:int,错误码 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 销毁类接口:调用该接口后,不能继续使用已释放或销毁的资源,建议调用该接口后,将相关资源设置为无效值(例如,置为0或None)。 |
父主题: aclmdlDataset
函数:add_dataset_buffer
| C函数原型 | aclError **aclmdlAddDatasetBuffer(**aclmdlDataset *dataset, aclDataBuffer *dataBuffer) |
|---|---|
| Python函数 | dataset, ret = acl.mdl.add_dataset_buffer(dataset, data_buffer) |
| 函数功能 | 向aclmdlDataset中增加aclDataBuffer。 |
| 输入说明 | dataset:int,待增加aclDataBuffer的aclmdlDataset地址。 data_buffer:int,待增加的aclDataBuffer地址。 |
| 返回值说明 | dataset:int,待增加aclDataBuffer的aclmdlDataset地址。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 无 |
父主题: aclmdlDataset
在线提单