Toybrick

onnx转rknn报错

liuwenhua

中级会员

积分
378
发表于 2020-5-20 16:07:34    查看: 21159|回复: 15 | [复制链接]    打印 | 显示全部楼层
E:\usb_test\example\rknn_win_env\lib\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: ./model_openpose.onnx!
E Traceback (most recent call last):
E   File "rknn\api\rknn_base.py", line 510, in rknn.api.rknn_base.RKNNBase.load_onnx
E   File "rknn\base\RKNNlib\converter\convert_onnx.py", line 494, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx.__init__
E   File "rknn\base\RKNNlib\converter\convert_onnx.py", line 502, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx.__init__
E   File "rknn\base\RKNNlib\converter\onnx_util.py", line 154, in rknn.base.RKNNlib.converter.onnx_util.ONNXProto_Util.optim_model
E   File "E:\usb_test\example\rknn_win_env\lib\site-packages\onnx\optimizer.py", line 55, in optimize
E     optimized_model_str = C.optimize(model_str, passes)
E IndexError: invalid unordered_map<K, T> key
Load model failed!

回复

使用道具 举报

jefferyzhang

版主

积分
12844
发表于 2020-5-20 16:30:44 | 显示全部楼层
先试下你的onnx模型能不能被onnx正确加载和推理
回复

使用道具 举报

undefined

新手上路

积分
21
发表于 2020-5-20 16:32:27 | 显示全部楼层
rknn_toolkit调用了ONNX的optimizer进行图优化,optimizer需要读取权重值,因此需要把所有的初始化权重都放到ONNX计算图的input中。
具体pytorch是export时候设置keep_initializers_as_inputs=True
回复

使用道具 举报

liuwenhua

中级会员

积分
378
 楼主| 发表于 2020-5-20 16:41:14 | 显示全部楼层
jefferyzhang 发表于 2020-5-20 16:30
先试下你的onnx模型能不能被onnx正确加载和推理

onnx模型是可以正常推理的
回复

使用道具 举报

jefferyzhang

版主

积分
12844
发表于 2020-5-20 16:48:29 | 显示全部楼层
请提供:
rknntoolkit版本号
onnx版本号
onnx模型和转换脚本。

(如果你rknntoolkit不是在1.3.2上测试的,请更新rknntoolkit到1.3.2测试后再报bug)
回复

使用道具 举报

liuwenhua

中级会员

积分
378
 楼主| 发表于 2020-5-20 17:25:25 | 显示全部楼层
jefferyzhang 发表于 2020-5-20 16:48
请提供:
rknntoolkit版本号
onnx版本号

rknntoolkit是1.3.2
onnx是1.4.1
模型链接  链接:https://pan.baidu.com/s/1OJXfVwToJCpsqxcoGJK_kg
提取码:5qmh

转换代码如下

from rknn.api import RKNN
import cv2
import time
import numpy as np

if __name__ == '__main__':

    # Create RKNN object
    rknn = RKNN(verbose=True)
   
    # pre-process config
    print('--> config model')
    # 配置模型输入,用于NPU对数据输入的预处理
    # channel_mean_value='0 0 0 255',那么模型推理时,将会对RGB数据做如下转换
    # (R - 0)/255, (G - 0)/255, (B - 0)/255。推理时,RKNN模型会自动做均值和归一化处理
    # reorder_channel=’0 1 2’用于指定是否调整RBG顺序,设置成0 1 2即按输入的RGB顺序不做调整
    # reorder_channel=’2 1 0’表示交换0和2通道,如果输入是RGB,将会被调整为BGR。如果是BGR将会被
    # 调整为BGR   
    rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2')
    print('done')

    # Load tensorflow model
    ret = rknn.load_onnx(model = './model_openpose.onnx')
    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')

    # Build model
    print('--> Building model')

    ret = rknn.build(do_quantization=False)
    #ret = rknn.build(do_quantization=True, dataset='./datasets.txt')
    if ret != 0:
        print('Build model failed!')
        exit(ret)
    print('done')
    # Export rknn model
    print('--> Export RKNN model')
    ret = rknn.export_rknn('./model_openpose_test.rknn')
    if ret != 0:
        print('Export model failed!')
        exit(ret)
    print('done')

    rknn.release()





回复

使用道具 举报

jefferyzhang

版主

积分
12844
发表于 2020-5-21 08:47:28 | 显示全部楼层
已经上报了
回复

使用道具 举报

liuwenhua

中级会员

积分
378
 楼主| 发表于 2020-5-21 10:44:10 | 显示全部楼层

期待好消息
回复

使用道具 举报

liuwenhua

中级会员

积分
378
 楼主| 发表于 2020-5-22 09:34:36 | 显示全部楼层

上报,有消息吗?谢谢
回复

使用道具 举报

jefferyzhang

版主

积分
12844
发表于 2020-5-22 10:04:01 | 显示全部楼层
liuwenhua 发表于 2020-5-22 09:34
上报,有消息吗?谢谢

哪有这么快,急的话你们要通过FAE报告bug。这里只是社区而已,单向收集问题。
他们有回复我的话我才会回你们
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表