NPU跑AI模型的问题记录.

工作需要, 买了萤火虫的NPU开发板. RK3399Pro

1.在Linux Ubuntu 中,Vscode 不能找到模块. RKNN

原因是, linux中默认装了python 2.7 , 而RKNN是装在python 3.5下的.
解决方法很简单, 改一下vscode 的解释器即可
在这里插入图片描述
如果改了不管用, 可以在代码中的第一行加上 , 然后保存的时候会有个蓝色的提示弹出来. 请注意, 点击即可.

#!/usr/bin/python3.5
# -*- coding:utf-8 -*-

在这里插入图片描述

第2个问题. 报错如下.

Traceback (most recent call last):
  File "/home/firefly/Desktop/AI/toRKNNModel.py", line 43, in <module>
    rknn.build(do_quantization=False)
  File "/home/firefly/.local/lib/python3.5/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'

原因是我的代码一开始用错了方法, 使用的是 load_tensorflow 加载的模型, 这个方法只能加载TensorFlow的模型. 而我要加载的是onnx模型, 显然是不对的.

    rknn.load_tensorflow(tf_pb='aimodel.onnx',
                         inputs=['input_x'],
                         outputs=['probability'],
                         input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])

后查源代码中的示例, 改成, 下面的代码.

ret = rknn.load_onnx(model='aimodel.onnx') 
if ret != 0:
     print('Load aimodel.onnx failed!')
     exit(ret)
 print('done')

第3个问题,google.protobuf.message.DecodeError: Truncated message.

这个就有点头大了

 /usr/local/lib/python3.5/dist-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: deeplabv3model.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 498, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx.__init__
E   File "/home/firefly/.local/lib/python3.5/site-packages/google/protobuf/message.py", line 185, in ParseFromString
E     self.MergeFromString(serialized)
E   File "/home/firefly/.local/lib/python3.5/site-packages/google/protobuf/internal/python_message.py", line 1083, in MergeFromString
E     if self._InternalParse(serialized, 0, length) != length:
E   File "/home/firefly/.local/lib/python3.5/site-packages/google/protobuf/internal/python_message.py", line 1120, in InternalParse
E     pos = field_decoder(buffer, new_pos, end, self, field_dict)
E   File "/home/firefly/.local/lib/python3.5/site-packages/google/protobuf/internal/decoder.py", line 631, in DecodeField
E     raise _DecodeError('Truncated message.')
E google.protobuf.message.DecodeError: Truncated message.
Load deeplabv3model.onnx failed!

注意看是最后的一句话. Truncated message, 我刚开始只看了第一行, 搞了1个小时…晕.

经过一番搜索在 https://www.electronjs.org/apps/netron 下载到了 netron 神经网络模型查看器. 个人喜欢exe形式的程序, 比较简单.

经过一番百度.
https://blog.csdn.net/dou3516/article/details/111920462
看来可能是字符集的坑。
怀疑是文件读取后异常,大概率是字符集问题,查看并尝试修改系统字符集
通过locale命令看到系统字符集是C.UTF-8

修改为 en_US.UTF-8 修改方法 https://blog.csdn.net/aa1209551258/article/details/81745394
LANG=en_US.UTF-8
结果还是不行, 还是报同样的错误, 我怀疑是onnx文件有问题了.
于是我看了下onnx的文件大小是126mb, 而我自己电脑上的是200多mb… 明显的大小不一致

重新复制一份. 问题解决.不再提示这个问题. 但是提示 killed

读取没完成 提示 Killed.

你的设备显存不足

解决方法:想办法节约显存,比如(1)关闭其他进程;(2)禁用桌面显示系统;

安装rknntoolkit的时候报错

x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=562 -DPSUTIL_LINUX=1 -I/home/roota/Desktop/AI/rknntools/include -I/usr/include/python3.6m -c psutil/_psutil_common.c -o build/temp.linux-x86_64-3.6/psutil/_psutil_common.o
    psutil/_psutil_common.c:9:10: fatal error: Python.h: 没有那个文件或目录
     #include <Python.h>
              ^~~~~~~~~~
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

尝试安装 python-dev

sudo apt-get install python-dev

结果依旧报同样的错误,多数情况是可以解决的.
尝试使用

sudo apt-get install python3.6-dev

竟然OK通了. 这里主要的问题是版本问题.

再次执行. 下面的代码…

pip3 install rknn-toolkit/packages/rknn_toolkit-1.4.0-cp36-cp36m-linux_x86_64.whl

安装成功.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值