约束说明
图片分辨率约束
图片格式、宽高对齐、内存约束
VPC在处理图片时,需调用acl.media.dvpp_malloc接口申请Device上的输入、输出内存,调用acl.media.dvpp_free接口释放输入、输出内存,这部分内存的生命周期由用户自行管理。
昇腾310 AI处理器和昇腾910 AI处理器的图片格式、宽高对齐约束如下,参见表1、表2,其中,8K场景下,输入图片格式仅支持YUV420SP NV12 8bit和YUV420SP NV21 8bit。
- YUV400 8bit
- YUV420SP NV12 8bit、YUV420SP NV21 8bit
- YUV422SP 8bit、YVU422SP 8bit
- YUV444SP 8bit、YVU444SP 8bit
- YUV422P YUYV 8bit、YUV422P UYVY 8bit、YUV422P YVYU 8bit、YUV422P VYUY 8bit
 
 
     在调用接口实现VPC功能时:
- 图片格式的定义请参见acldvppPixelFormat,宽stride、高stride、8K等概念请参见基本概念。
- 宽stride最小32、最大16384(16384=4096*4,宽是4096的argb格式的图像,1个像素占用4个字节,一行像素就占用4096*4,即宽stride);高stride最小6、最大16384。
| 输入图片格式 | 输入图片宽、高对齐要求 | 输入图片宽stride、高stride、内存大小要求 | 
|---|---|---|
| YUV400 8bit | 无对齐要求 | 宽stride为宽16对齐后的值。 高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride * 3/2 | 
| YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽16对齐后的值。 高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride * 3/2 | 
| YUV420SP NV21 8bit | ||
| YUV422SP 8bit | 宽2对齐 高无对齐要求 | 宽stride为宽16对齐后的值。 高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride * 2 | 
| YVU422SP 8bit | ||
| YUV444SP 8bit | 无对齐要求 | 宽stride为宽16对齐后的值。 高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride * 3 | 
| YVU444SP 8bit | ||
| YUV422Packed YUYV 8bit | 宽2对齐 高无对齐要求 | 宽stride为宽16对齐后、再乘以2的值。 高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride | 
| YUV422Packed UYVY 8bit | ||
| YUV422Packed YVYU 8bit | ||
| YUV422Packed VYUY 8bit | ||
| YUV444Packed 8bit | 无对齐要求 | 宽stride为宽16对齐后、再乘以3的值。 高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride | 
| RGB888 | ||
| BGR888 | ||
| ARGB8888 | 无对齐要求 | 宽stride为宽16对齐后、再乘以4的值。 高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride | 
| ABGR8888 | ||
| RGBA8888 | ||
| BGRA8888 | 
| 输出图片格式 | 输出图片宽、高对齐要求 | 输出图片宽stride、高stride、内存大小要求 | 
|---|---|---|
| YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽16对齐后的值。 高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride * 3/2 | 
| YUV420SP NV21 8bit | 
| 输入图片格式 | 输入图片宽、高对齐要求 | 输入图片宽stride、高stride、内存大小要求 | 
|---|---|---|
| YUV400 8bit | 无对齐要求 | 宽stride为宽16对齐后的值;高stride无对齐要求,与高相同即可。 内存大小(单位Byte)= 宽stride * 高stride | 
| YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽16对齐后的值;高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride * 3/2 | 
| YUV420SP NV21 8bit | ||
| YUV422SP 8bit | 宽2对齐 高无对齐要求 | 宽stride为宽16对齐后的值;高stride无对齐要求,与高相同即可。 内存大小(单位Byte)= 宽stride * 高stride * 2 | 
| YVU422SP 8bit | ||
| YUV444SP 8bit | 无对齐要求 | 宽stride为宽16对齐后的值;高stride无对齐要求,与高相同即可。 内存大小(单位Byte)= 宽stride * 高stride * 3 | 
| YVU444SP 8bit | ||
| YUV422Packed YUYV 8bit | 宽2对齐 高无对齐要求 | 宽stride为宽16对齐后、再乘以2的值;高stride无对齐要求,与高相同即可。 内存大小(单位Byte)= 宽stride * 高stride | 
| YUV422Packed UYVY 8bit | ||
| YUV422Packed YVYU 8bit | ||
| YUV422Packed VYUY 8bit | ||
| YUV444Packed 8bit | 无对齐要求 | 宽stride为宽16对齐后、再乘以3的值;高stride无对齐要求,与高相同即可。 内存大小(单位Byte)= 宽stride * 高stride | 
| RGB888 | ||
| BGR888 | ||
| ARGB8888 | 无对齐要求 | 宽stride为宽16对齐后、再乘以4的值;高stride无对齐要求,与高相同即可。 内存大小(单位Byte)= 宽stride * 高stride | 
| ABGR8888 | ||
| RGBA8888 | ||
| BGRA8888 | ||
| YUV440SP 8bit | 宽无对齐要求 高2对齐 | 宽stride为宽16对齐后的值;高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride * 2 | 
| YVU440SP 8bit | 
| 输出图片格式 | 输出图片宽、高对齐要求 | 输出图片宽stride、高stride、内存大小要求 | 
|---|---|---|
| YUV400 8bit | 无对齐要求 | 宽stride为宽16对齐后的值;高stride无对齐要求,与高相同即可。 内存大小(单位Byte)= 宽stride * 高stride | 
| YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽16对齐后的值;高stride为高2对齐后的值。 内存大小(单位Byte)= 宽stride * 高stride * 3/2 | 
| YUV420SP NV21 8bit | ||
| YUV422SP 8bit | 宽2对齐 高无对齐要求 | 宽stride为宽16对齐后的值;高stride无对齐要求,与高相同即可。 内存大小(单位Byte)= 宽stride * 高stride * 2 | 
| YVU422SP 8bit | ||
| YUV444Packed 8bit | 无对齐要求 | 宽stride为宽16对齐后、再乘以3的值;高stride无对齐要求,与高相同即可。 内存大小(单位Byte)= 宽stride * 高stride | 
| RGB888 | ||
| BGR888 | ||
| ARGB8888 | 无对齐要求 | 宽stride为宽16对齐后、再乘以4的值;高stride无对齐要求,与高相同即可。 内存大小(单位Byte)= 宽stride * 高stride | 
| ABGR8888 | ||
| RGBA8888 | ||
| BGRA8888 | 
抠图、贴图约束
- 抠图区域不超出输入图片区域。
- 贴图区域不超出输出图片区域,最大贴图个数256个。贴图区域相对输出图片的左偏移16对齐,贴图时可直接放置在输出图片的最左侧,即相对输出图片的左偏移为0,0也满足16对齐的要求。 
- 输出图片的贴图宽度建议16对齐,如果不是16对齐,会多写一段无效数据使其16对齐。见图4、图5,贴图区域旁边的绿色框就表示无效数据。
- 抠图、贴图区域的奇数、偶数限制为: 
      昇腾AI处理器 约束 昇腾310 AI处理器 输出图片格式为YUV420SP,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。 昇腾910 AI处理器 输出图片格式为YUV420SP,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。 昇腾310P AI处理器 输出图片格式为YUV420SP,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。 输出图片格式为YUV422SP,贴图区域奇数、偶数限制为:左偏移为偶数、右偏移为奇数。 其它格式,贴图区域没有偏移奇偶数的限制。 
