Toybrick

rknn-toolkit v1.4.0轉檔yolov4預訓練模型錯誤

brunolin

高级会员

积分
616
楼主
发表于 2020-8-24 11:19:51    查看: 14042|回复: 15 | [复制链接]    打印 | 只看该作者
本帖最后由 brunolin 于 2020-8-24 13:19 编辑

安裝rknn-toolkit-v1.4.0轉換yolov4.weights
會有以下錯誤
E   File "rknn/base/RKNNlib/RKNNnetbuilder.py", line331, in rknn.base.RKNNlib.RKNNnetbuilder.RKNNNetBuilder.build_layer
E   File "rknn/base/RKNNlib/RKNNnetbuilder.py", line336, in rknn.base.RKNNlib.RKNNnetbuilder.RKNNNetBuilder.build_layer
E   File "rknn/base/RKNNlib/layer/RKNNlayer.py",line 287, in rknn.base.RKNNlib.layer.RKNNlayer.RKNNLayer.compute_tensor
E   File "rknn/base/RKNNlib/layer/mish.py", line 28,in rknn.base.RKNNlib.layer.mish.MishRelu.compute_out_tensor
E AttributeError: module 'tensorflow.math' has no attribute 'tanh'

build model failed.
請問是甚麼問題?

回复

使用道具 举报

jefferyzhang

版主

积分
12925
沙发
发表于 2020-8-25 11:01:05 | 只看该作者
建议你加入论坛置顶帖的rknn qq群里讨论该问题,那个群组是npu部门同事建立的,更加权威和专业。
这个问题我也会同时帮你问下相关同事,有答案的时候会回答你
回复

使用道具 举报

jefferyzhang

版主

积分
12925
板凳
发表于 2020-8-25 11:02:32 | 只看该作者
本帖最后由 jefferyzhang 于 2020-8-25 11:06 编辑

据我个人观察,你的tensorflow版本是不是太高或者太低了? 我们rknntoolkit 1.4.0 目前只支持到 1.13.x 的tensorflow版本,
需要把本地tensorflow固定在1.13.x或者1.14.x才可以用
回复

使用道具 举报

brunolin

高级会员

积分
616
地板
 楼主| 发表于 2020-8-25 16:13:18 | 只看该作者
jefferyzhang 发表于 2020-8-25 11:02
据我个人观察,你的tensorflow版本是不是太高或者太低了? 我们rknntoolkit 1.4.0 目前只支持到 1.13.x 的t ...

我用rknn-toolkit-v1.4.0的docker image (tensorflow 1.13)來執行
錯誤訊息如下
cc1: warning: command line option '-std=c++11' is valid for C++/ObjC++ but not for C
cc1: warning: command line option '-std=c++11' is valid for C++/ObjC++ but not for C
vnn_yolov4person416.c: In function 'vnn_CreateYolov4person416':
vnn_yolov4person416.c:209:25: error: 'VSI_NN_OP_MISH' undeclared (first use in this function)
     NEW_VXNODE(node[1], VSI_NN_OP_MISH, 1, 1, 3);
                         ^
vnn_yolov4person416.c:23:40: note: in definition of macro 'NEW_VXNODE'
         _node = vsi_nn_AddNode( graph, _type, _in, _out, NULL );\
                                        ^
vnn_yolov4person416.c:209:25: note: each undeclared identifier is reported only once for each function it appears in
     NEW_VXNODE(node[1], VSI_NN_OP_MISH, 1, 1, 3);
                         ^
vnn_yolov4person416.c:23:40: note: in definition of macro 'NEW_VXNODE'
         _node = vsi_nn_AddNode( graph, _type, _in, _out, NULL );\
                                        ^
make: *** [vnn_yolov4person416.o] Error 1
/bin/sh: 1: /tmp/tmp9c3oompe/gen_nbg: not found


回复

使用道具 举报

jefferyzhang

版主

积分
12925
5#
发表于 2020-8-25 16:39:02 | 只看该作者
本帖最后由 jefferyzhang 于 2020-8-25 16:40 编辑

