昇腾社区首页
中文
注册

功能及约束说明

昇腾310 AI处理器上,该功能为预留功能,暂不支持。

昇腾910 AI处理器上,该功能为预留功能,暂不支持。

功能说明

VPC(Vision Preprocessing Core)功能如下所示,实现这些功能的接口请参见VPC功能

  • 抠图,从输入图片中抠出需要用的图片区域。
  • 缩放
    • 从是否抠多张图的维度,可分为单图裁剪缩放、一图多框裁剪缩放。
    • 其它缩放方式,如:原图缩放。
  • 叠加,从输入图片中抠出来的图,对抠出的图进行缩放后,放在用户输出图片的指定区域,输出图片可以是空白图片(由用户申请的空输出内存产生的),也可以是已有图片(由用户申请输出内存后将已有图片读入输出内存),只有当输出图片是已有图片时,才表示叠加。
  • 拼接,从输入图片中抠多张图片,对抠出的图进行缩放后,放到输出图片的指定区域。
  • 图像金字塔,对原图进行多次高斯滤波之后向下采样产生不同尺寸的图像。
  • 直方图统计,统计图像每个通道(RGB/YUV)的像素值分布。
  • 重映射,根据配置信息将图片从原图映射为另一张图。
  • 边界填充,对图像进行边界填充。
  • 格式转换,对图像进行格式转换,目前支持的输入、输出图片格式请参见约束说明
  • 图像灰度化,将彩色图像转化为灰度图像。需注意,输入为灰度图像、输出只能为灰度图像。

    昇腾310 AI处理器,实现图像灰度化的操作是从YUV420SP格式的输出图像数据中只取Y分量的数据。

    昇腾910 AI处理器,实现图像灰度化的操作是从YUV420SP格式的输出图像数据中只取Y分量的数据。

表1 概念解释

概念

描述

宽stride(widthStride)

指一行图像跨距,表示输入图片对齐后的宽,RGB格式或YUV格式的宽stride计算方式不一样。

宽stride的对齐要求,请参见约束说明中的“VPC输入的约束”、“VPC输出的约束”。

高stride(heightStride)

指图像在内存中的行数,表示输入图片对齐后的高。

高stride的对齐要求,请参见约束说明中的“VPC输入的约束”、“VPC输出的约束”。

抠图区域

指用户指定的需抠出的图片区域。抠图起始坐标无奇数、偶数限制。

抠图区域最小分辨率为10*6,hi_mpi_vpc_crop接口抠图最大分辨率为4096*4096,其余涉及抠图的接口,抠图最大分辨率为8192*8192。

抠图区域的约束请参见约束说明中的“VPC抠图、贴图约束”。

贴图区域

指在输出图片中用户指定的区域。

贴图区域最小分辨率为10*6,最大分辨率为4096*4096。

贴图区域的约束请参见约束说明中的“VPC抠图、贴图约束”。

上/左偏移

通过配置上偏移、左偏移、抠图/贴图区域的宽和高可以指定抠图区域或贴图区域的位置。参见功能示意图

功能示意图

图1 VPC功能示意图(抠图+缩放+叠加)
图2 VPC功能示意图(拼接)
图3 等比例缩放(贴图区域在输出图片的中心位置),即缩放前后图片的宽高比例相同
图4 等比例缩放(贴图区域在输出图片的上下居中位置)
图5 等比例缩放(贴图区域在输出图片的左右居中位置)

