更新时间:2021-03-18 GMT+08:00
分享

基本介绍

AIPP(AI Preprocessing)用于在AI Core上完成图像预处理,包括改变图像尺寸、色域转换(转换图像格式)、减均值/乘系数(改变图像像素)。

AIPP区分为静态AIPP和动态AIPP。您只能选择静态AIPP或动态AIPP方式来处理图片,不能同时配置静态AIPP和动态AIPP两种方式。

  • 静态AIPP:模型转换时设置AIPP模式为静态,同时设置AIPP参数,模型生成后,AIPP参数值被保存在Davinci模型,每次模型推理阶段都使用相同的AIPP参数。

    如果使用静态AIPP方式,多batch情况下共用同一份AIPP参数。

  • 动态AIPP:模型转换时设置AIPP模式为动态,每次模型推理前需要在推理Engine的代码中设置动态AIPP参数值,然后在模型推理时可使用不同的AIPP参数。在推理Engine的代码中设置动态AIPP参数值涉及的API及示例请参见《Matrix API参考》中的“模型管家接口”>“AIPP配置接口”

    如果使用动态AIPP方式,多batch使用不同的参数,体现在动态参数结构体中,每个batch可以配置不同的crop、resize等参数。关于动态参数结构体,请参见动态AIPP的参数输入结构

AIPP支持的图像输入格式包括:YUV420SP_U8、XRGB8888_U8、RGB888_U8、YUV400_U8。

  • 对于YUV420SP_U8,根据UV交织顺序不同,YUV420SP_U8又分为YUV420SP_UV(NV12)和YUV420SP_VU(NV21),默认为YUV420SP_UV(NV12):
    • 配置文件模板中rbuv_swap_switch(R通道与B通道交换开关/U通道与V通道交换开关)设置为false,则AIPP输出为YUV420SP_UV(NV12)
    • 配置文件模板中rbuv_swap_switch设置为true,则AIPP输出为YUV420SP_UV(NV12)。
  • 对于RGB888_U8,根据rbuv_swap_switch参数的取值不同,AIPP输出不同:
  • AIPP的输入格式为“YUV420SP_U8”(默认为“YUV420SP_UV”格式),若格式为“YUV420SP_VU”,请修改参数“rbuv_swap_switch”为false,否则会影响输出结果。
  • 开启AIPP时,模型输入为“RGB888_U8”“BGR888_U8”,对应不同的色域转换矩阵。
  • 模型转换是否开启AIPP功能,执行推理业务时,对输入图片数据的要求:
    • 模型转换时开启AIPP:图像选择XRGB8888_U8或RGB888_U8,使用该种配置转换后的模型,在进行推理业务时,输入图片数据要求为NHWC排布。
    • 模型转换时没有开启AIPP,模型转换完毕,在进行推理业务时,输入图片数据要求为NCHW排布,因此需要用户自行把NHWC排布的原始图片数据转换为NCHW排布。
分享:

    相关文档

    相关产品