Toybrick

标题: onnx 转rknn 不做量化处理,rknn推理精度下降 [打印本页]

作者: zbd    时间: 前天 09:37
标题: onnx 转rknn 不做量化处理,rknn推理精度下降
layer_name                                          simulator_error          runtime_error     
                                                   entire    single         entire   single_sim     
-----------------------------------------------------------------------------------------------
[Input] images                                    1.000000  1.000000       1.000000  1.000000      
[Conv] /model.0/conv/Conv_output_0                1.000000  1.000000      
[Relu] /model.0/act/Relu_output_0                 0.999999  1.000000       1.000000  0.999999      
[Conv] /model.1/conv/Conv_output_0                1.000000  1.000000      
[Relu] /model.1/act/Relu_output_0                 1.000000  1.000000       0.999999  1.000000      
[Conv] /model.2/cv1/conv/Conv_output_0            1.000000  1.000000      
[Relu] /model.2/cv1/act/Relu_output_0             1.000000  1.000000       1.000000  1.000000      
[Conv] /model.2/m/m.0/cv1/conv/Conv_output_0      1.000000  1.000000      
[Relu] /model.2/m/m.0/cv1/act/Relu_output_0       1.000000  1.000000       0.999998  1.000000      
[Conv] /model.2/m/m.0/cv2/conv/Conv_output_0      0.999999  1.000000      
[Relu] /model.2/m/m.0/cv2/act/Relu_output_0       0.999999  1.000000      
[Add] /model.2/m/m.0/Add_output_0                 1.000000  1.000000       0.999997  1.000000      
[Conv] /model.2/cv2/conv/Conv_output_0            1.000000  1.000000      
[Relu] /model.2/cv2/act/Relu_output_0             1.000000  1.000000       0.999999  1.000000      
[Concat] /model.2/Concat_output_0                 1.000000  1.000000       0.999997  1.000000      
[Conv] /model.2/cv3/conv/Conv_output_0            0.999999  1.000000      
[Relu] /model.2/cv3/act/Relu_output_0             0.999999  1.000000       0.999993  1.000000      
[Conv] /model.3/conv/Conv_output_0                0.999999  1.000000      
[Relu] /model.3/act/Relu_output_0                 0.999999  1.000000       0.999993  1.000000      
[Conv] /model.4/cv1/conv/Conv_output_0            0.999999  1.000000      
[Relu] /model.4/cv1/act/Relu_output_0             0.999999  1.000000       0.999997  1.000000      
[Conv] /model.4/m/m.0/cv1/conv/Conv_output_0      0.999998  1.000000      
[Relu] /model.4/m/m.0/cv1/act/Relu_output_0       0.999998  1.000000       0.999994  1.000000      
[Conv] /model.4/m/m.0/cv2/conv/Conv_output_0      0.999997  1.000000      
[Relu] /model.4/m/m.0/cv2/act/Relu_output_0       0.999998  1.000000      
[Add] /model.4/m/m.0/Add_output_0                 0.999999  1.000000       0.999995  1.000000      
[Conv] /model.4/m/m.1/cv1/conv/Conv_output_0      0.999998  1.000000      
[Relu] /model.4/m/m.1/cv1/act/Relu_output_0       0.999997  1.000000       0.999987  1.000000      
[Conv] /model.4/m/m.1/cv2/conv/Conv_output_0      0.999997  1.000000      
[Relu] /model.4/m/m.1/cv2/act/Relu_output_0       0.999998  1.000000      
[Add] /model.4/m/m.1/Add_output_0                 0.999999  1.000000       0.999995  1.000000      
[Conv] /model.4/cv2/conv/Conv_output_0            0.999998  1.000000      
[Relu] /model.4/cv2/act/Relu_output_0             0.999998  1.000000       0.999989  1.000000      
[Concat] /model.4/Concat_output_0                 0.999998  1.000000       0.999993  1.000000      
[Conv] /model.4/cv3/conv/Conv_output_0            0.999998  1.000000      
[Relu] /model.4/cv3/act/Relu_output_0             0.999997  1.000000       0.999988  1.000000      
[Conv] /model.5/conv/Conv_output_0                0.999998  1.000000      
[Relu] /model.5/act/Relu_output_0                 0.999995  1.000000       0.999985  1.000000      
[Conv] /model.6/cv1/conv/Conv_output_0            0.999998  1.000000      
[Relu] /model.6/cv1/act/Relu_output_0             0.999998  1.000000       0.999994  1.000000      
[Conv] /model.6/m/m.0/cv1/conv/Conv_output_0      0.999996  1.000000      
[Relu] /model.6/m/m.0/cv1/act/Relu_output_0       0.999996  1.000000       0.999988  1.000000      
[Conv] /model.6/m/m.0/cv2/conv/Conv_output_0      0.999997  1.000000      
[Relu] /model.6/m/m.0/cv2/act/Relu_output_0       0.999994  1.000000      
[Add] /model.6/m/m.0/Add_output_0                 0.999997  1.000000       0.999990  1.000000      
[Conv] /model.6/m/m.1/cv1/conv/Conv_output_0      0.999995  1.000000      
[Relu] /model.6/m/m.1/cv1/act/Relu_output_0       0.999992  1.000000       0.999978  1.000000      
[Conv] /model.6/m/m.1/cv2/conv/Conv_output_0      0.999995  1.000000      
[Relu] /model.6/m/m.1/cv2/act/Relu_output_0       0.999993  1.000000      
[Add] /model.6/m/m.1/Add_output_0                 0.999996  1.000000       0.999989  1.000000      
[Conv] /model.6/m/m.2/cv1/conv/Conv_output_0      0.999996  1.000000      
[Relu] /model.6/m/m.2/cv1/act/Relu_output_0       0.999992  1.000000       0.999978  1.000000      
[Conv] /model.6/m/m.2/cv2/conv/Conv_output_0      0.999993  1.000000      
[Relu] /model.6/m/m.2/cv2/act/Relu_output_0       0.999993  1.000000      
[Add] /model.6/m/m.2/Add_output_0                 0.999996  1.000000       0.999990  1.000000      
[Conv] /model.6/cv2/conv/Conv_output_0            0.999994  1.000000      
[Relu] /model.6/cv2/act/Relu_output_0             0.999994  1.000000       0.999981  1.000000      
[Concat] /model.6/Concat_output_0                 0.999996  1.000000       0.999987  1.000000      
[Conv] /model.6/cv3/conv/Conv_output_0            0.999996  1.000000      
[Relu] /model.6/cv3/act/Relu_output_0             0.999992  1.000000       0.999977  1.000000      
[Conv] /model.7/conv/Conv_output_0                0.999996  1.000000      
[Relu] /model.7/act/Relu_output_0                 0.999986  1.000000       0.999965  1.000000      
[Conv] /model.8/cv1/conv/Conv_output_0            0.999997  1.000000      
[Relu] /model.8/cv1/act/Relu_output_0             0.999978  1.000000       0.999949  1.000000      
[Conv] /model.8/m/m.0/cv1/conv/Conv_output_0      0.999985  1.000000      
[Relu] /model.8/m/m.0/cv1/act/Relu_output_0       0.999979  1.000000       0.999952  1.000000      
[Conv] /model.8/m/m.0/cv2/conv/Conv_output_0      0.999985  1.000000      
[Relu] /model.8/m/m.0/cv2/act/Relu_output_0       0.999977  1.000000      
[Add] /model.8/m/m.0/Add_output_0                 0.999978  1.000000       0.999950  1.000000      
[Conv] /model.8/cv2/conv/Conv_output_0            0.999988  1.000000      
[Relu] /model.8/cv2/act/Relu_output_0             0.999981  1.000000       0.999955  1.000000      
[Concat] /model.8/Concat_output_0                 0.999980  1.000000       0.999953  1.000000      
[Conv] /model.8/cv3/conv/Conv_output_0            0.999984  1.000000      
[Relu] /model.8/cv3/act/Relu_output_0             0.999975  1.000000       0.999943  1.000000      
[Conv] /model.9/cv1/conv/Conv_output_0            0.999992  1.000000      
[Relu] /model.9/cv1/act/Relu_output_0             0.999993  1.000000       0.999983  1.000000      
[MaxPool] /model.9/m/MaxPool_output_0             0.999997  1.000000       0.999994  1.000000      
[MaxPool] /model.9/m_1/MaxPool_output_0           0.999998  1.000000       0.999995  1.000000      
[MaxPool] /model.9/m_2/MaxPool_output_0           0.999998  1.000000       0.999995  1.000000      
[Concat] /model.9/Concat_output_0                 0.999998  1.000000       0.999994  1.000000      
[Conv] /model.9/cv2/conv/Conv_output_0            0.999991  1.000000      
[Relu] /model.9/cv2/act/Relu_output_0             0.999957  1.000000       0.999906  1.000000      
[Conv] /model.10/conv/Conv_output_0               0.999980  1.000000      
[Relu] /model.10/act/Relu_output_0                0.999964  1.000000       0.999922  1.000000      
[Resize] /model.11/Resize_output_0                0.999964  1.000000       0.999923  1.000000      
[Concat] /model.12/Concat_output_0                0.999986  1.000000       0.999964  1.000000      
[Conv] /model.13/cv1/conv/Conv_output_0           0.999994  1.000000      
[Relu] /model.13/cv1/act/Relu_output_0            0.999996  1.000000       0.999990  1.000000      
[Conv] /model.13/m/m.0/cv1/conv/Conv_output_0     0.999995  1.000000      
[Relu] /model.13/m/m.0/cv1/act/Relu_output_0      0.999995  1.000000       0.999988  1.000000      
[Conv] /model.13/m/m.0/cv2/conv/Conv_output_0     0.999994  1.000000      
[Relu] /model.13/m/m.0/cv2/act/Relu_output_0      0.999994  1.000000       0.999986  1.000000      
[Conv] /model.13/cv2/conv/Conv_output_0           0.999986  1.000000      
[Relu] /model.13/cv2/act/Relu_output_0            0.999981  1.000000       0.999959  1.000000      
[Concat] /model.13/Concat_output_0                0.999989  1.000000       0.999975  1.000000      
[Conv] /model.13/cv3/conv/Conv_output_0           0.999987  1.000000      
[Relu] /model.13/cv3/act/Relu_output_0            0.999986  1.000000       0.999967  1.000000      
[Conv] /model.14/conv/Conv_output_0               0.999991  1.000000      
[Relu] /model.14/act/Relu_output_0                0.999993  1.000000       0.999985  1.000000      
[Resize] /model.15/Resize_output_0                0.999993  1.000000       0.999985  1.000000      
[Concat] /model.16/Concat_output_0                0.999995  1.000000       0.999986  1.000000      
[Conv] /model.17/cv1/conv/Conv_output_0           0.999998  1.000000      
[Relu] /model.17/cv1/act/Relu_output_0            0.999999  1.000000       0.999996  1.000000      
[Conv] /model.17/m/m.0/cv1/conv/Conv_output_0     0.999998  1.000000      
[Relu] /model.17/m/m.0/cv1/act/Relu_output_0      0.999999  1.000000       0.999997  1.000000      
[Conv] /model.17/m/m.0/cv2/conv/Conv_output_0     0.999997  1.000000      
[Relu] /model.17/m/m.0/cv2/act/Relu_output_0      0.999998  1.000000       0.999996  1.000000      
[Conv] /model.17/cv2/conv/Conv_output_0           0.999992  1.000000      
[Relu] /model.17/cv2/act/Relu_output_0            0.999994  1.000000       0.999987  1.000000      
[Concat] /model.17/Concat_output_0                0.999997  1.000000       0.999992  1.000000      
[Conv] /model.17/cv3/conv/Conv_output_0           0.999992  1.000000      
[Relu] /model.17/cv3/act/Relu_output_0            0.999994  1.000000       0.999986  1.000000      
[Conv] /model.18/conv/Conv_output_0               0.999992  1.000000      
[Relu] /model.18/act/Relu_output_0                0.999991  1.000000       0.999981  1.000000      
[Concat] /model.19/Concat_output_0                0.999992  1.000000       0.999983  1.000000      
[Conv] /model.20/cv1/conv/Conv_output_0           0.999992  1.000000      
[Relu] /model.20/cv1/act/Relu_output_0            0.999990  1.000000       0.999978  1.000000      
[Conv] /model.20/m/m.0/cv1/conv/Conv_output_0     0.999995  1.000000      
[Relu] /model.20/m/m.0/cv1/act/Relu_output_0      0.999992  1.000000       0.999982  1.000000      
[Conv] /model.20/m/m.0/cv2/conv/Conv_output_0     0.999994  1.000000      
[Relu] /model.20/m/m.0/cv2/act/Relu_output_0      0.999995  1.000000       0.999988  1.000000      
[Conv] /model.20/cv2/conv/Conv_output_0           0.999991  1.000000      
[Relu] /model.20/cv2/act/Relu_output_0            0.999992  1.000000       0.999982  1.000000      
[Concat] /model.20/Concat_output_0                0.999993  1.000000       0.999986  1.000000      
[Conv] /model.20/cv3/conv/Conv_output_0           0.999991  1.000000      
[Relu] /model.20/cv3/act/Relu_output_0            0.999993  1.000000       0.999984  1.000000      
[Conv] /model.21/conv/Conv_output_0               0.999993  1.000000      
[Relu] /model.21/act/Relu_output_0                0.999992  1.000000       0.999981  1.000000      
[Concat] /model.22/Concat_output_0                0.999984  1.000000       0.999965  1.000000      
[Conv] /model.23/cv1/conv/Conv_output_0           0.999987  1.000000      
[Relu] /model.23/cv1/act/Relu_output_0            0.999981  1.000000       0.999957  1.000000      
[Conv] /model.23/m/m.0/cv1/conv/Conv_output_0     0.999985  1.000000      
[Relu] /model.23/m/m.0/cv1/act/Relu_output_0      0.999978  1.000000       0.999949  1.000000      
[Conv] /model.23/m/m.0/cv2/conv/Conv_output_0     0.999988  1.000000      
[Relu] /model.23/m/m.0/cv2/act/Relu_output_0      0.999985  1.000000       0.999965  1.000000      
[Conv] /model.23/cv2/conv/Conv_output_0           0.999987  1.000000      
[Relu] /model.23/cv2/act/Relu_output_0            0.999988  1.000000       0.999974  1.000000      
[Concat] /model.23/Concat_output_0                0.999986  1.000000       0.999969  1.000000      
[Conv] /model.23/cv3/conv/Conv_output_0           0.999991  1.000000      
[Relu] /model.23/cv3/act/Relu_output_0            0.999993  1.000000       0.999984  1.000000      
[Conv] 274                                        0.999999  1.000000       0.999999  1.000000      
[Conv] 273                                        1.000000  1.000000       0.999999  1.000000      
[Conv] output                                     1.000000  1.000000       0.999999  1.000000     

