CANN AMCT量化官网自带的imagenet101模型报错
收藏回复举报
CANN AMCT量化官网自带的imagenet101模型报错
t('forum.solved') 已解决
新人帖
发表于2023-02-23 14:30:11
0 查看

请论坛大神帮忙分析分析,在使用官网自带的amct转换INT8量化模型的时候报错了!

错误信息:

root@ubuntu:/home/robot/Ascend/Code/samples-master/samples-master/python/level1_single_api/9_amct/amct_onnx/cmd# python3 src/eval_onnx.py

Traceback (most recent call last):

  File "src/eval_onnx.py", line 12, in <module>

    sess = rt.InferenceSession(model_path)

  File "/usr/local/python3.7.5/lib/python3.7/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 206, in __init__

    self._create_inference_session(providers, provider_options)

  File "/usr/local/python3.7.5/lib/python3.7/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 226, in _create_inference_session

    sess = C.InferenceSession(session_options, self._model_path, True, self._read_config_from_model)

onnxruntime.capi.onnxruntime_pybind11_state.InvalidGraph: [ONNXRuntimeError] : 10 : INVALID_GRAPH : Load model from /home/robot/Ascend/Code/samples-master/samples-master/python/level1_single_api/9_amct/amct_onnx/cmd/results/resnet101_v11_fake_quant_model.onnx failed:This is an invalid model. Error in Node:Conv_0.quant : No opset import for domain 'amct.customop'

转换后的模型见百度网盘链接: https://pan.baidu.com/s/1aZrWLWT_FbsYiL4MoRzGAw 提取码: yfij 复制这段内容后打开百度网盘手机App,操作更方便哦

转换的日志见附件

开发环境的系统环境都是按照官网推荐的版本(商用):

CANN:5.1.RC1

PYTHON:3.7.5

NUMPY:1.21.6

ONNX:1.8.0

ONNXRUNTIME:1.6.0

PROTOBUF:1.13.0

1.png

AMCT也使用官方匹配的版本安装:Ascend-cann-amct_5.1.RC1_linux-x86_64.tar.gz

自定义算子包按照https://www.hiascend.com/document/detail/zh/canncommercial/51RC1/devtools/auxiliarydevtool/atlasamctonnx_16_0015.html执行

2.png

量化模型转换过程按照官网https://www.hiascend.com/document/detail/zh/canncommercial/51RC1/devtools/auxiliarydevtool/atlasamctonnx_16_0020.html进行的.

测试代码:

import onnx

import numpy as np

import onnxruntime as rt

import cv2

import time

# model_path = '/home/robot/Ascend/Code/samples-master/samples-master/python/level1_single_api/9_amct/amct_onnx/cmd/model/resnet101_v11.onnx'

model_path = '/home/robot/Ascend/Code/samples-master/samples-master/python/level1_single_api/9_amct/amct_onnx/cmd/results/resnet101_v11_fake_quant_model.onnx'

onnx_model = onnx.load(model_path)

# onnx.checker.check_model(onnx_model)

sess = rt.InferenceSession(model_path)

# sess.set_providers(["TensorrtExecutionProvider"])

sess.set_providers(["CPUExecutionProvider"])

# sess.set_providers(["CUDAExecutionProvider"])

image = cv2.imread("/home/robot/Ascend/Code/samples-master/samples-master/python/level1_single_api/9_amct/amct_onnx/cmd/data/imagenet_calibration/images/african-grey-parrot-4424746__340.jpg")

image = cv2.resize(image, (224,224))

image = image.astype(np.float32)/255.0

#BGR->RGB

image = image.transpose(2,1,0)

image = np.array(image)[np.newaxis, :, :, :]

print(image.shape)

input_name_1 = sess.get_inputs()[0].name

output_name_1 = sess.get_outputs()[0].name

print("input_name_1:",input_name_1)

print("output_name_1:",output_name_1)

# print("output_name_2:",output_name_2)

i=0

while i<10:

    start = time.time()

    output = sess.run([output_name_1], {(input_name_1): image})

    print(type(output))

    print(len(output))

    print(len(output[0]))

    print(len(output[0][0]))

    print("max output",max(output[0][0]))

    print('spend time:',(time.time()-start)*1000.0,"ms")

    i+=1

我要发帖子