VPC功能
昇腾310 AI处理器上,当前版本仅支持缩放功能。
昇腾910 AI处理器上,当前版本仅支持缩放功能。
功能说明
VPC(vision preprocessing core)功能包括:
- 抠图,从输入图片中抠出需要用的图片区域。
- 缩放
- 从是否抠多张图的维度,可分为单图裁剪缩放、一图多框裁剪缩放。
- 其它缩放方式,如:原图缩放。
- 叠加,从输入图片中抠出来的图,对抠出的图进行缩放后,放在用户输出图片的指定区域,输出图片可以是空白图片(由用户申请的空输出内存产生的),也可以是已有图片(由用户申请输出内存后将已有图片读入输出内存),只有当输出图片是已有图片时,才表示叠加。
- 拼接,从输入图片中抠多张图片,对抠出的图进行缩放后,放到输出图片的指定区域。
- 图像金字塔,对原图进行多次高斯滤波之后向下采样产生不同尺寸的图像。
- 直方图统计,统计图像每个通道(RGB/YUV)的像素值分布。
- 重映射,根据配置信息将图片从原图映射为另一张图。
- 边界填充,对图像进行边界填充。
- 格式转换,对图像进行格式转换,目前支持的输入、输出图片格式请参见约束说明。
- 图像灰度化,在昇腾310 AI处理器上,在昇腾910 AI处理器上,从YUV420SP格式的输出图像数据中只取Y分量的数据。需要注意的是输入为灰度图像、输出只能为灰度图像。
实现以上功能的接口请参见VPC图像处理接口。
概念 |
描述 |
---|---|
宽stride(widthStride) |
指一行图像步长,表示输入图片对齐后的宽,RGB格式或YUV格式的宽stride计算方式不一样。 宽stride的对齐要求,请参见约束说明。 |
高stride(heightStride) |
指图像在内存中的行数,表示输入图片对齐后的高。 高stride的对齐要求,请参见约束说明。 |
抠图区域 |
指用户指定的需抠出的图片区域。抠图起始坐标无奇数、偶数限制。 抠图区域最小分辨率为10*6,acl.himpi.vpc_crop接口抠图最大分辨率为4096*4096,其余涉及抠图的接口,抠图最大分辨率为8192*8192。 抠图区域的约束请参见约束说明。 |
贴图区域 |
指在输出图片中用户指定的区域。 贴图区域最小分辨率为10*6,最大分辨率为4096*4096。 贴图区域的约束请参见约束说明。 |
上/左偏移 |
通过配置上偏移、左偏移、抠图/贴图区域的宽和高可以指定抠图区域或贴图区域的位置。
|
约束说明
- VPC输入的约束:
- 输入图片分辨率:
10*6~8192*8192(包括8192),在调用接口实现VPC功能时,各接口对分辨率的要求可能不同,详细接口的要求请参见VPC图像处理接口。
在昇腾310 AI处理器上,在昇腾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 NV12 8bit HI_PIXEL_FORMAT_YVU_SEMIPLANAR_422 = 4, // YUV422SP NV21 8bit HI_PIXEL_FORMAT_YUV_SEMIPLANAR_444 = 5, // YUV444SP NV12 8bit HI_PIXEL_FORMAT_YVU_SEMIPLANAR_444 = 6, // YUV444SP NV21 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_SEMI_PLANNER_420_10BIT = 18, // YUV420SP 10bit HI_PIXEL_FORMAT_YVU_SEMI_PLANNER_420_10BIT = 19, // YVU420sp 10bit
- 输入内存:
- 内存地址起始要求16Byte对齐,其中128Byte对齐性能最高。Device的内存,调用acl.himpi.dvpp_malloc接口/acl.himpi.dvpp_free接口申请或释放内存。
- 输入内存大小与图片数据的格式相关,计算公式如下:
- YUV400:在昇腾310 AI处理器上,在昇腾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最小值为32。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处理器上,在昇腾910 AI处理器上,最小为6,且要求2对齐。
- widthStride最小值为32。widthStride的值与图片数据的格式有关,widthStride的计算公式如下:
- 输入图片分辨率:
- VPC输出的约束:
- 输出图片分辨率:
- 输出图片格式:
支持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的内存,调用acl.himpi.dvpp_malloc接口/acl.himpi.dvpp_free接口申请或释放内存。
- 输出内存大小与图片数据的格式相关,内存大小的计算公式请参见▪输入内存:。
- 输出图片的宽stride、高stride对齐要求:
- 宽stride:最小值为32。widthStride的值与图片数据的格式有关,widthStride的计算公式请参见▪输入图片的宽stridewidthStride...。
- heightStride:
昇腾310 AI处理器,heightStride最小6、最大16384,且要求2对齐。
昇腾910 AI处理器,heightStride最小6、最大16384,且要求2对齐。
- VPC抠图、贴图约束:
- 抠图区域不超出输入图片,贴图区域不超出输出图片。
- 最大贴图个数256个。
- 在昇腾310 AI处理器上,在昇腾910 AI处理器上,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。
- 贴图区域相对输出图片的左偏移16对齐。
- 输出图片的贴图宽度建议16对齐,如果不是16对齐,会多写一段无效数据使其16对齐。见图3,贴图区域旁边的绿色框就表示无效数据。
- 在昇腾310 AI处理器上,在昇腾910 AI处理器上,针对缩放功能,贴图/抠图的宽高缩放比例范围:[1/32, 16]。
- 在昇腾310 AI处理器上,在昇腾910 AI处理器上,等比例缩放场景下,当输出图片格式为YUV420SP格式时,贴图左偏移满足16对齐、上偏移2对齐的要求即可。
- 在昇腾310 AI处理器上,在昇腾910 AI处理器上,VPC的输出作为模型推理的输入时:
由于经过VPC处理的输出图片中的贴图区域的宽*高有16*2对齐的约束,因此输出图片中的贴图区域的宽、高有一些补边的无效数据,所以在VPC贴图前,应首先使用VPC的缩放功能将贴图区域的分辨率缩放成16*2对齐,否则无效数据会影响模型推理的精度。
参考说明
RGB、YUV格式图像的各分量排布示意图。示例:SP图像以YUV420SP为例,Packed和RGB图像以ARGB图像为例。