高通SNPE

DL Container Loader: SNPE使用后缀为dlc的模型文件,提供了模型load函数。

Model Validation: 检查输入模型与所选择的运行后端是否合法。

Runtime Engine: 选择运行模式的API,包括CPU,GPU,DSP和AIP四种运行模式。

Partitioning Logic: 模型处理API,包括检查网络layer的合法性,调度网络的runtime。

CPU Runtime:CPU运行模型,支持32-bit和8-bit量化模型。

GPU Runtime:GPU运行模型,支持混合或完整16位浮点模式。

DSP Runtime: Hexagon DSP运行模型,使用Q6和hexagon NN,在HVX上运行,只支持8-bit量化模型。

AIP Runtime: Hexagon DSP运行模型,使用Q6,Hexgaon NN和HTA,只支持8-bit量化模型。

SNPE SDK:https://developer.qualcomm.com/sites/default/files/docs/snpe/model_conversion.html

pytorch -> dlc

训练好的pytorch模型需要先转成TorchScript模型(.pt),然后再通过snpe-pytorch-to-dlc转为dlc格式的文件。

import torch
import torchvision.models as models
resnet18_model = models.resnet18()
input_shape = [1, 3, 224, 224]
input_data = torch.randn(input_shape)
script_model = torch.jit.trace(resnet18_model, input_data)
script_model.save('resnet18.pt')
snpe-pytorch-to-dlc --input_network resnet18.pt \
					--input_dim input "1,3,224,224"
					--output_path resnet18.dlc

SNPE和pytorch的转换器目前仅支持浮点输入数据类型。

ONNX -> dlc

snpe-onnx-to-dlc --input_network bvlc_alexnet.onnx \
				 --output_path bvlc_alexnet.dlc

Quantizing a Model

snpe-dlc-quantize --input_dlc inception_v3.dlc \
				  --input_list image_file_list.txt \
				  --output_dlc inception_v3_quantized.dlc

image list指定用于量化的原始图像文件路径。这个工具需要在模型转换时,batch size设为1。推理时,通过模型初始化阶段,resize这个网络,可以将batch size改为任意值。

你可能感兴趣的:(Qualcomm,计算机视觉)