Toybrick

标题: rknn-toolkit v1.4.0轉檔yolov4預訓練模型錯誤 [打印本页]

作者: brunolin    时间: 2020-8-24 11:19
标题: rknn-toolkit v1.4.0轉檔yolov4預訓練模型錯誤
本帖最后由 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    时间: 2020-8-25 11:01
建议你加入论坛置顶帖的rknn qq群里讨论该问题,那个群组是npu部门同事建立的,更加权威和专业。
这个问题我也会同时帮你问下相关同事,有答案的时候会回答你
作者: jefferyzhang    时间: 2020-8-25 11:02
本帖最后由 jefferyzhang 于 2020-8-25 11:06 编辑

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

作者: brunolin    时间: 2020-8-25 16:13
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    时间: 2020-8-25 16:39
本帖最后由 jefferyzhang 于 2020-8-25 16:40 编辑

你可以把预编译关掉,转的时候把pre_compile设成false,得到普通rknn模型。然后用export_rknn_precompile_model这个接口从板子上导出预编译模型,这样就可用了。
作者: brunolin    时间: 2020-8-26 13:53
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    时间: 2020-8-26 14:26
1.  这个接口的用法可以参考examples\common_function_demos\export_rknn_precompile_model,这里面的脚本改下target/device_id应该就可以直接用了。
     文档是NPU部门漏写了,已经让他们追加说明。

2.  DRV版本太低了, 需要更新DRV驱动 >= 1.3.3才可以
作者: brunolin    时间: 2020-8-26 16:18
jefferyzhang 发表于 2020-8-26 14:26
1.  这个接口的用法可以参考examples\common_function_demos\export_rknn_precompile_model,这里面的脚本 ...

所以目前的問題是出在DRV版本不匹配嗎?
我是使用RK1808計算棒,有固件可以升級了嗎?
作者: jefferyzhang    时间: 2020-8-26 16:26
brunolin 发表于 2020-8-26 16:18
所以目前的問題是出在DRV版本不匹配嗎?
我是使用RK1808計算棒,有固件可以升級了嗎? ...

不是固件升级,是直接可以在线dnf升级的。
作者: brunolin    时间: 2020-8-26 17:42
jefferyzhang 发表于 2020-8-26 16:26
不是固件升级,是直接可以在线dnf升级的。

我用ssh登入計算棒,執行sudo dnf update -y
RKNN DRV還是1.3.0
請問計算棒已經可以線上更新到1.3.3了嗎?
作者: jefferyzhang    时间: 2020-8-27 08:30
brunolin 发表于 2020-8-26 17:42
我用ssh登入計算棒,執行sudo dnf update -y
RKNN DRV還是1.3.0
請問計算棒已經可以線上更新到1.3.3了嗎? ...

dnf upgrade
作者: brunolin    时间: 2020-8-27 09:17
jefferyzhang 发表于 2020-8-27 08:30
dnf upgrade

執行線上升級的結果如下,執行完RKNN DRV還是1.3.0
[toybrick@rk1808 ~]$ sudo dnf upgrade
Last metadata expiration check: -280 days, 5:04:39 ago on Thu 28 Nov 2019 02:42:58 AM EST.
Dependencies resolved.
Nothing to do.
Complete!
[toybrick@rk1808 ~]$ rpm -qa | grep toybrick-server
toybrick-server-1.4.1-2.rk1808.fc28.aarch64
登入Web查看
RKNN Version
Version:  1.3.0


作者: bobby_jiang    时间: 2020-8-27 13:00
本帖最后由 bobby_jiang 于 2020-8-27 14:14 编辑

你这个升级没有成功,应该是你上位机的nat设置没有成功导致的,你在计算棒上sudo ping www.baidu.com,看看是否可以ping 通。
如果不通,请参考wiki正确配置上位机网络共享,http://t.rock-chips.com/wiki.php?mod=view&id=76。也可以换一台上位机试试。

作者: brunolin    时间: 2020-8-27 14:32
bobby_jiang 发表于 2020-8-27 13:00
你这个升级没有成功,应该是你上位机的nat设置没有成功导致的,你在计算棒上sudo ping www.baidu.com,看看 ...

我是依照這個說明中的"Linux系统配置NAT功能"->"2. 若上位机使用Ubuntu系统"中的指令操作
sudo ping www.baidu.com 無法成功,但是sudo ping 8.8.8.8是可以的


作者: brunolin    时间: 2020-9-3 17:35
修改 /etc/hosts 之後可連線,但又有其他問題
[toybrick@rk1808 ~]$ sudo dnf update -v
Loaded plugins: builddep, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, needs-restarting, playground, repoclosure, repograph, repomanage, reposync
DNF version: 2.7.5
cachedir: /var/cache/dnf
Cannot download 'https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-28&arch=aarch64': Cannot prepare internal mirrorlist: Curl error (60): Peer certificate cannot be authenticated with given CA certificates for https://mirrors.fedoraproject.or ... 28&arch=aarch64 [SSL certificate problem: certificate is not yet valid].
Error: Failed to synchronize cache for repo 'fedora-modular'

作者: brunolin    时间: 2020-9-3 18:51
brunolin 发表于 2020-9-3 17:35
修改 /etc/hosts 之後可連線,但又有其他問題
[toybrick@rk1808 ~]$ sudo dnf update -v
Loaded plugins: b ...

找到原因是因為計算棒內日期時間有誤(2019??)
修改正確日期時間之後已經升級成功了




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3