Toybrick

标题: onnx转rknn成功,build成功,init_runtime失败 [打印本页]

作者: SmartSmallBoy    时间: 2021-10-8 20:06
标题: onnx转rknn成功,build成功,init_runtime失败
搞了个人脸检测的模型,pth转onnx后测试输出没问题,转rknn也没报错,但是在init_runtime时出错了说维度不匹配,不知道啥情况

E [rknn_CalcReshapeTensor:1397]Cannot calculate the reshape tensor 25600 to 25584.
E [setup_node:448]Setup node[136] RESHAPE fail
Create rknn graph fail!
I [remove_client_ops:5508]remove_client_ops num=0
I [remove_client_ops:5519]remove_client_ops finish
Create RKNN model fail, error=-6
E Catch exception when init runtime!
E Traceback (most recent call last):
E   File "rknn/api/rknn_base.py", line 884, in rknn.api.rknn_base.RKNNBase.init_runtime
E   File "rknn/api/rknn_runtime.py", line 341, in rknn.api.rknn_runtime.RKNNRuntime.build_graph
E Exception: RKNN init failed. error code: RKNN_ERR_MODEL_INVALID
-1



作者: SmartSmallBoy    时间: 2021-10-8 20:26
仔细看了rknn.build的输出日志,
D Process Reshape_Reshape_199_52_RKNN_mark_perm_211 ...
D RKNN output shape(permute): (1 64 20 20)
D Tensor @Reshape_Reshape_199_52_RKNN_mark_perm_211ut0 type: float32
D Process Reshape_Reshape_199_52 ...
D RKNN output shape(reshape): (3 16 533)
D Tensor @Reshape_Reshape_199_52ut0 type: float32
D Process InstanceNormalization_InstanceNormalization_202_49 ...
D RKNN output shape(instancenormalize): (3 16 533)
这个地方输入是1*64*20*20,输出是3*16*533,?????????什么情况
作者: SmartSmallBoy    时间: 2021-10-8 20:29
我的原模型这里是
Reshape
name:Reshape_199
data
name: 455
type: float32[1,64,20,20]
shape
name: 355
kind: Initializer
type: int64[3]
[
    0,
    16,
    -1
]
reshaped
name: 457
type: float32[1,16,1600]
这里输入是1*64*20*20,输出是1*16*1600,什么情况啊,模型里有很多个这样的reshape,前面的都是正常转成了1*16*1600,怎么到199节点这里就转成了3*16*533了啊
作者: SmartSmallBoy    时间: 2021-10-8 20:44
通过查看量化后生成的的json文件,
"Reshape_Reshape_199_52": {
            "name": "Reshape_Reshape_199",
            "op": "reshape",
            "parameters": {
                "shape": [
                    3,
                    16,
                    -1
                ]
            },
            "inputs": [
                "@Reshape_Reshape_199_52_acuity_mark_perm_211ut0"
            ],
            "outputs": [
                "out0"
            ]
        },
这里的parameters:是3,16,-1
网络里有个188节点和199在原onnx模型的参数是一样的,这里188节点转换后的parameters是正常的1,16,-1
"Reshape_Reshape_188_74": {
            "name": "Reshape_Reshape_188",
            "op": "reshape",
            "parameters": {
                "shape": [
                    1,
                    16,
                    -1
                ]
            },
作者: SmartSmallBoy    时间: 2021-10-8 20:49
能不能把json文件里的199节点强行改成1,16,-1然后用混合量化第一步生成的权重+修改的json文件生成模型啊

作者: SmartSmallBoy    时间: 2021-10-8 20:56
253节点也是一样,前面都好好的shape(1,16,-1)
到了253,一样的参数,被转成了(6,16,-1)
作者: goodstudy    时间: 2021-10-9 16:22
好像是驱动问题,我之前也遇到过,
作者: SmartSmallBoy    时间: 2021-10-9 19:03
goodstudy 发表于 2021-10-9 16:22
好像是驱动问题,我之前也遇到过,

老哥,你怎么解决的呀
作者: goodstudy    时间: 2021-10-11 11:48
SmartSmallBoy 发表于 2021-10-9 19:03
老哥,你怎么解决的呀

升级npu的驱动
作者: SmartSmallBoy    时间: 2021-10-11 13:17
goodstudy 发表于 2021-10-11 11:48
升级npu的驱动

我这npu驱动已经最新了




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