下载
中文
注册

功能及约束说明

功能说明

VPC(Vision Preprocessing Core)功能包括:

  • 抠图,从输入图片中抠出需要用的图片区域,支持一图多框和多图多框。
  • 缩放
    • 针对不同分辨率的图像,VPC的处理方式可分为:
      • 非8K缩放:

        用于处理“(widthStride/系数)在32~4096(包括4096)范围内,heightStride在6~4096”的输入图片,不同格式的输入图片,系数不同,详细描述参见约束说明

      • 8K缩放:

        昇腾310 AI处理器,8K缩放用于处理“widthStride在4096~8192范围内或heightStride在4096~8192范围内(不包括4096)”的输入图片,支持的输入图片格式,请参见约束说明

        昇腾910 AI处理器,8K缩放用于处理“widthStride在4096~8192范围内或heightStride在4096~8192范围内(不包括4096)”的输入图片,支持的输入图片格式,请参见约束说明

    • 从是否抠多张图的维度,可分为单图裁剪缩放(支持非压缩格式)、一图多框裁剪缩放(支持非压缩格式)。
    • 其它缩放方式,如:原图缩放、等比例缩放(缩放前后图片的宽高比例相同)。
  • 叠加,从输入图片中抠出来的图,对抠出的图进行缩放后,放在用户输出图片的指定区域,输出图片可以是空白图片(由用户申请的空输出内存产生的),也可以是已有图片(由用户申请输出内存后将已有图片读入输出内存),只有当输出图片是已有图片时,才表示叠加。
  • 拼接,从输入图片中抠多张图片,对抠出的图进行缩放后,放到输出图片的指定区域。
  • 格式转换,支持RGB格式、YUV格式之间的格式转换,目前的输入图片格式、输出图片格式,请参见约束说明
  • 图像灰度化,将彩色图像转化为灰度图像。需注意,输入为灰度图像、输出只能为灰度图像。

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

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

表1 关键概念列表

概念

描述

宽stride(widthStride)

指一行图像跨距,表示输入/输出图片对齐后的宽,RGB格式或YUV格式的宽stride计算方式不一样。宽stride最小为32,最大为4096*4(宽是4096的argb格式的图像,1个像素占用4个字节,一行像素就占用4096*4,即宽stride)。

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

高stride(heightStride)

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

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

上/下/左/右偏移

通过配置上偏移、下偏移、左偏移、右偏移可以实现两个功能:指定抠图区域或贴图区域的位置;控制抠图或贴图区域的宽、高,右偏移-左偏移+1=宽,下偏移-上偏移+1=高。参见功能示意图

抠图区域

指用户指定的需抠出的图片区域。

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

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

贴图区域

指在输出图片中用户指定的区域,贴图区域最小分辨率为10*6,最大分辨率为4096*4096。

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

功能示意图

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

