下载
中文
注册

离线模型支持动态BatchSize/动态分辨率

场景介绍

某些推理场景,如检测出目标后再执行目标识别网络,由于目标个数不固定导致目标识别网络输入BatchSize不固定。如果每次推理都按照最大的BatchSize或最大分辨率进行计算,会造成计算资源浪费。因此,模型转换需要支持动态BatchSize和动态分辨率的设置,使用ATC工具时,通过--dynamic_batch_size参数设置支持的BatchSize档位,通过--dynamic_image_size参数设置支持的分辨率档位。

转换方法

如下转换示例以TensorFlow框架ResNet50网络模型为例进行演示,参见1获取原始模型文件。

  1. 以CANN软件包运行用户登录开发环境,并将模型转换过程中用到的模型文件(*.pb)上传到开发环境任意路径,例如上传到$HOME/module/目录下。
  2. atc命令中加入--dynamic_batch_size参数或者--dynamic_image_size,执行如下命令生成离线模型。(如下命令中使用的目录以及文件均为样例,请以实际为准)
    • 动态BatchSize
      atc --model=$HOME/module/resnet50_tensorflow*.pb  --framework=3 --output=$HOME/module/out/tf_resnet50 --soc_version=<soc_version> --input_shape="Placeholder:-1,224,224,3"  --dynamic_batch_size="1,2,4,8"  
    • 动态分辨率
      atc --model=$HOME/module/resnet50_tensorflow*.pb  --framework=3 --output=$HOME/module/out/tf_resnet50 --soc_version=<soc_version>  --input_shape="Placeholder:1,-1,-1,3"  --dynamic_image_size="224,224;448,448"  
    关于参数的详细解释以及使用方法请参见参数说明。若提示如下信息,则说明模型转换成功,若模型转换失败,则请参见错误码参考进行定位。
    ATC run success

    成功执行命令后,在--output参数指定的路径下,可查看离线模型(如:tf_resnet50.om)。

    模型转换完成后,在生成的om模型中,会新增一个输入,在模型推理时通过该新增的输入提供具体的Batch值(或分辨率值)。例如,a输入的BatchSize是动态的(或分辨率是动态的),在om模型中,会有与a对应的b输入来描述a的BatchSize(或分辨率取值)。