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

动态分辨率

本节介绍如何在模型构建时支持动态分辨率的功能。

功能介绍

在模型推理时,对于每次处理图片宽和高不固定的场景,用户可以在模型构建时设置不同的图片宽高档位。

使用方法

  1. 在Data算子定义时,将数据shape的HW维度都设置为-1:
    1
    2
    3
    4
    5
        auto shape_data = vector<int64_t>({ 8,3,-1,-1 });
        TensorDesc desc_data(ge::Shape(shape_data), FORMAT_ND, DT_FLOAT);
        auto data = op::Data("data");
        data.update_input_desc_data(desc_data);
        data.update_output_desc_out(desc_data);
    
  2. 模型编译时,在aclgrphBuildModel接口options中设置INPUT_SHAPE/INPUT_FORMAT信息,同时通过DYNAMIC_IMAGE_SIZE指定动态分辨率的档位。

    • INPUT_FORMAT必须设置并且和所有Data算子的format保持一致,且仅支持NCHW和NHWC,否则会导致模型编译失败。
    • INPUT_SHAPE可选设置。如果不设置,系统直接读取对应Data节点的shape信息,如果设置,以此处设置的为准,同时刷新对应Data节点的shape信息。
    1
    2
    3
    4
    5
    6
    7
    void PrepareOptions(std::map<AscendString, AscendString>& options) {
        options.insert({
            {ge::ir_option::INPUT_FORMAT, "NCHW"},         
            {ge::ir_option::INPUT_SHAPE, "data: 8,3,-1,-1"},      
            {ge::ir_option::DYNAMIC_IMAGE_SIZE, "416,416;832,832"}  // 设置HW档位,支持处理HW为416,416,或者832,832的图片
        });
    }
    

使用注意事项

  • 该功能不能和动态Batch、动态维度同时使用。
  • 如果用户设置的分辨率数值过大或档位过多,可能会导致模型编译失败,此时建议用户减少档位或调低档位数值。
  • 如果模型编译时通过该参数设置了动态分辨率,则使用应用工程进行模型推理时,在模型执行接口之前:
  • 如果用户设置了动态分辨率,即输入图片的宽和高不确定,同时又通过INSERT_OP_FILE参数设置了静态AIPP功能:该场景下,AIPP配置文件中不能开启Crop和Padding功能,并且需要将配置文件中的src_image_size_w和src_image_size_h取值设置为0。
  • 如果用户设置了动态分辨率,同时又通过INSERT_OP_FILE参数设置了动态AIPP功能:

    实际推理时,调用aclmdlSetInputAIPP接口,设置动态AIPP相关参数值时,不能开启Crop和Padding功能。该场景下,还需要确保通过aclmdlSetInputAIPP接口设置的宽和高与aclmdlSetDynamicHWSize接口设置的宽、高相等,都必须设置成动态分辨率最大档位的宽、高。

  • 某些场景下,通过该参数设置动态分辨率特性后,生成的离线模型网络结构会与固定分辨率场景下的不同,推理性能可能存在差异。
  • 如果用户设置了动态分辨率,实际推理时,使用的数据集图片大小需要与具体使用的分辨率相匹配。
  • 如果用户设置的分辨率数值过大或档位过多,在运行环境执行推理时,建议执行swapoff -a命令关闭swap交换区间作为内存的功能,防止出现由于内存不足,将swap交换空间作为内存继续调用,导致运行环境异常缓慢的情况。
搜索结果
找到“0”个结果

当前产品无相关内容

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