约束说明

  • VPC输入的约束
    • 输入图片分辨率:
      • 非8K缩放:
        • YUV400/YUV420SP/YUV422SP/YUV444sp:widthStride在32~4096(包括4096)范围内,heightStride在6~4096。
        • YUV422packed:widthStride/2在32~4096(包括4096)范围内,heightStride在6~4096。
        • YUV444packed/RGB888:widthStride/3在32~4096(包括4096)范围内,heightStride在6~4096。
        • XRGB8888:widthStride/4在32~4096(包括4096)范围内,heightStride在6~4096。
      • 8K缩放:

        昇腾310 AI处理器,8K缩放用于处理“widthStride在4096~8192范围内或heightStride在4096~8192范围内(不包括4096)”的输入图片。

        昇腾910 AI处理器,8K缩放用于处理“widthStride在4096~8192范围内或heightStride在4096~8192范围内(不包括4096)”的输入图片。

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

    • 输入图片格式:
      • 非8K缩放:
        支持acldvppPixelFormat枚举值中的如下枚举项:
        PIXEL_FORMAT_YUV_400 = 0, 
        PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1,   
        PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2,   
        PIXEL_FORMAT_YUV_SEMIPLANAR_422 = 3, 
        PIXEL_FORMAT_YVU_SEMIPLANAR_422 = 4, 
        PIXEL_FORMAT_YUV_SEMIPLANAR_444 = 5, 
        PIXEL_FORMAT_YVU_SEMIPLANAR_444 = 6, 
        PIXEL_FORMAT_YUYV_PACKED_422 = 7, 
        PIXEL_FORMAT_UYVY_PACKED_422 = 8, 
        PIXEL_FORMAT_YVYU_PACKED_422 = 9, 
        PIXEL_FORMAT_VYUY_PACKED_422 = 10, 
        PIXEL_FORMAT_YUV_PACKED_444 = 11, 
        PIXEL_FORMAT_RGB_888 = 12, 
        PIXEL_FORMAT_BGR_888 = 13, 
        PIXEL_FORMAT_ARGB_8888 = 14, 
        PIXEL_FORMAT_ABGR_8888 = 15, 
        PIXEL_FORMAT_RGBA_8888 = 16, 
        PIXEL_FORMAT_BGRA_8888 = 17, 
        PIXEL_FORMAT_YUV_SEMIPLANAR_440 = 1000,         
        PIXEL_FORMAT_YVU_SEMIPLANAR_440,                

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

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

      • 8K缩放:
        昇腾310 AI处理器支持acldvppPixelFormat枚举值中的如下枚举项:
        PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1,
        PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, 
        昇腾910 AI处理器支持acldvppPixelFormat枚举值中的如下枚举项:
        PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1,
        PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, 
    • 输入内存:
      • 内存地址起始要求16对齐。其中128对齐性能最高。调用acldvppMalloc接口/acldvppFree接口申请或释放内存,这部分内存的生命周期由用户自行管理。
      • 内存大小(单位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
        • ARGB8888:widthStride*heightStride
    • 输入图片的widthStride、heightStride:
      • 对于不同图像格式,widthStride的计算公式不同:
        • YUV400、YUV420SP、YUV422SP、YUV444SP:输入图片的宽(width)对齐到16。
        • YUV422packed:输入图片的宽(width)对齐到16后,再乘以2(宽16对齐,每个像素占2个字节)。
        • YUV444packed、RGB888:输入图片的宽(width)对齐到16,再乘以3(宽16对齐,每个像素占3个字节)。
        • ARGB8888:输入图片的宽(width)对齐到16后,再乘以4(宽16对齐,每个像素占4个字节)。
      • heightStride:

        昇腾310 AI处理器,需要2对齐。

        昇腾910 AI处理器,需要2对齐。

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

      10*6~4096*4096

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

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

        昇腾310 AI处理器,需要2对齐。

        昇腾910 AI处理器,需要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对齐的限制,如果直接调用acldvppVpcCropResizePasteAsync接口实现缩放功能,贴图的位置可能不在输出图片的正中心位置,此时可通过抠图、缩放、填充几个功能配合使用(调用acldvppVpcBatchCropResizeMakeBorderAsync接口),实现等比例缩放。

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

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

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

性能指标说明(昇腾310 AI处理器

  • 对于非8K缩放,单个Device的基本场景性能指标参考如下:

    对于1080p的图像,若存在Host->Device的图片数据拷贝,由于拷贝带宽限制,最大总帧率约为1000fps。

    对于4K的图像,若存在Host->Device的图片数据拷贝,由于拷贝带宽限制,最大总帧率约为250fps。

    场景举例

    总帧率

    • 输入图像分辨率:1080p(1920*1080)
    • 输出图像分辨率:1080p(1920*1080)
    • 输入/输出图片格式:YUV420SP
    • n路(n<4,1路对应一个线程)

    n*360fps

    • 输入图像分辨率:1080p(1920*1080)
    • 输出图像分辨率:1080p(1920*1080)
    • 输入/输出图片格式:YUV420SP
    • n路(n≥4,1路对应一个线程)

    1440fps

    • 输入图像分辨率:4K图像(3840*2160)
    • 输出图像分辨率:4K图像(3840*2160)
    • 输入/输出图片格式:YUV420SP
    • n路(n<4,1路对应一个线程)

    n*90fps

    • 输入图像分辨率:4K图像(3840*2160)
    • 输出图像分辨率:4K图像(3840*2160)
    • 输入/输出图片格式:YUV420SP
    • n路(n≥4,1路对应一个线程)

    360fps

  • 对于8K缩放,单个Device的典型场景性能指标参考如下:

    场景举例

    总帧率

    • 输入图像分辨率:8K图像(7680*4320)
    • 输出图像分辨率:1080p(1920*1080)
    • 输入/输出图片格式:YUV420SP
    • n路(n<4,1路对应一个线程)

    n*25fps

    • 输入图像分辨率:8K图像(7680*4320)
    • 输出图像分辨率:1080p(1920*1080)
    • 输入/输出图片格式:YUV420SP
    • n路(n≥4,1路对应一个线程)

    100fps

    • 输入图像分辨率:8K图像(7680*4320)
    • 输出图像分辨率:4K图像(3840*2160)
    • 输入/输出图片格式:YUV420SP
    • n路(n<4,1路对应一个线程)

    n*25fps

    • 输入图像分辨率:8K图像(7680*4320)
    • 输出图像分辨率:4K图像(3840*2160)
    • 输入/输出图片格式:YUV420SP
    • n路(n≥4,1路对应一个线程)

    100fps

    上述性能数据,基于以下基本要求:

    • 一个stream上下发10个异步媒体数据处理任务后,执行一次aclrtSynchronizeStream接口。
    • CtrlCPU与AI CPU的配比是4:4

性能指标说明(昇腾910 AI处理器

  • 对于非8K缩放,单个Device的基本场景性能指标参考如下:

    场景举例

    总帧率

    • 输入图像分辨率:1080p(1920*1080)
    • 输出图像分辨率:1080p(1920*1080)
    • 输入/输出图片格式:YUV420SP
    • n路(n<16,1路对应一个线程)

    n*360fps

    • 输入图像分辨率:1080p(1920*1080)
    • 输出图像分辨率:1080p(1920*1080)
    • 输入/输出图片格式:YUV420SP
    • n路(n≥16,1路对应一个线程)

    5760fps

    • 输入图像分辨率:4K图像(3840*2160)
    • 输出图像分辨率:4K图像(3840*2160)
    • 输入/输出图片格式:YUV420SP
    • n路(n<16,1路对应一个线程)

    n*90fps

    • 输入图像分辨率:4K图像(3840*2160)
    • 输出图像分辨率:4K图像(3840*2160)
    • 输入/输出图片格式:YUV420SP
    • n路(n≥16,1路对应一个线程)

    1440fps

  • 对于8K缩放,单个Device的典型场景性能指标参考如下:

    场景举例

    总帧率

    • 输入图像分辨率:8K图像(7680*4320)
    • 输出图像分辨率:1080p(1920*1080)
    • 输入/输出图片格式:YUV420SP
    • n路(n<16,1路对应一个线程)

    n*25fps

    • 输入图像分辨率:8K图像(7680*4320)
    • 输出图像分辨率:1080p(1920*1080)
    • 输入/输出图片格式:YUV420SP
    • n路(n≥16,1路对应一个线程)

    400fps

    • 输入图像分辨率:8K图像(7680*4320)
    • 输出图像分辨率:4K图像(3840*2160)
    • 输入/输出图片格式:YUV420SP
    • n路(n<16,1路对应一个线程)

    n*25fps

    • 输入图像分辨率:8K图像(7680*4320)
    • 输出图像分辨率:4K图像(3840*2160)
    • 输入/输出图片格式:YUV420SP
    • n路(n≥16,1路对应一个线程)

    400fps

    上述性能数据,基于以下基本要求:

    • 一个stream上下发10个异步媒体数据处理任务后,执行一次aclrtSynchronizeStream接口。
    • CtrlCPU与AI CPU的配比是1:15

参考资源

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