Qualcomm Aimet 效率工具包文档说明

编号:KBA-231226181840

1. 设置环境

1.1. 安装 Nvidia 驱动和 CUDA

1.2. 安装相关Python库

python3 -m pip 安装 –升级 –忽略已安装的 pip
python3 -m pip 安装 –忽略已安装的 gdown
python3 -m pip 安装 –忽略已安装的 opencv-python
python3 -m pip 安装 –忽略已安装的 torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html
python3 -m pip 安装 –忽略已安装的 jax
python3-m pip安装-忽略安装的ftfy
python3 -m pip 安装 –忽略已安装的 torchinfo
python3 -m pip install –ignore-installed https://github.com/quic/aimet/releases/download/1.25.0/AimetCommon-torch_gpu_1.25.0-cp38-cp38-linux_x86_64.whl
python3 -m pip install –ignore-installed https://github.com/quic/aimet/releases/download/1.25.0/AimetTorch-torch_gpu_1.25.0-cp38-cp38-linux_x86_64.whl
python3 -m pip 安装 –忽略已安装的 numpy==1.21.6
python3 -m pip 安装 –忽略已安装的 psutil

1.3. 克隆 aimet-model-zoo

git 克隆 https://github.com/quic/aimet-model-zoo.git
cd aimet-模型动物园
git checkout d09d2b0404d10f71a7640a87e9d5e5257b028802
导出 PYTHONPATH=${PYTHONPATH}:${PWD}

1.4. 下载 Set14

wget https://uofi.box.com/shared/static/igsnfieh4lz68l926l8xbklwsnnk8we9.zip
unzip igsnfieh4lz68l926l8xbklwsnnk8we9.zip

1.5.修改第39行aimet-model-zoo/aimet_zoo_torch/quicksrnet/dataloader/utils.py

改变
对于 glob.glob(os.path.join(test_images_dir,“*”) 中的 img_path:

对于 glob.glob(os.path.join(test_images_dir,“*_HR.*”) 中的 img_path:

1.6. 运行评估。

# 在 YOURPATH/aimet-model-run 下运行
# 对于 quicksrnet_small_2x_w8a8
python3 aimet_zoo_torch/quicksrnet/评估器/quicksrnet_quanteval.py \
–模型配置 quicksrnet_small_2x_w8a8 \
–数据集路径../Set14/image_SRF_4

# 对于 quicksrnet_small_4x_w8a8
python3 aimet_zoo_torch/quicksrnet/评估器/quicksrnet_quanteval.py \
–模型配置 quicksrnet_small_4x_w8a8 \
–数据集路径../Set14/image_SRF_4

# 对于 quicksrnet_medium_2x_w8a8
python3 aimet_zoo_torch/quicksrnet/评估器/quicksrnet_quanteval.py \
–模型配置 quicksrnet_medium_2x_w8a8 \
–数据集路径../Set14/image_SRF_4

# 对于 quicksrnet_medium_4x_w8a8
python3 aimet_zoo_torch/quicksrnet/评估器/quicksrnet_quanteval.py \
–模型配置 quicksrnet_medium_4x_w8a8 \
–数据集路径../Set14/image_SRF_4

假设您将获得aimet模拟模型的PSNR值。您可以更改模型配置以适应不同大小的QuickSRNet,选项位于aimet-modelzoo/aimet_zoo_torch/quicksrnet/model/model_cards/下。

2 添加补丁

2.1. 打开“导出到 ONNX 步骤修订版.docx”

2.2. 跳过 git commit id

2.3. 第 1 部分守则

在最后一行(第 1 行之后)添加整个 366. 代码 aimet-model-zoo/aimet_zoo_torch/quicksrnet/model/models.py

2.4. 第 2 和第 3 条守则

在第 2 行下添加全部 3、93 代码 aimet-model-zoo/aimet_zoo_torch/quicksrnet/evaluators/quicksrnet_quanteval.py

2.5. load_model函数中的关键参数

模型 = load_model(MODEL_PATH_INT8,

模型名称,
MODEL_ARGS.获取(MODEL_NAME)。获取(MODEL_CONFIG),
use_quant_sim_model=True,
编码路径=编码路径,
quantsim_config_path=配置路径,
校准数据=图像LR,
使用_cuda=真,
before_quantization=True,
convert_to_dcr=真)

MODEL_PATH_INT8 = aimet_zoo_torch/quicksrnet/model/weights/quicksrnet_small_2x_w8a8/pre_opt_weights
模型名称 = QuickSRNetSmall
MODEL_ARGS.get(MODEL_NAME).get(MODEL_CONFIG) = {'scaling_factor': 2}
编码路径 = aimet_zoo_torch/quicksrnet/模型/权重/quicksrnet_small_2x_w8a8/adaround_encodings
CONFIG_PATH = aimet_zoo_torch/quicksrnet/model/weights/quicksrnet_small_2x_w8a8/aimet_config

请根据 QuickSRNet 的大小替换变量

2.6 模型尺寸修改

  1. aimet-model-zoo/aimet_zoo_torch/quicksrnet/model/model_cards/*.json 中的“input_shape”
  2. aimet-model-zoo/aimet_zoo_torch/quicksrnet/model/inference.py 中的函数 load_model(…) 内部
  3. 函数 export_to_onnx(…, input_height, input_width) 内的参数来自“导出到 ONNX 步骤修订版.docx”

2.7 再次运行 1.6 以导出 ONNX 模型

3. 转换为 SNPE

3.1. 转换

${SNPE_ROOT}/bin/x86_64-linux-clang/snpe-onnx-to-dlc \
–输入网络模型.onnx \
–quantization_overrides./model.encodings

3.2. (可选)仅提取量化的 DLC

(可选)snpe-dlc-quant –input_dlc model.dlc –float_fallback –override_params

3.3. (重要)ONNX I/O 按照 NCHW 顺序;转换后的 DLC 按照 NHWC 顺序

文件/资源

Qualcomm Aimet 效率工具包文档 [pdf] 指示
quicksrnet_small_2x_w8a8、quicksrnet_small_4x_w8a8、quicksrnet_medium_2x_w8a8、quicksrnet_medium_4x_w8a8、Aimet 效率工具包文档、效率工具包文档、工具包文档、文档

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *