csukuangfj
first commit
477da44

How to connect the board for debugging

Model Source

The model used in this example come from the following open source projects:
https://github.com/shicai/MobileNet-Caffe

Script Usage

Usage:

python test.py

Description:

  • The default target platform in script is 'rk3588', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
  • The 'target' parameter in 'rknn.init_runtime'/'rknn.accuracy_analysis' is set to 'rk3588'.
  • The 'perf_debug' and 'eval_mem' parameter of 'rknn.config' is set to True.

Expected Results

This example would output the following results:

  • Output encrypted rknn model: mobilenet_v2.crypt.rknn

  • List devices that connect to host

    *************************
    all device(s) with adb mode:
    rk3588
    *************************
    
  • Print version ```

    RKNN VERSION: API: librknn_api version: 1.5.2 (8babfea build@2023-08-25T02:31:12) DRV: rknn_server: 1.5.2 (8babfea build@2023-08-25T10:30:12) rknnrt: 1.5.3b9 (ba0047cf1@2023-10-11T19:55:40)

    
    
  • Print perf information ```

                              Performance                              
          #### The performance result is just for debugging, ####
          #### may worse than actual performance!            ####
    

    =================================================================================================================== ID OpType DataType Target InputShape OutputShape DDR Cycles NPU Cycles Total Cycles Time(us) MacUsage(%) WorkLoad(0/1/2)-ImproveTherical Task Number Lut Number RW(KB) FullName 1 InputOperator UINT8 CPU \ (1,3,224,224) 0 0 0 7 \ 0.0%/0.0%/0.0% - Up:0.0% 0 0 147.00 InputOperator:data 2 ConvRelu UINT8 NPU (1,3,224,224),(32,3,3,3),(32) (1,32,112,112) 94150 10584 94150 428 2.47 100.0%/0.0%/0.0% - Up:0.0% 3 0 543.75

    ...

    Total Operator Elapsed Time(us): 14147 Total Memory RW Amount(MB): 0 Operator Time-Consuming Ranking: OpType Call Number CPU Time(us) NPU Time(us) Total Time(us) Time Ratio(%) ConvRelu 36 0 9338 9338 66.0 ConvAdd 10 0 2155 2155 15.23 Conv 9 0 2097 2097 14.82 exDataConvert 1 0 269 269 1.9 Softmax 1 0 248 248 1.75 OutputOperator 1 33 0 33 0.23 InputOperator 1 7 0 7 0.04

    ===================================================================================================================

    
    
  • Print memory information ```

              Memory Profile Info Dump                  
    

    ====================================================== NPU model memory detail(bytes): Total Weight Memory: 3.53 MiB Total Internal Tensor Memory: 1.67 MiB Total Memory: 5.66 MiB

    INFO: When evaluating memory usage, we need consider
    the size of model, current model size is: 4.08 MiB

      ```
    
  • Print the TOP5 labels and corresponding scores of the test image classification results

    -----TOP 5-----
    [155] score:0.936523 class:"Shih-Tzu"
    [154] score:0.002403 class:"Pekinese, Pekingese, Peke"
    [204] score:0.002403 class:"Lhasa, Lhasa apso"
    [283] score:0.000658 class:"Persian cat"
    [284] score:0.000229 class:"Siamese cat, Siamese"
    
  • Output the results of the accuracy analysis:

    # simulator_error: calculate the output error of each layer of the simulator (compared to the 'golden' value).
    #              entire: output error of each layer between 'golden' and 'simulator', these errors will accumulate layer by layer.
    #              single: single-layer output error between 'golden' and 'simulator', can better reflect the single-layer accuracy of the simulator.
    # runtime_error: calculate the output error of each layer of the runtime.
    #              entire: output error of each layer between 'golden' and 'runtime', these errors will accumulate layer by layer.
    #              single_sim: single-layer output error between 'simulator' and 'runtime', can better reflect the single-layer accuracy of runtime.
    
    layer_name                                simulator_error                             runtime_error                      
                                        entire              single                  entire           single_sim            
                                    cos      euc        cos      euc            cos      euc        cos      euc          
    -----------------------------------------------------------------------------------------------------------------
    [Input] data                     1.00000 | 0.0       1.00000 | 0.0           
    [exDataConvert] data_int8        0.99999 | 2.0599    0.99999 | 2.0599        
    [Conv] conv1/scale               
    [Relu] relu1                     0.99997 | 4.7572    0.99997 | 4.7572        0.99996 | 5.2593    0.99994 | 6.3273        
    [Conv] conv2_1/expand/scale      
    [Relu] relu2_1/expand            0.99993 | 6.8963    0.99994 | 6.3494        0.99992 | 7.1564    1.00000 | 1.0312        
    [Conv] conv2_1/dwise/scale       
    [Relu] relu2_1/dwise             0.99949 | 22.639    0.99958 | 20.480        0.99949 | 22.665    1.00000 | 1.4891        
    
    ...
    
    [Relu] relu6_4                   0.97924 | 64.548    0.99989 | 4.7152        0.98151 | 60.976    1.00000 | 0.2890        
    [Conv] pool6                     0.98537 | 4.8954    0.99997 | 0.2290        0.98766 | 4.5005    1.00000 | 0.0           
    [Conv] fc7                       0.98323 | 21.938    0.99990 | 1.6519        0.98521 | 20.567    1.00000 | 0.0           
    [exDataConvert] fc7__float16     0.98323 | 21.939    0.99996 | 1.1046        0.98521 | 20.570    1.00000 | 0.0512        
    [Softmax] prob                   1.00000 | 0.0010    1.00000 | 0.0001        1.00000 | 0.0569    1.00000 | 0.0566 
    
  • Note: Different platforms, different versions of tools and drivers may have slightly different results.