准备模型文件和量化信息文件

全网层信息文件

以下介绍通过ATC模型转换工具获取离线模型的操作步骤,更多操作请参见ATC工具使用指南

  1. 登录安装了Ascend-cann-toolkit开发套件包的昇腾AI环境。
  2. 获取原始模型文件并保存在任意目录下。

    例如:resnet50.prototxt和resnet50.caffemodel

  3. 执行ATC模型转换。

    atc --model=$HOME/module/resnet50.prototxt --weight=$HOME/module/resnet50.caffemodel --framework=0 --output=$HOME/module/out/caffe_resnet50 --soc_version=Ascend310B1 
    若提示如下信息,则说明模型转换成功。
    ATC run success

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

  4. 生成json文件。

    atc --mode=1 --om=$HOME/module/out/caffe_resnet50/resnet50.om --json=/home/HwHiAiUser/data/resnet50.json

量化原始模型和量化信息文件

以下介绍通过AMCT工具获取量化信息文件的操作步骤,更多操作请参见AMCT工具(Caffe)

  1. 参见AMCT工具(Caffe)的“工具安装”章节完成工具安装。
  2. 获取原始模型文件并保存在任意目录下。

    例如:resnet50.prototxt和resnet50.caffemodel

  3. 准备模型相匹配的二进制数据集。

    1. 切换到amct_caffe/cmd目录,执行如下命令,用于下载校准数据集。
      cd data 
      mkdir image && cd image
      wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/amct_acl/classification/calibration.rar
      unrar e calibration.rar
    2. 在amct_caffe/cmd目录,执行如下命令将calibration目录下*.jpg格式数据集转换为bin格式数据集。
      python3 ./src/process_data.py

      执行完成后,在data目录会生成新的calibration目录,并在该目录生成calibration.bin格式数据集。

  4. 执行如下命令进行网络模型的量化操作。

    amct_caffe calibration --model=./model/resnet50.prototxt --weights=./model/resnet50.caffemodel --save_path=./results --input_shape="data:1,3,224,224" --data_dir="./data/calibration" --data_types="float32"

  5. 若提示如下信息且无Error日志信息,则说明模型量化成功。

    INFO - [AMCT]:[Utils]: The weights_file is saved in $HOME/xxx/results/resnet50_fake_quant_weights.caffemodel
    INFO - [AMCT]:[Utils]: The model_file is saved in $HOME/xxx/results/resnet50_fake_quant_model.prototxt
    量化后生成文件说明如下:
    • resnet50_quant.json:量化信息文件,记录了量化模型同原始模型节点的映射关系,用于量化后模型同原始模型精度比对使用。
    • resnet50_deploy_model.prototxt:量化后的可在昇腾AI处理器部署的模型文件。
    • resnet50_deploy_weights.caffemodel:量化后的可在昇腾AI处理器部署的权重文件。
    • resnet50_fake_quant_model.prototxt:量化后的可在Caffe环境进行精度仿真模型文件。
    • resnet50_fake_quant_weights.caffemodel:量化后的可在Caffe环境进行精度仿真权重文件。

    resnet50_deploy_model.prototxt和resnet50_deploy_weights.caffemodel文件可用于进行ATC模型转换,resnet50_fake_quant_model.prototxt和resnet50_fake_quant_weights.caffemodel可用于进行Caffe量化原始模型的dump操作。

量化离线模型文件

将从量化原始模型和量化信息文件操作中获取到的量化原始模型文件resnet50_deploy_model.prototxt和resnet50_deploy_weights.caffemodel,以全网层信息文件中的ATC操作执行模型转换即可获取到量化离线模型文件和量化离线模型文件转换的json文件。