功能及约束说明
昇腾310 AI处理器上,该功能为预留功能,暂不支持。
昇腾910 AI处理器上,该功能为预留功能,暂不支持。
功能说明
VPC(Vision Preprocessing Core)功能如下所示,实现这些功能的接口请参见VPC功能:
- 抠图,从输入图片中抠出需要用的图片区域。
- 缩放
- 从是否抠多张图的维度,可分为单图裁剪缩放、一图多框裁剪缩放。
- 其它缩放方式,如:原图缩放。
- 叠加,从输入图片中抠出来的图,对抠出的图进行缩放后,放在用户输出图片的指定区域,输出图片可以是空白图片(由用户申请的空输出内存产生的),也可以是已有图片(由用户申请输出内存后将已有图片读入输出内存),只有当输出图片是已有图片时,才表示叠加。
- 拼接,从输入图片中抠多张图片,对抠出的图进行缩放后,放到输出图片的指定区域。
- 图像金字塔,对原图进行多次高斯滤波之后向下采样产生不同尺寸的图像。
- 直方图统计,统计图像每个通道(RGB/YUV)的像素值分布。
- 重映射,根据配置信息将图片从原图映射为另一张图。
- 边界填充,对图像进行边界填充。
- 格式转换,对图像进行格式转换,目前支持的输入、输出图片格式请参见约束说明。
- 图像灰度化,将彩色图像转化为灰度图像。需注意,输入为灰度图像、输出只能为灰度图像。
昇腾310 AI处理器,实现图像灰度化的操作是从YUV420SP格式的输出图像数据中只取Y分量的数据。
昇腾910 AI处理器,实现图像灰度化的操作是从YUV420SP格式的输出图像数据中只取Y分量的数据。
概念 |
描述 |
---|---|
宽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抠图、贴图约束”。 |
上/左偏移 |
通过配置上偏移、左偏移、抠图/贴图区域的宽和高可以指定抠图区域或贴图区域的位置。参见功能示意图。 |
约束说明
- 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
- YUV400:
- 输入图片的widthStride、heightStride:
- 输入图片分辨率:
- VPC输出的约束:
- 输出图片分辨率:
输出图片的真实宽高限制跟输出图片格式有关,在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对齐。
- widthStride:
- 输出图片分辨率:
- VPC抠图、贴图约束:
- 抠图区域不超出输入图片区域。
- 贴图区域不超出输出图片区域,最大贴图个数256个,贴图区域相对输出图片的左偏移16对齐。
- 输出图片的贴图宽度建议16对齐,如果不是16对齐,会多写一段无效数据使其16对齐。见图4、图5,贴图区域旁边的绿色框就表示无效数据。
- 抠图、贴图区域的奇数、偶数限制为:
版本
约束
昇腾310 AI处理器
输出图片格式为YUV420SP,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。
昇腾910 AI处理器
输出图片格式为YUV420SP,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。
- 缩放场景下,贴图/抠图的宽高缩放比例范围:
昇腾910 AI处理器,比例范围:[1/32, 16]。
等比例缩放场景下,由于贴图左偏移16对齐的限制,如果直接调用hi_mpi_vpc_crop_resize_paste接口实现缩放功能,贴图的位置可能不在输出图片的正中心位置,此时可通过抠图、缩放、填充几个功能配合使用(调用hi_mpi_vpc_crop_resize_make_border或hi_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图像为例。