赞
踩
代码如下
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()
报错如下.
(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'
这应该是没读取成功. 有可能是编码问题.
也有可能是onnx文件有问题.
另外rknn只能转换 jit 方式保存的pytorch模型,普通的权重pt文件是不能转换的。。。如何转换请参考rknntoolkit 下面的 pytorch 示例代码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。