你可以把预编译关掉,转的时候把pre_compile设成false,得到普通rknn模型。然后用export_rknn_precompile_model这个接口从板子上导出预编译模型,这样就可用了。
回复

使用道具 举报

brunolin

高级会员

积分
616
6#
 楼主| 发表于 2020-8-26 13:53:29 | 只看该作者
jefferyzhang 发表于 2020-8-25 16:39
你可以把预编译关掉,转的时候把pre_compile设成false,得到普通rknn模型。然后用export_rknn_precompile_m ...

幾個問題
1. 文件中並沒有export_rknn_precompile_model接口的說明,請提供。
2. pre_compile設成False後,的確可以正常輸出一般模型rknn檔。
    但是載入並init_runtime()會出現以下問題
>>> from rknn.api import RKNN
>>> rknn = RKNN()
>>> rknn.load_rknn('./yolov4-rk1808-1.4.0-np.rknn')
0
>>> ret = rknn.init_runtime(target='rk1808', device_id='TS018080190600088')
I NPUTransfer: Starting NPU Transfer Client, Transfer version 2.0.0 (8f9ebbc@2020-04-03T09:12:30)
E RKNNAPI: rknn_init,  msg_load_ack fail, ack = 1(ACK_FAIL), expect 0(ACK_SUCC)!
E RKNNAPI: ==============================================
E RKNNAPI: RKNN VERSION:
E RKNNAPI:   API: 1.4.0 (b4a8096 build: 2020-08-12 10:15:19)
E RKNNAPI:   DRV: 1.3.0 (c4f8c23 build: 2019-11-25 10:39:29)
E RKNNAPI: ==============================================
E Catch exception when init runtime!
E Traceback (most recent call last):
E   File "rknn/api/rknn_base.py", line 1154, in rknn.api.rknn_base.RKNNBase.init_runtime
E   File "rknn/api/rknn_runtime.py", line 356, in rknn.api.rknn_runtime.RKNNRuntime.build_graph
E Exception: RKNN init failed. error code: RKNN_ERR_MODEL_INVALID
E Current device id is: TS018080190600088
E Devices connected:
E ['TS018080190600088']
回复

使用道具 举报

jefferyzhang

版主

积分
12925
7#
发表于 2020-8-26 14:26:05 | 只看该作者
1.  这个接口的用法可以参考examples\common_function_demos\export_rknn_precompile_model,这里面的脚本改下target/device_id应该就可以直接用了。
     文档是NPU部门漏写了,已经让他们追加说明。

2.  DRV版本太低了, 需要更新DRV驱动 >= 1.3.3才可以
回复

使用道具 举报

brunolin

高级会员

积分
616
8#
 楼主| 发表于 2020-8-26 16:18:30 | 只看该作者
jefferyzhang 发表于 2020-8-26 14:26
1.  这个接口的用法可以参考examples\common_function_demos\export_rknn_precompile_model,这里面的脚本 ...

所以目前的問題是出在DRV版本不匹配嗎?
我是使用RK1808計算棒,有固件可以升級了嗎?
回复

使用道具 举报

jefferyzhang

版主

积分
12925
9#
发表于 2020-8-26 16:26:28 | 只看该作者
brunolin 发表于 2020-8-26 16:18
所以目前的問題是出在DRV版本不匹配嗎?
我是使用RK1808計算棒,有固件可以升級了嗎? ...

不是固件升级,是直接可以在线dnf升级的。
回复

使用道具 举报

brunolin

高级会员

积分
616
10#
 楼主| 发表于 2020-8-26 17:42:51 | 只看该作者
jefferyzhang 发表于 2020-8-26 16:26
不是固件升级,是直接可以在线dnf升级的。

我用ssh登入計算棒,執行sudo dnf update -y
RKNN DRV還是1.3.0
請問計算棒已經可以線上更新到1.3.3了嗎?
回复

使用道具 举报

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

本版积分规则

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


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