约束说明

  • VPC输入的约束
    • 输入图片分辨率:

      10*6~8192*8192(包括8192),在调用接口实现VPC功能时,各接口对分辨率的要求可能不同,详细接口的要求请参见VPC功能

      昇腾310 AI处理器上,输入图片的真实宽高都要求2对齐。

      昇腾910 AI处理器上,输入图片的真实宽高都要求2对齐。

    • 输入图片格式:

      支持hi_pixel_format枚举值中的如下枚举项:

      HI_PIXEL_FORMAT_YUV_400 = 0,               // YUV400 8bit
      HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1,       // YUV420SP NV12 8bit   
      HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2,       // YUV420SP NV21 8bit 
      HI_PIXEL_FORMAT_YUV_SEMIPLANAR_422 = 3,       // YUV422SP 8bit
      HI_PIXEL_FORMAT_YVU_SEMIPLANAR_422 = 4,       // YVU422SP 8bit
      HI_PIXEL_FORMAT_YUV_SEMIPLANAR_444 = 5,       // YUV444SP 8bit
      HI_PIXEL_FORMAT_YVU_SEMIPLANAR_444 = 6,       // YVU444SP 8bit
      HI_PIXEL_FORMAT_YUYV_PACKED_422 = 7,          // YUV422Packed YUYV 8bit
      HI_PIXEL_FORMAT_UYVY_PACKED_422 = 8,          // YUV422Packed UYVY 8bit
      HI_PIXEL_FORMAT_YVYU_PACKED_422 = 9,          // YUV422Packed YVYU 8bit
      HI_PIXEL_FORMAT_VYUY_PACKED_422 = 10,         // YUV422Packed VYUY 8bit
      HI_PIXEL_FORMAT_YUV_PACKED_444 = 11,          // YUV444Packed 8bit
      HI_PIXEL_FORMAT_RGB_888 = 12,                 // RGB888
      HI_PIXEL_FORMAT_BGR_888 = 13,                 // BGR888
      HI_PIXEL_FORMAT_ARGB_8888 = 14,               // ARGB8888
      HI_PIXEL_FORMAT_ABGR_8888 = 15,               // ABGR8888
      HI_PIXEL_FORMAT_RGBA_8888 = 16,               // RGBA8888
      HI_PIXEL_FORMAT_BGRA_8888 = 17,               // BGRA8888
      HI_PIXEL_FORMAT_YUV_SEMIPLANAR_440 = 1000,    //YUV440SP 8bit 
      HI_PIXEL_FORMAT_YVU_SEMIPLANAR_440 = 1001,    //YVU440SP 8bit 

      昇腾310 AI处理器上,不支持以上枚举值中的HI_PIXEL_FORMAT_YUV_SEMIPLANAR_440、HI_PIXEL_FORMAT_YVU_SEMIPLANAR_440。

      昇腾910 AI处理器上,不支持以上枚举值中的HI_PIXEL_FORMAT_YUV_SEMIPLANAR_440、HI_PIXEL_FORMAT_YVU_SEMIPLANAR_440。

    • 输入内存:
      • 内存地址起始要求16Byte对齐,其中128Byte对齐性能最高。Device的内存,调用hi_mpi_dvpp_malloc接口/hi_mpi_dvpp_free接口申请或释放内存,这部分内存的生命周期由用户自行管理。
      • 输入内存大小(单位Byte)与图片数据的格式相关,计算公式如下:
        • YUV400:

          昇腾310 AI处理器,计算公式:widthStride*heightStride*3/2

          昇腾910 AI处理器,计算公式:widthStride*heightStride*3/2

        • YUV420SP:widthStride*heightStride*3/2
        • YUV422SP:widthStride*heightStride*2
        • YUV444SP:widthStride*heightStride*3
        • YUV422Packed:widthStride*heightStride
        • YUV444Packed、RGB888:widthStride*heightStride
        • XRGB8888:widthStride*heightStride
    • 输入图片的widthStride、heightStride:
      • widthStride:
        widthStride最小32、最大16384。widthStride的值与图片数据的格式有关,widthStride的计算公式如下:
        • YUV400、YUV420SP、YUV422SP、YUV444SP:输入图片的宽(width)对齐到16。
        • YUV422Packed:输入图片的宽(width)对齐到16后,再乘以2(宽16对齐,每个像素占2个字节)。
        • YUV444Packed、RGB888:输入图片的宽(width)对齐到16,再乘以3(宽16对齐,每个像素占3个字节)。
        • XRGB8888:输入图片的宽(width)对齐到16后,再乘以4(宽16对齐,每个像素占4个字节)。
      • heightStride:

        昇腾310 AI处理器,heightStride最小6、最大16384,且要求2对齐。

        昇腾910 AI处理器,heightStride最小6、最大16384,且要求2对齐。

  • VPC输出的约束
    • 输出图片分辨率:

      10*6~4096*4096

      输出图片的真实宽高限制跟输出图片格式有关,在VPC支持的输出图片格式中,对于YUV420SP格式,宽高均需要2对齐;对于YUV422SP格式,宽度需要2对齐,高度无限制;其它格式宽高没有限制。

    • 输出图片格式:
      昇腾310 AI处理器支持hi_pixel_format枚举值中的如下枚举项:
      HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1,   // YUV420SP NV12 8bit
      HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2,   // YUV420SP NV21 8bit
      昇腾910 AI处理器支持hi_pixel_format枚举值中的如下枚举项:
      HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1,   // YUV420SP NV12 8bit
      HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2,   // YUV420SP NV21 8bit
    • 输出内存:
      • 内存地址起始要求16Byte对齐,其中128Byte对齐性能最高。Device的内存,调用hi_mpi_dvpp_malloc接口/hi_mpi_dvpp_free接口申请或释放内存,这部分内存的生命周期由用户自行管理。
      • 输出内存大小与图片数据的格式相关,内存大小的计算公式请参见输入内存计算公式
    • 输出图片的widthStride、heightStride:
      • widthStride:

        widthStride最小32、最大16384。widthStride的值与图片数据的格式有关,widthStride的计算公式请参见输入图片widthStride计算公式

      • heightStride:

        昇腾310 AI处理器,heightStride最小6、最大16384,且要求2对齐。

        昇腾910 AI处理器,heightStride最小6、最大16384,且要求2对齐。

  • VPC抠图、贴图约束
    • 抠图区域不超出输入图片区域。
    • 贴图区域不超出输出图片区域,最大贴图个数256个,贴图区域相对输出图片的左偏移16对齐。

      贴图时可直接放置在输出图片的最左侧,即相对输出图片的左偏移为0,0也满足16对齐的要求。

    • 输出图片的贴图宽度建议16对齐,如果不是16对齐,会多写一段无效数据使其16对齐。见图4图5,贴图区域旁边的绿色框就表示无效数据。
    • 抠图、贴图区域的奇数、偶数限制为:

      版本

      约束

      昇腾310 AI处理器

      输出图片格式为YUV420SP,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。

      昇腾910 AI处理器

      输出图片格式为YUV420SP,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。

    • 缩放场景下,贴图/抠图的宽高缩放比例范围:

      昇腾310 AI处理器,比例范围:[1/32, 16]。

      昇腾910 AI处理器,比例范围:[1/32, 16]。

      等比例缩放场景下,由于贴图左偏移16对齐的限制,如果直接调用hi_mpi_vpc_crop_resize_paste接口实现缩放功能,贴图的位置可能不在输出图片的正中心位置,此时可通过抠图、缩放、填充几个功能配合使用(调用hi_mpi_vpc_crop_resize_make_borderhi_mpi_vpc_batch_crop_resize_make_border接口),实现等比例缩放。

  • VPC的输出作为模型推理的输入时:

    昇腾310 AI处理器,VPC功能中,贴图区域的宽*高有16*2对齐的约束,贴图有效区域的宽*高不满足16*2对齐时,贴图区域中会存在一些补边的无效数据,为保证推理精度,贴图有效区域的宽*高不满足16*2对齐时,在贴图前用户可先将贴图有效区域缩放成16*2对齐,或在推理前借助AIPP抠出有效区域,去除无效数据。

    昇腾910 AI处理器,VPC功能中,贴图区域的宽*高有16*2对齐的约束,贴图有效区域的宽*高不满足16*2对齐时,贴图区域中会存在一些补边的无效数据,为保证推理精度,贴图有效区域的宽*高不满足16*2对齐时,在贴图前用户可先将贴图有效区域缩放成16*2对齐,或在推理前借助AIPP抠出有效区域,去除无效数据。

参考说明

RGB、YUV格式图像的各分量排布示意图。示例:SP图像以YUV420SP为例,Packed和RGB图像以ARGB图像为例。