当前位置:   article > 正文

rknn-toolkit onnx转rknn报错_from rknn.api import rknn报错

from rknn.api import rknn报错

代码如下

from rknn.api import RKNN  
 
INPUT_SIZE = 64
 
if __name__ == '__main__':
    # 创建RKNN执行对象
    rknn = RKNN()
    # 配置模型输入,用于NPU对数据输入的预处理
    # channel_mean_value='0 0 0 255',那么模型推理时,将会对RGB数据做如下转换
    # (R - 0)/255, (G - 0)/255, (B - 0)/255。推理时,RKNN模型会自动做均值和归一化处理
    # reorder_channel=’0 1 2’用于指定是否调整图像通道顺序,设置成0 1 2即按输入的图像通道顺序不做调整
    # reorder_channel=’2 1 0’表示交换0和2通道,如果输入是RGB,将会被调整为BGR。如果是BGR将会被调整为RGB
    #图像通道顺序不做调整
    rknn.config(channel_mean_value='0 0 0 255', reorder_channel='0 1 2')
 
    # 加载TensorFlow模型
    # tf_pb='digital_gesture.pb'指定待转换的TensorFlow模型
    # inputs指定模型中的输入节点
    # outputs指定模型中输出节点
    # input_size_list指定模型输入的大小
    print('--> Loading model')
    # rknn.load_tensorflow(tf_pb='digital_gesture.pb',
    #                      inputs=['input_x'],
    #                      outputs=['probability'],
    #                      input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])

    rknn.load_onnx("/home/roota/Desktop/AI/rknntools/deeplabv3model.pb.onnx")
    print('done')
 
    # 创建解析pb模型
    # do_quantization=False指定不进行量化
    # 量化会减小模型的体积和提升运算速度,但是会有精度的丢失
    print('--> Building model')
    rknn.build(do_quantization=False)
    print('done')
 
    # 导出保存rknn模型文件
    rknn.export_rknn('./digital_gesture.rknn')
 
    # Release RKNN Context
    rknn.release()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

报错如下.

(rknntools) roota@ubuntu:~/Desktop/AI/rknntools/bin$ /home/roota/Desktop/AI/rknntools/bin/python3 /home/roota/Desktop/AI/rknntools/code/onnx2rknn.py
--> Loading model
/home/roota/Desktop/AI/rknntools/lib/python3.6/site-packages/onnx_tf/common/__init__.py:87: UserWarning: FrontendHandler.get_outputs_names is deprecated. It will be removed in future release.. Use node.outputs instead.
  warnings.warn(message)
E Catch exception when loading onnx model: /home/roota/Desktop/AI/rknntools/deeplabv3model.pb.onnx!
E Traceback (most recent call last):
E   File "rknn/api/rknn_base.py", line 556, in rknn.api.rknn_base.RKNNBase.load_onnx
E   File "rknn/base/RKNNlib/converter/convert_onnx.py", line 497, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx.__init__
E   File "rknn/base/RKNNlib/converter/convert_onnx.py", line 500, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx.__init__
E   File "/home/roota/Desktop/AI/rknntools/lib/python3.6/site-packages/onnx/checker.py", line 86, in check_model
E     C.check_model(model.SerializeToString())
E onnx.onnx_cpp2py_export.checker.ValidationError: Your model ir_version is higher than the checker's.
done
--> Building model
Traceback (most recent call last):
  File "/home/roota/Desktop/AI/rknntools/code/onnx2rknn.py", line 34, in <module>
    rknn.build(do_quantization=False)
  File "/home/roota/Desktop/AI/rknntools/lib/python3.6/site-packages/rknn/api/rknn.py", line 231, in build
    inputs = self.rknn_base.net.get_input_layers()
AttributeError: 'NoneType' object has no attribute 'get_input_layers'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

这应该是没读取成功. 有可能是编码问题.
也有可能是onnx文件有问题.

另外rknn只能转换 jit 方式保存的pytorch模型,普通的权重pt文件是不能转换的。。。如何转换请参考rknntoolkit 下面的 pytorch 示例代码。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/854439
推荐阅读
相关标签
  

闽ICP备14008679号