下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

功能及约束说明

功能说明

JPEGD(JPEG Decoder)实现.jpg、.jpeg、.JPG、.JPEG图片文件的解码。

  • JPEGD在解码图片时,支持对图片进行旋转。

    如果输入图片的码流中包含Orientation信息(代表捕获图像时摄像机相对于场景的方向),则JPEGD在解码时会解析Orientation信息,将图片进行90度、180度、270度或镜像旋转。旋转后输出图片的宽Stride、高Stride、输出内存仍需满足图片格式、宽高对齐、内存约束中的要求。

    如果输入图片的码流异常,导致JPEGD解码时无法读取Orientation信息,则不能实现图片旋转的功能。

    以下产品在使用图片旋转功能时,存在约束,请参见表1
    表1 JPEGD解码图片,旋转功能约束

    产品版本

    约束

    Atlas 200/300/500 推理产品

    多路并发解码JPEG图片场景下,如果解码的JPEG图片中,包含带旋转信息的大分辨率图片,例如3840 * 2160分辨率及以上的图片,则可能导致图片解码时间过长,从而导致用户进程超时退出。

    Atlas 200I/500 A2推理产品

    Atlas A2训练系列产品/Atlas 800I A2推理产品

    • JPEGD 422格式旋转图片,若原图高为奇数,并且旋转方式为宽高对换,则旋转后宽存在黑边,建议用户将宽向下对齐到偶数使用(即去除黑边),比如原图为200 * 101,若旋转后为101 * 200,则建议用户实际使用区域为100 * 200。
    • JPEGD 440格式旋转图片,若原图宽为奇数,并且旋转方式为宽高对换,则旋转后高存在黑边,建议用户将高向下对齐到偶数使用(即去除黑边),比如原图为201 * 101,若旋转后为100 * 201,则建议用户实际使用区域为100 * 200。
  • JPEGD在解码图片时,支持按源图片格式解码。

    源图片格式解码是指解码前后图片的编码格式保持一致,例如解码前输入图片为jpeg(440),解码后输出图片为YUV440SP V在前U在后或YUV440SP U在前V在后。

    使用源图片格式解码,有以下方式:

    • 调用acl.media.dvpp_jpeg_get_image_info_v2接口,获取JPEGD解码前输入图片的编码格式,在调用JPEGD解码接口时,将输出图片格式设置的与输入图片编码格式一致。
    • 在调用JPEGD解码接口时,将输出图片格式配置为“PIXEL_FORMAT_UNKNOWN”,输出格式默认按源图片格式输出、且是V在前U在后的Semi-Planar格式。

      例如,JPEG输入图片编码格式为jpeg(440),输出图片格式配置为“PIXEL_FORMAT_UNKNOWN”,JPEGD解码后,实际输出图片格式为YUV440SP V在前U在后。

    JPEGD解码后的输出图片,如果要直接作为模型推理的输入,建议将输出图片格式配置为“PIXEL_FORMAT_UNKNOWN”,此时JPEGD使用源图片格式解码(但需要确保解码后的图片格式模型是支持的),保证模型推理的精度。

    JPEGD解码后的输出图片,如果直接作为VPC的输入,该场景下若使用源图片格式解码时,则需要关注解码后的输出图片格式VPC是否支持(VPC输入图片的格式请参见约束说明),如果VPC不支持,则用户需按VPC支持的情况指定JPEGD的输出图片格式。

图片分辨率约束

  • 输入图片分辨率

    版本

    分辨率范围

    Atlas 200/300/500 推理产品

    Atlas 训练系列产品

    Atlas 推理系列产品

    最大分辨率:8192 * 8192,最小分辨率:32 * 32。

    Atlas A2训练系列产品/Atlas 800I A2推理产品

    Atlas 200I/500 A2推理产品

    最大分辨率:16384 * 16384,最小分辨率:32 * 32。

  • 输出图片分辨率

    JPEGD只对图片解码,不会改变图片分辨率,因此输出与输入的图片分辨率保持一致。

图片格式、宽高对齐、内存约束

实现JPEGD图片解码功能时,需调用acl.media.dvpp_malloc接口申请Device上的输入、输出内存,调用acl.media.dvpp_free接口释放输入、输出内存,这部分内存的生命周期由用户自行管理。

  • 输入内存的大小就是指实际的输入图片所占用的大小。
  • 输出内存的大小,可调用acl.media.dvpp_jpeg_predict_dec_size接口预估,计算公式参见下表。

实现JPEGD图片解码功能时,仅支持Huffman编码,压缩前的原图像色彩空间为YUV,像素的各分量比例为4 : 4 : 4或4 : 2 : 2或4 : 2 : 0或4 : 0 : 0或4 : 4 : 0,不支持算术编码、不支持渐进JPEG格式、不支持JPEG2000格式。

输出图片格式的定义请参见acldvppPixelFormat,宽Stride、高Stride等概念请参见基本概念

表2 图片格式、宽高对齐、内存大小约束

输入图片格式(YUV分量比例)

输出图片格式

输出图片宽、高对齐要求

输出图片宽Stride、高Stride、内存大小要求

Atlas 200/300/500 推理产品

Atlas 训练系列产品

输出图片宽Stride、高Stride、内存大小要求

Atlas 推理系列产品

