Toybrick

onnx转rknn,推理结果不对

lrzss

注册会员

积分
161
楼主
发表于 2025-7-25 14:59:55    查看: 1245|回复: 5 | [复制链接]    打印 | 只看该作者
您好,我在进行onnx转rknn后,模型推理结果不对,且accuracy_**ysis()进行精度分析时,误差较大,请问是什么原因,要怎么解决?
我怀疑,问题在,转rknn时,将conv+bn+add三者融合到一起了,导致推理出错,如:rknn.png图中的ConvAdd 就是conv+bn+add的融合层, 请问下怎么让add不融合进去?

onnx模型已经推理验证过,没有问题!
模型很简单,全是conv bn relu add 构成!
图片分别是onnx rknn的模型结构

下面是accuracy_**ysis()精度分析的结果:
layer_name                                                                     simulator_error                    
                                                                           entire              single            
                                                                        cos      euc        cos      euc         
--------------------------------------------------------------------------------------------------------------
[Input] input_z                                                                                          1.00000 | 0.0       1.00000 | 0.0           
[Conv] /conv_1/block/conv/Conv_output_0                                             1.00000 | 0.0486    1.00000 | 0.0486        
[Relu] /conv_1/block/act/Relu_output_0                                                  1.00000 | 0.0451    1.00000 | 0.0451        
[Conv] /layer_1/layer_1.0/block/exp_1x1/block/conv/Conv_output_0      1.00000 | 1.0300    1.00000 | 1.0302        
[Relu] /layer_1/layer_1.0/block/exp_1x1/block/act/Relu_output_0           1.00000 | 0.9870    1.00000 | 0.0977        
[Conv] /layer_1/layer_1.0/block/conv_3x3/block/conv/Conv_output_0     1.00000 | 0.7599    1.00000 | 0.4446        
[Relu] /layer_1/layer_1.0/block/conv_3x3/block/act/Relu_output_0          1.00000 | 0.6032    1.00000 | 0.1104        
[Conv] /layer_1/layer_1.0/block/red_1x1/block/conv/Conv_output_0        1.00000 | 0.1664    1.00000 | 0.0442        
[Conv] /layer_2/layer_2.0/block/exp_1x1/block/conv/Conv_output_0        0.99997 | 5.1958    1.00000 | 0.5601        
[Relu] /layer_2/layer_2.0/block/exp_1x1/block/act/Relu_output_0            0.99997 | 3.6112    1.00000 | 0.1037        
[Conv] /layer_2/layer_2.0/block/conv_3x3/block/conv/Conv_output_0      1.00000 | 0.4789    1.00000 | 0.0992        
[Relu] /layer_2/layer_2.0/block/conv_3x3/block/act/Relu_output_0           1.00000 | 0.2896    1.00000 | 0.0869        
[Conv] /layer_2/layer_2.0/block/red_1x1/block/conv/Conv_output_0         0.99999 | 0.2230    1.00000 | 0.0852        
[Conv] /layer_2/layer_2.1/block/exp_1x1/block/conv/Conv_output_0         0.99997 | 2.4119    1.00000 | 0.1353        
[Relu] /layer_2/layer_2.1/block/exp_1x1/block/act/Relu_output_0              0.99998 | 1.4822    1.00000 | 0.0484        
[Conv] /layer_2/layer_2.1/block/conv_3x3/block/conv/Conv_output_0        0.99997 | 2.1584    1.00000 | 0.1730        
[Relu] /layer_2/layer_2.1/block/conv_3x3/block/act/Relu_output_0             0.99999 | 1.0094    1.00000 | 0.0407        
[Conv] /layer_2/layer_2.1/block/red_1x1/block/conv/Conv_output_0           0.99998 | 0.3212    1.00000 | 0.0196        
[Add] /layer_2/layer_2.1/Add_output_0                                                        0.99999 | 0.4174    1.00000 | 0.0283        
[Conv] /layer_2/layer_2.2/block/exp_1x1/block/conv/Conv_output_0          0.99997 | 2.1384    1.00000 | 0.1682        
[Relu] /layer_2/layer_2.2/block/exp_1x1/block/act/Relu_output_0               0.99997 | 1.4665    1.00000 | 0.0432        
[Conv] /layer_2/layer_2.2/block/conv_3x3/block/conv/Conv_output_0         0.99995 | 2.7909    1.00000 | 0.1397        
[Relu] /layer_2/layer_2.2/block/conv_3x3/block/act/Relu_output_0              0.99998 | 0.9551    1.00000 | 0.0332        
[Conv] /layer_2/layer_2.2/block/red_1x1/block/conv/Conv_output_0            0.99997 | 0.5547    1.00000 | 0.0337        
[Add] output_z                                                                                               0.99999 | 0.7170    1.00000 | 0.0408  

本帖子中包含更多资源

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

x
回复

使用道具 举报

lrzss

注册会员

积分
161
沙发
 楼主| 发表于 2025-7-25 15:05:09 | 只看该作者
补充一下,我设置 optimization_level=0 和 do_quantization=False, 也是这情况,  版本:rknn-toolkit2-2.3.2
回复

使用道具 举报

jefferyzhang

版主

积分
15205
板凳
发表于 2025-7-25 15:34:29 | 只看该作者
没看出来误差较大,0.999几乎是没有误差了。

回复

使用道具 举报

lrzss

注册会员

积分
161
地板
 楼主| 发表于 2025-7-25 15:48:00 | 只看该作者
jefferyzhang 发表于 2025-7-25 15:34
没看出来误差较大,0.999几乎是没有误差了。

不是看euc这列哦?
回复

使用道具 举报

lrzss

注册会员

积分
161
5#
 楼主| 发表于 2025-7-25 15:56:35 | 只看该作者
我看的euc这列,不是看这列哦....euc这列是干嘛的啊
回复

使用道具 举报

jefferyzhang

版主

积分
15205
6#
发表于 2025-7-25 20:57:19 | 只看该作者
euc是欧氏距离,数字基数越大这个值越大,不知道结果的数量级情况下这个数值没有什么意义。
cos算余弦距离,偏离角度越大偏离越大,这里看过去结果是正确的。
回复

使用道具 举报

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

本版积分规则

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


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