请教一下,yolov5s 用onnx转rknn是,不做量化处理,连扳推理,从误差日志上看,几乎没有误差,但是rknn 推理结果就是不如onnx的推理结果,请问这个问题怎么排除解决一下


作者: zbd    时间: 前天 09:57
  1. if __name__ == '__main__':

  2.     # Create RKNN object
  3.     rknn = RKNN(verbose=True)

  4.     # pre-process config
  5.     print('--> Config model')
  6.     rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3568', optimization_level=0)
  7.     print('done')

  8.     # Load ONNX model
  9.     print('--> Loading model')
  10.     ret = rknn.load_onnx(model=ONNX_MODEL)
  11.     if ret != 0:
  12.         print('Load model failed!')
  13.         exit(ret)
  14.     print('done')

  15.     # Build model
  16.     print('--> Building model')
  17.     # ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET)
  18.     ret = rknn.build(do_quantization=False, dataset=DATASET)
  19.     if ret != 0:
  20.         print('Build model failed!')
  21.         exit(ret)
  22.     print('done')
  23.     # Accuracy test 连扳推理测试在板子上的查看每一层的推理精度是否下降
  24.     # ret = rknn.accuracy_**ysis(
  25.     #           inputs=[IMG_PATH],
  26.     #           output_dir="snapshat",
  27.     #           target="rk3568")
  28.    
  29.     if ret != 0:
  30.         print('Accuracy test failed!')
  31.         exit(ret)
  32.     print('done')


  33.     # Export RKNN model
  34.     print('--> Export rknn model')
  35.     ret = rknn.export_rknn(RKNN_MODEL)
  36.     if ret != 0:
  37.         print('Export rknn model failed!')
  38.         exit(ret)
  39.     print('done')

  40.     # Init runtime environment
  41.     print('--> Init runtime environment')
  42.     ret = rknn.init_runtime()
  43.     if ret != 0:
  44.         print('Init runtime environment failed!')
  45.         exit(ret)
  46.     print('done')

  47.     # Set inputs
  48.     img = cv2.imread(IMG_PATH)
  49.     # img, ratio, (dw, dh) = letterbox(img, new_shape=(IMG_SIZE, IMG_SIZE))
  50.     img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
  51.     img = cv2.resize(img, (IMG_SIZE, IMG_SIZE))

  52.     # Inference
  53.     print('--> Running model')
  54.     img2 = np.expand_dims(img, 0)
  55.     print("++++++++++++++++")
  56.     print(img2.shape)
  57.     print("++++++++++++++++")
  58.     outputs = rknn.inference(inputs=[img2], data_format=['nhwc'])
  59.     # np.save('./onnx_yolov5_0.npy', outputs[0])
  60.     # np.save('./onnx_yolov5_1.npy', outputs[1])
  61.     # np.save('./onnx_yolov5_2.npy', outputs[2])
  62.    
  63.     print('done')

  64.     # post process
  65.     input0_data = outputs[0]
  66.     input1_data = outputs[1]
  67.     input2_data = outputs[2]

  68.     input0_data = input0_data.reshape([3, -1]+list(input0_data.shape[-2:]))
  69.     input1_data = input1_data.reshape([3, -1]+list(input1_data.shape[-2:]))
  70.     input2_data = input2_data.reshape([3, -1]+list(input2_data.shape[-2:]))

  71.     input_data = list()
  72.     input_data.append(np.transpose(input0_data, (2, 3, 0, 1)))
  73.     input_data.append(np.transpose(input1_data, (2, 3, 0, 1)))
  74.     input_data.append(np.transpose(input2_data, (2, 3, 0, 1)))

  75.     boxes, classes, scores = yolov5_post_process(input_data)

  76.     img_1 = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
  77.     if boxes is not None:
  78.         draw(img_1, boxes, scores, classes)
  79.         cv2.imwrite('result.jpg', img_1)
  80.         print('Save results to result.jpg!')

  81.     rknn.release()   这是视频数据加载过程
复制代码





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