Toybrick

关于onnx转rknn时loading model失败的问题

求大佬指教

中级会员

积分
241
楼主
发表于 2019-11-12 21:37:17    查看: 11335|回复: 5 | [复制链接]    打印 | 只看该作者
本帖最后由 求大佬指教 于 2019-11-13 12:03 编辑

环境配置:
1、固件V1.5
2、rknn-toolkit-V1.1.0
3、tensorflow-1.10
4、fedora28自带的python-3.6

模型转换代码:

  1. #coding=gbk
  2. from rknn.api import RKNN

  3. if __name__ == '__main__':

  4.         # 初始化模型(可不要参数)
  5.         # verbose = True/False 是否在屏幕上打印详细日志信息
  6.         # verbose_file = '***' 将日志信息保存到指定.log文件路径
  7.         rknn = RKNN(verbose = True,verbose_file = './e.log')
  8.         
  9.         # 加载模型
  10.         # model:onnx模型文件(.onnx后缀)所在路径
  11.         # 返回值:0(成功)、-1(失败)
  12.         print('--> Loading model')
  13.         ret = rknn.load_onnx(model = './yolov3.onnx')
  14.         if ret != 0:
  15.                 print('Load model failed!')
  16.                 exit(ret)
  17.         print('done')
  18.         
  19.         # 构建模型(根据导入的Caffe、TensorFlow、TensorFlow Lite模型,构建对应的RKNN模型)
  20.         # do_quantization:是否对模型进行量化True/False
  21.         # dataset:量化矫正数据的数据集。可以是单个图片路径或者包含多个图片路径的.txt文件
  22.         # 返回值:0(成功)、-1(失败)
  23.         print('--> Building model')
  24.         ret = rknn.build(do_quantization = False)
  25.         if ret != 0:
  26.                 print('Build model failed!')
  27.                 exit(ret)
  28.         print('done')
  29.         
  30.         # 导出模型
  31.         # export_path:导出模型文件(.rknn后缀)的路径
  32.         # 返回值:0(成功)、-1(失败)
  33.         print('--> Export RKNN model')
  34.         ret = rknn.export_rknn(export_path = './yolov3.rknn')
  35.         if ret != 0:
  36.                 print('Export model failed!')
  37.                 exit(ret)
  38.         print('done')
  39.         
  40.         rknn.release()
复制代码
执行以后一直停在Loading model
过了好久就直接Killed了,查看输出的日志是空白的,一个字也没有~


同样的文件,在虚拟机上报错日志如下
  1. D Save log info to: ./logg.log
  2. E Catch exception when loading onnx model: yolo.onnx!
  3. E Traceback (most recent call last):
  4. E   File "rknn/api/rknn_base.py", line 343, in rknn.api.rknn_base.RKNNBase.load_onnx
  5. E   File "rknn/base/RKNNlib/converter/convert_onnx.py", line 523, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx.__init__
  6. E   File "rknn/base/RKNNlib/converter/convert_onnx.py", line 527, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx.__init__
  7. E   File "rknn/base/RKNNlib/converter/onnx_util.py", line 154, in rknn.base.RKNNlib.converter.onnx_util.ONNXProto_Util.optim_model
  8. E   File "/home/aaa/venv/lib/python3.5/site-packages/onnx/optimizer.py", line 55, in optimize
  9. E     optimized_model_str = C.optimize(model_str, passes)
  10. E IndexError: _Map_base::at
复制代码

请问有谁知道是什么问题吗?
.onnx模型文件https://pan.baidu.com/s/1mx090cf84amQ4EAIAHdOfg

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

jefferyzhang

版主

积分
13578
沙发
发表于 2019-11-13 08:18:39 | 只看该作者
1. 请先确认你的onnx模型是可以正常读取和使用的。
2. 附件可以传百度网盘,然后把链接发上来,不要只发模型,要把你转换的代码一起发上来
回复

使用道具 举报

求大佬指教

中级会员

积分
241
板凳
 楼主| 发表于 2019-11-13 12:10:03 | 只看该作者
本帖最后由 求大佬指教 于 2019-11-13 19:25 编辑
hisping 发表于 2019-11-13 08:55
确认下内存够不够,不够需要开了swap虚拟内存,大模型转化非常消耗内存的,而且转化建议开启预编译选项可以 ...

1.所说的内存,是运行内存还是存储内存(已解决,是运行内存)
2.swap虚拟内存如何开启(已解决,https://blog.csdn.net/wo18237095579/article/details/80363397
3.请问如何开启预编译,是config函数吗(已解决,是在build里面的参数pre_compile,但是问题是出现在load过程中,build在load之后,还未进入build)
回复

使用道具 举报

求大佬指教

中级会员

积分
241
地板
 楼主| 发表于 2019-11-13 17:45:48 | 只看该作者
hisping 发表于 2019-11-13 08:55
确认下内存够不够,不够需要开了swap虚拟内存,大模型转化非常消耗内存的,而且转化建议开启预编译选项可以 ...

已创建swap虚拟内存,报错日志如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

Chambers

新手上路

积分
40
5#
发表于 2020-5-25 17:48:43 | 只看该作者
hello,我自己训练了一个pytorch-efficientNet,转换为onnx以后,onnx2rknn遇到类似的错误,请教一下,如何解决的?
回复

使用道具 举报

Chambers

新手上路

积分
40
6#
发表于 2020-5-25 17:51:52 | 只看该作者
报错如下:
  * https://github.com/tensorflow/addons
If you depend on functionality not listed there, please file an issue.

/home/air/.local/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)
--> config model
done
D Save log info to: ./e.log
E Catch exception when loading onnx model: efficient-b0-140.onnx!
E Traceback (most recent call last):
E   File "rknn/api/rknn_base.py", line 343, in rknn.api.rknn_base.RKNNBase.load_onnx
E   File "rknn/base/RKNNlib/converter/convert_onnx.py", line 523, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx.__init__
E   File "rknn/base/RKNNlib/converter/convert_onnx.py", line 527, 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 "/home/air/.local/lib/python3.6/site-packages/onnx/optimizer.py", line 55, in optimize
E     optimized_model_str = C.optimize(model_str, passes)
E IndexError: _Map_base::at
Load model failed!
回复

使用道具 举报

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

本版积分规则

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


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