Atlas 200I/500 A2推理产品

Atlas A2训练系列产品/Atlas 800I A2推理产品

jpeg(444)

YVU444SP 8bit

无对齐要求

宽Stride为宽128对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3

宽Stride为宽64对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3

YUV444SP 8bit

YUV420SP NV12 8bit

宽2对齐

高2对齐

宽Stride为宽128对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3/2

宽Stride为宽64对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3/2

YUV420SP NV21 8bit

jpeg(422)

YVU422SP 8bit

宽2对齐

高2对齐

宽Stride为宽128对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 2

宽Stride为宽64对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 2

YUV422SP 8bit

YUV420SP NV12 8bit

宽2对齐

高2对齐

宽Stride为宽128对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3/2

宽Stride为宽64对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3/2

YUV420SP NV21 8bit

jpeg(420)

YUV420SP NV12 8bit

宽2对齐

高2对齐

宽Stride为宽128对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3/2

宽Stride为宽64对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3/2

YUV420SP NV21 8bit

jpeg(400)

YUV420SP NV12 8bit

宽2对齐

高2对齐

宽Stride为宽128对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3/2

宽Stride为宽64对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3/2

YUV420SP NV21 8bit

YUV400 8bit

Atlas 200/300/500 推理产品Atlas 训练系列产品不支持该格式

无对齐要求

宽Stride为宽128对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 2

宽Stride为宽64对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride

jpeg(440)

YVU440SP 8bit

宽2对齐

高2对齐

宽Stride为宽128对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 2

宽Stride为宽64对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 2

YUV440SP 8bit

YUV420SP NV12 8bit

宽2对齐

高2对齐

宽Stride为宽128对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3/2

宽Stride为宽64对齐后的值。

高Stride为高16对齐后的值。

内存大小(单位Byte)≥ 宽Stride * 高Stride * 3/2

YUV420SP NV21 8bit

软、硬件约束

  • 硬件约束
    • 最多支持4张Huffman表,其中包括2张DC(直流)表和2张AC(交流)表。
    • 最多支持3张量化表。
    • 只支持8bit采样精度。
    • 只支持对顺序式编码的图片进行解码。
    • 只支持基于DCT(Discrete Cosine Transform)变换的JPEG格式解码。
    • 只支持一个SOS(Start of Scan)标志的图片解码。
  • 软件约束
    • 支持3个SOS标志的图片解码。
    • 支持mcu(Minimum Coded Unit)数据不足的异常图片解码。

精度相关约束

Atlas 200/300/500 推理产品上,JPEGD+VPC串联使用时,由于JPEGD解码后的输出图片的宽Stride * 高Stride有128 * 16对齐的约束,因此解码后的输出图片的宽、高有一些补边的无效数据,所以在执行VPC功能时(例如缩放时),需调用acl.media.dvpp_set_pic_desc_width和acl.media.dvpp_set_pic_desc_height接口正确设置输入图片的原图宽高,这样VPC在缩放图片前会先根据原图宽高自行抠图,目的是去除无效数据对图像精度的影响。

Atlas 训练系列产品上,JPEGD+VPC串联使用时,由于JPEGD解码后的输出图片的宽Stride * 高Stride有128 * 16对齐的约束,因此解码后的输出图片的宽、高有一些补边的无效数据,所以在执行VPC功能时(例如缩放时),需调用acl.media.dvpp_set_pic_desc_width和acl.media.dvpp_set_pic_desc_height接口正确设置输入图片的原图宽高,这样VPC在缩放图片前会先根据原图宽高自行抠图,目的是去除无效数据对图像精度的影响。

Atlas 200I/500 A2推理产品上,JPEGD+VPC串联使用时,由于JPEGD解码后的输出图片的宽Stride * 高Stride有64 * 16对齐的约束,因此解码后的输出图片的宽、高有一些补边的无效数据,所以在执行VPC功能时(例如缩放时),需调用acl.media.dvpp_set_pic_desc_width和acl.media.dvpp_set_pic_desc_height接口正确设置输入图片的原图宽高,这样VPC在缩放图片前会先根据原图宽高自行抠图,目的是去除无效数据对图像精度的影响。

Atlas 推理系列产品上,JPEGD+VPC串联使用时,由于JPEGD解码后的输出图片的宽Stride * 高Stride有64 * 16对齐的约束,因此解码后的输出图片的宽、高有一些补边的无效数据,所以在执行VPC功能时(例如缩放时),需调用acl.media.dvpp_set_pic_desc_width和acl.media.dvpp_set_pic_desc_height接口正确设置输入图片的原图宽高,这样VPC在缩放图片前会先根据原图宽高自行抠图,目的是去除无效数据对图像精度的影响。

Atlas A2训练系列产品/Atlas 800I A2推理产品上,JPEGD+VPC串联使用时,由于JPEGD解码后的输出图片的宽Stride * 高Stride有64 * 16对齐的约束,因此解码后的输出图片的宽、高有一些补边的无效数据,所以在执行VPC功能时(例如缩放时),需调用acl.media.dvpp_set_pic_desc_width和acl.media.dvpp_set_pic_desc_height接口正确设置输入图片的原图宽高,这样VPC在缩放图片前会先根据原图宽高自行抠图,目的是去除无效数据对图像精度的影响。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词