- 缩放场景下,贴图/抠图的宽高缩放比例范围:昇腾310 AI处理器,贴图/抠图的宽高缩放比例范围:[1/32, 16]。 昇腾910 AI处理器,贴图/抠图的宽高缩放比例范围:[1/32, 16]。 昇腾310P AI处理器,贴图/抠图的宽高缩放比例范围:[1/1024, 262144]。 等比例缩放场景下,由于贴图左偏移16对齐的限制,如果直接调用acl.media.dvpp_vpc_crop_resize_paste_async接口实现缩放功能,贴图的位置可能不在输出图片的正中心位置,此时可通过抠图、缩放、填充几个功能配合使用(调用acl.media.dvpp_vpc_batch_crop_resize_make_border_async接口),实现等比例缩放。 
精度相关约束
VPC的输出作为模型推理的输入时:
在昇腾310 AI处理器和昇腾910 AI处理器上,VPC功能中,贴图区域的宽*高有16*2对齐的约束,贴图有效区域的宽*高不满足16*2对齐时,贴图区域中会存在一些补边的无效数据,为保证推理精度,贴图有效区域的宽*高不满足16*2对齐时,用户需借助AIPP抠出有效区域,去除无效数据。
在昇腾310P AI处理器上,VPC功能中,贴图区域的宽有16对齐的约束,贴图有效区域的宽不满足16对齐时,贴图区域中会存在一些补边的无效数据,为保证推理精度,贴图有效区域的宽不满足16对齐时,用户需借助AIPP抠出有效区域,去除无效数据。