Open Huntersdeng opened 3 months ago
RK3588板环境 系统版本:ubuntu 22.04 rknpu2-dev: 1.5.2
PC环境: 系统版本:ubuntu 22.04 python: 3.8 rknn-toolkit2: 1.5.2+b642f30c
问题描述: 1)YOLOv8-seg模型量化精度异常 2)rknn-toolkit2配置未生效
复现步骤: 模型:官方yolov8s-seg.pt模型https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8s-seg.pt 转换脚本:
from rknn.api import RKNN # COCO ONNX_MODEL = './yolov8s-seg.onnx' RKNN_MODEL = './yolov8s-seg.rknn' DATASET = './dataset/COCO/coco_subset_10.txt' ANALYSIS_DATASET = ['./dataset/COCO/bus.jpg'] def step1(): # Create RKNN object rknn = RKNN(verbose=True) # pre-process config print('--> Config model') rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], quantized_algorithm='kl_divergence', quantized_method='channel', optimization_level=0, target_platform="rk3588") print('done') # Load ONNX model print('--> Loading model') ret = rknn.load_onnx(model=ONNX_MODEL) #ret = rknn.load_onnx(model=ONNX_MODEL, outputs=['326', '372', '418']) if ret != 0: print('Load model failed!') exit(ret) print('done') # 调用 hybrid_quantization_step1 产生量化配置文件 print('Hybrid quantization step1') ret = rknn.hybrid_quantization_step1(dataset=DATASET, rknn_batch_size=1, proposal=False) if ret != 0: print('Hybrid quantization step1 failed!') exit(ret) print('done') rknn.release() def step2(): # Create RKNN object rknn = RKNN(verbose=True) # Call hybrid_quantization_step2 to generate hybrid quantized RKNN model print('Hybrid quantization step2') ret = rknn.hybrid_quantization_step2(model_input='./yolov8s-seg.model', data_input='yolov8s-seg.data', model_quantization_cfg='yolov8s-seg.quantization.cfg') if ret != 0: print('Hybrid quantization step2 failed!') exit(ret) print('done') # Export RKNN model print('--> Export rknn model') ret = rknn.export_rknn(RKNN_MODEL) if ret != 0: print('Export rknn model failed!') exit(ret) print('done') # Accuracy analysis print('--> Accuracy analysis') ret = rknn.accuracy_analysis(inputs=ANALYSIS_DATASET, target="RK3588", device_id="90ce0632eb5338b5") if ret != 0: print('Accuracy analysis failed!') print('done') rknn.release() if __name__ == '__main__': step1() # step2()
混合量化步骤一输出日志:
╰─ /home/stardust/miniconda3/envs/rknn/bin/python /home/stardust/stardust_project/rknn-deploy/workspace/hybrid_convert.py W __init__: rknn-toolkit2 version: 1.5.2+b642f30c --> Config model done --> Loading model Loading : 100%|████████████████████████████████████████████████| 162/162 [00:00<00:00, 17165.45it/s] done Hybrid quantization step1 I base_optimize ... I base_optimize done. I I fold_constant ... I fold_constant done. I I correct_ops ... I correct_ops done. I I fuse_ops ... I fuse_ops results: I replace_exswish: remove node = ['/model.0/act/Sigmoid', '/model.0/act/Mul'], add node = ['/model.0/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.1/act/Sigmoid', '/model.1/act/Mul'], add node = ['/model.1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.2/cv1/act/Sigmoid', '/model.2/cv1/act/Mul'], add node = ['/model.2/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.2/m.0/cv1/act/Sigmoid', '/model.2/m.0/cv1/act/Mul'], add node = ['/model.2/m.0/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.2/m.0/cv2/act/Sigmoid', '/model.2/m.0/cv2/act/Mul'], add node = ['/model.2/m.0/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.2/cv2/act/Sigmoid', '/model.2/cv2/act/Mul'], add node = ['/model.2/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.3/act/Sigmoid', '/model.3/act/Mul'], add node = ['/model.3/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.4/cv1/act/Sigmoid', '/model.4/cv1/act/Mul'], add node = ['/model.4/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.4/m.0/cv1/act/Sigmoid', '/model.4/m.0/cv1/act/Mul'], add node = ['/model.4/m.0/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.4/m.0/cv2/act/Sigmoid', '/model.4/m.0/cv2/act/Mul'], add node = ['/model.4/m.0/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.4/m.1/cv1/act/Sigmoid', '/model.4/m.1/cv1/act/Mul'], add node = ['/model.4/m.1/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.4/m.1/cv2/act/Sigmoid', '/model.4/m.1/cv2/act/Mul'], add node = ['/model.4/m.1/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.4/cv2/act/Sigmoid', '/model.4/cv2/act/Mul'], add node = ['/model.4/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.5/act/Sigmoid', '/model.5/act/Mul'], add node = ['/model.5/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.6/cv1/act/Sigmoid', '/model.6/cv1/act/Mul'], add node = ['/model.6/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.6/m.0/cv1/act/Sigmoid', '/model.6/m.0/cv1/act/Mul'], add node = ['/model.6/m.0/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.6/m.0/cv2/act/Sigmoid', '/model.6/m.0/cv2/act/Mul'], add node = ['/model.6/m.0/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.6/m.1/cv1/act/Sigmoid', '/model.6/m.1/cv1/act/Mul'], add node = ['/model.6/m.1/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.6/m.1/cv2/act/Sigmoid', '/model.6/m.1/cv2/act/Mul'], add node = ['/model.6/m.1/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.6/cv2/act/Sigmoid', '/model.6/cv2/act/Mul'], add node = ['/model.6/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.7/act/Sigmoid', '/model.7/act/Mul'], add node = ['/model.7/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.8/cv1/act/Sigmoid', '/model.8/cv1/act/Mul'], add node = ['/model.8/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.8/m.0/cv1/act/Sigmoid', '/model.8/m.0/cv1/act/Mul'], add node = ['/model.8/m.0/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.8/m.0/cv2/act/Sigmoid', '/model.8/m.0/cv2/act/Mul'], add node = ['/model.8/m.0/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.8/cv2/act/Sigmoid', '/model.8/cv2/act/Mul'], add node = ['/model.8/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.9/cv1/act/Sigmoid', '/model.9/cv1/act/Mul'], add node = ['/model.9/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.9/cv2/act/Sigmoid', '/model.9/cv2/act/Mul'], add node = ['/model.9/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.12/cv1/act/Sigmoid', '/model.12/cv1/act/Mul'], add node = ['/model.12/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.12/m.0/cv1/act/Sigmoid', '/model.12/m.0/cv1/act/Mul'], add node = ['/model.12/m.0/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.12/m.0/cv2/act/Sigmoid', '/model.12/m.0/cv2/act/Mul'], add node = ['/model.12/m.0/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.12/cv2/act/Sigmoid', '/model.12/cv2/act/Mul'], add node = ['/model.12/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.15/cv1/act/Sigmoid', '/model.15/cv1/act/Mul'], add node = ['/model.15/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.15/m.0/cv1/act/Sigmoid', '/model.15/m.0/cv1/act/Mul'], add node = ['/model.15/m.0/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.15/m.0/cv2/act/Sigmoid', '/model.15/m.0/cv2/act/Mul'], add node = ['/model.15/m.0/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.15/cv2/act/Sigmoid', '/model.15/cv2/act/Mul'], add node = ['/model.15/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.16/act/Sigmoid', '/model.16/act/Mul'], add node = ['/model.16/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.18/cv1/act/Sigmoid', '/model.18/cv1/act/Mul'], add node = ['/model.18/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.18/m.0/cv1/act/Sigmoid', '/model.18/m.0/cv1/act/Mul'], add node = ['/model.18/m.0/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.18/m.0/cv2/act/Sigmoid', '/model.18/m.0/cv2/act/Mul'], add node = ['/model.18/m.0/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.18/cv2/act/Sigmoid', '/model.18/cv2/act/Mul'], add node = ['/model.18/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.19/act/Sigmoid', '/model.19/act/Mul'], add node = ['/model.19/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.21/cv1/act/Sigmoid', '/model.21/cv1/act/Mul'], add node = ['/model.21/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.21/m.0/cv1/act/Sigmoid', '/model.21/m.0/cv1/act/Mul'], add node = ['/model.21/m.0/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.21/m.0/cv2/act/Sigmoid', '/model.21/m.0/cv2/act/Mul'], add node = ['/model.21/m.0/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.21/cv2/act/Sigmoid', '/model.21/cv2/act/Mul'], add node = ['/model.21/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv4.2/cv4.2.0/act/Sigmoid', '/model.22/cv4.2/cv4.2.0/act/Mul'], add node = ['/model.22/cv4.2/cv4.2.0/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv4.2/cv4.2.1/act/Sigmoid', '/model.22/cv4.2/cv4.2.1/act/Mul'], add node = ['/model.22/cv4.2/cv4.2.1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv2.2/cv2.2.0/act/Sigmoid', '/model.22/cv2.2/cv2.2.0/act/Mul'], add node = ['/model.22/cv2.2/cv2.2.0/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv2.2/cv2.2.1/act/Sigmoid', '/model.22/cv2.2/cv2.2.1/act/Mul'], add node = ['/model.22/cv2.2/cv2.2.1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv3.2/cv3.2.0/act/Sigmoid', '/model.22/cv3.2/cv3.2.0/act/Mul'], add node = ['/model.22/cv3.2/cv3.2.0/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv3.2/cv3.2.1/act/Sigmoid', '/model.22/cv3.2/cv3.2.1/act/Mul'], add node = ['/model.22/cv3.2/cv3.2.1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv4.1/cv4.1.0/act/Sigmoid', '/model.22/cv4.1/cv4.1.0/act/Mul'], add node = ['/model.22/cv4.1/cv4.1.0/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv4.1/cv4.1.1/act/Sigmoid', '/model.22/cv4.1/cv4.1.1/act/Mul'], add node = ['/model.22/cv4.1/cv4.1.1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv2.1/cv2.1.0/act/Sigmoid', '/model.22/cv2.1/cv2.1.0/act/Mul'], add node = ['/model.22/cv2.1/cv2.1.0/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv2.1/cv2.1.1/act/Sigmoid', '/model.22/cv2.1/cv2.1.1/act/Mul'], add node = ['/model.22/cv2.1/cv2.1.1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv3.1/cv3.1.0/act/Sigmoid', '/model.22/cv3.1/cv3.1.0/act/Mul'], add node = ['/model.22/cv3.1/cv3.1.0/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv3.1/cv3.1.1/act/Sigmoid', '/model.22/cv3.1/cv3.1.1/act/Mul'], add node = ['/model.22/cv3.1/cv3.1.1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/proto/cv1/act/Sigmoid', '/model.22/proto/cv1/act/Mul'], add node = ['/model.22/proto/cv1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/proto/cv2/act/Sigmoid', '/model.22/proto/cv2/act/Mul'], add node = ['/model.22/proto/cv2/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/proto/cv3/act/Sigmoid', '/model.22/proto/cv3/act/Mul'], add node = ['/model.22/proto/cv3/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv4.0/cv4.0.0/act/Sigmoid', '/model.22/cv4.0/cv4.0.0/act/Mul'], add node = ['/model.22/cv4.0/cv4.0.0/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv4.0/cv4.0.1/act/Sigmoid', '/model.22/cv4.0/cv4.0.1/act/Mul'], add node = ['/model.22/cv4.0/cv4.0.1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv2.0/cv2.0.0/act/Sigmoid', '/model.22/cv2.0/cv2.0.0/act/Mul'], add node = ['/model.22/cv2.0/cv2.0.0/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv2.0/cv2.0.1/act/Sigmoid', '/model.22/cv2.0/cv2.0.1/act/Mul'], add node = ['/model.22/cv2.0/cv2.0.1/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv3.0/cv3.0.0/act/Sigmoid', '/model.22/cv3.0/cv3.0.0/act/Mul'], add node = ['/model.22/cv3.0/cv3.0.0/act/Sigmoid_2swish'] I replace_exswish: remove node = ['/model.22/cv3.0/cv3.0.1/act/Sigmoid', '/model.22/cv3.0/cv3.0.1/act/Mul'], add node = ['/model.22/cv3.0/cv3.0.1/act/Sigmoid_2swish'] I convert_reduce_sum_to_conv: remove node = ['/model.22/ReduceSum_2'], add node = ['/model.22/ReduceSum_2_2conv'] I convert_reduce_sum_to_conv: remove node = ['/model.22/ReduceSum_1'], add node = ['/model.22/ReduceSum_1_2conv'] I convert_reduce_sum_to_conv: remove node = ['/model.22/ReduceSum'], add node = ['/model.22/ReduceSum_2conv'] I fold_constant ... I fold_constant done. I fuse_ops done. I I sparse_weight ... I sparse_weight done. I Analysing : 100%|██████████████████████████████████████████████| 183/183 [00:00<00:00, 11048.45it/s] Quantizating : 100%|██████████████████████████████████████████████| 183/183 [00:42<00:00, 4.33it/s] I I quant_optimizer ... I quant_optimizer results: I adjust_tanh_sigmoid: ['/model.22/Sigmoid', '/model.22/Sigmoid_1', '/model.22/Sigmoid_2'] I adjust_concat_split: ['/model.21/Concat', '/model.21/Split', '/model.18/Concat', '/model.17/Concat', '/model.15/Concat', '/model.12/Concat', '/model.8/Concat', '/model.6/Concat', '/model.4/Concat'] I adjust_no_change_node: ['/model.9/m_2/MaxPool', '/model.9/m_1/MaxPool', '/model.9/m/MaxPool'] I quant_optimizer done. I done
[[输出的yolov8s-seg.quantization.cfg文件内容: yolov8s-seg.quantization.txt
混合量化步骤二输出的连板验证精度输出:
# simulator_error: calculate the simulator errors. # entire: errors between 'golden' and 'simulator'. # single: single layer errors. (compare to 'entire', the input of each layer is come from 'golden')! # runtime_error: calculate the runtime errors. # entire: errors between 'golden' and 'runtime'. # single_sim: single layer errors between 'simulator' and 'runtime'. # ('nan' means that tensor are 'all zeros', or 'all equal', or 'large values', etc) layer_name simulator_error runtime_error entire single entire single_sim --------------------------------------------------------------------------------------------------------------------- [Input] images 1.000000 1.000000 1.000000 1.000000 [exDataConvert] images_int8__float16 1.000000 1.000000 [Conv] /model.0/conv/Conv_output_0 1.000000 1.000000 1.000000 1.000000 [exSwish] /model.0/act/Mul_output_0 1.000000 1.000000 0.999998 0.999998 [Conv] /model.1/conv/Conv_output_0 0.999999 1.000000 0.999998 1.000000 [exSwish] /model.1/act/Mul_output_0 1.000000 1.000000 0.999997 0.999999 [Conv] /model.2/cv1/conv/Conv_output_0 0.999999 1.000000 0.999997 1.000000 [exSwish] /model.2/cv1/act/Mul_output_0 0.999999 1.000000 0.999993 0.999997 [Split] /model.2/Split_output_0 0.999999 1.000000 0.999993 1.000000 [Split] /model.2/Split_output_1 0.999999 1.000000 0.999993 1.000000 [Conv] /model.2/m.0/cv1/conv/Conv_output_0 0.999999 1.000000 0.999992 1.000000 [exSwish] /model.2/m.0/cv1/act/Mul_output_0 0.999998 1.000000 0.999992 0.999999 [Conv] /model.2/m.0/cv2/conv/Conv_output_0 0.999998 1.000000 0.999990 1.000000 [exSwish] /model.2/m.0/cv2/act/Mul_output_0 0.999998 1.000000 0.999992 0.999999 [Add] /model.2/m.0/Add_output_0 0.999999 1.000000 0.999994 1.000000 [Concat] /model.2/Concat_output_0 0.999998 1.000000 0.999993 1.000000 [Conv] /model.2/cv2/conv/Conv_output_0 0.999998 1.000000 0.999990 1.000000 [exSwish] /model.2/cv2/act/Mul_output_0 0.999998 1.000000 0.999991 1.000000 [Conv] /model.3/conv/Conv_output_0 0.999999 1.000000 0.999994 1.000000 [exDataConvert] /model.3/conv/Conv_output_0__int8 0.999904 0.999905 0.999900 1.000000 [exSwish] /model.3/act/Mul_output_0 0.999712 0.999713 0.999707 0.999995 [Conv] /model.4/cv1/conv/Conv_output_0 0.999697 0.999869 [exSwish] /model.4/cv1/act/Mul_output_0 0.999538 0.999876 0.999534 0.999998 [Split] /model.4/Split_output_0 0.999461 0.999849 0.999455 1.000000 [Split] /model.4/Split_output_1 0.999717 0.999913 0.999716 1.000000 [Conv] /model.4/m.0/cv1/conv/Conv_output_0 0.999601 0.999875 [exSwish] /model.4/m.0/cv1/act/Mul_output_0 0.998799 0.999507 0.998789 0.999995 [Conv] /model.4/m.0/cv2/conv/Conv_output_0 0.999532 0.999829 [exSwish] /model.4/m.0/cv2/act/Mul_output_0 0.999391 0.999910 0.999391 0.999996 [Add] /model.4/m.0/Add_output_0 0.999536 0.999900 0.999536 1.000000 [Conv] /model.4/m.1/cv1/conv/Conv_output_0 0.999740 0.999958 [exSwish] /model.4/m.1/cv1/act/Mul_output_0 0.997372 0.997848 0.997376 0.999996 [Conv] /model.4/m.1/cv2/conv/Conv_output_0 0.997706 0.998230 [exSwish] /model.4/m.1/cv2/act/Mul_output_0 0.997658 0.999706 0.997659 0.999997 [Add] /model.4/m.1/Add_output_0 0.998741 0.999814 0.998743 1.000000 [Concat] /model.4/Concat_output_0 0.999081 0.999883 0.999080 1.000000 [Conv] /model.4/cv2/conv/Conv_output_0 0.998995 0.999900 [exSwish] /model.4/cv2/act/Mul_output_0 0.998275 0.999533 0.998271 0.999997 [Conv] /model.5/conv/Conv_output_0 0.999134 0.999786 [exSwish] /model.5/act/Mul_output_0 0.996467 0.997897 0.996458 0.999996 [Conv] /model.6/cv1/conv/Conv_output_0 0.997913 0.999051 [exSwish] /model.6/cv1/act/Mul_output_0 0.997111 0.999616 0.997101 0.999997 [exDataConvert] /model.6/cv1/act/Mul_output_0__float16 0.997112 0.999616 0.997101 1.000000 [Split] /model.6/Split_output_0 0.996765 1.000000 0.996751 1.000000 [Split] /model.6/Split_output_1 0.998072 1.000000 0.998069 1.000000 [exDataConvert] /model.6/Split_output_1__int8 0.997777 0.999602 0.997773 1.000000 [Conv] /model.6/m.0/cv1/conv/Conv_output_0 0.998935 0.999854 [exSwish] /model.6/m.0/cv1/act/Mul_output_0 0.994676 0.997817 0.994685 0.999992 [Conv] /model.6/m.0/cv2/conv/Conv_output_0 0.997526 0.999247 [exSwish] /model.6/m.0/cv2/act/Mul_output_0 0.994799 0.998849 0.994800 0.999993 [Add] /model.6/m.0/Add_output_0 0.996220 0.999134 0.996218 1.000000 [Conv] /model.6/m.1/cv1/conv/Conv_output_0 0.998646 0.999942 [exSwish] /model.6/m.1/cv1/act/Mul_output_0 0.993792 0.996710 0.993789 0.999994 [Conv] /model.6/m.1/cv2/conv/Conv_output_0 0.995344 0.997829 0.995322 0.999998 [exDataConvert] /model.6/m.1/cv2/conv/Conv_output_0__float16 0.995344 0.999828 0.995321 1.000000 [exSwish] /model.6/m.1/cv2/act/Mul_output_0 0.994559 1.000000 0.994526 1.000000 [exDataConvert] /model.6/m.0/Add_output_0__float16 0.996220 0.999814 0.996218 1.000000 [Add] /model.6/m.1/Add_output_0 0.995340 1.000000 0.995316 1.000000 [Concat] /model.6/Concat_output_0 0.996092 1.000000 0.996076 1.000000 [exDataConvert] /model.6/Concat_output_0__int8 0.995836 0.999583 0.995823 0.999998 [Conv] /model.6/cv2/conv/Conv_output_0 0.997972 0.999872 [exSwish] /model.6/cv2/act/Mul_output_0 0.994244 0.998145 0.994243 0.999993 [Conv] /model.7/conv/Conv_output_0 0.997883 0.999449 [exSwish] /model.7/act/Mul_output_0 0.993304 0.999162 0.993281 0.999995 [Conv] /model.8/cv1/conv/Conv_output_0 0.995852 0.999654 [exSwish] /model.8/cv1/act/Mul_output_0 0.992441 0.999049 0.992438 0.999996 [Split] /model.8/Split_output_0 0.991735 0.998857 0.991741 1.000000 [Split] /model.8/Split_output_1 0.989582 0.994118 0.989560 1.000000 [Conv] /model.8/m.0/cv1/conv/Conv_output_0 0.994679 0.997575 [exSwish] /model.8/m.0/cv1/act/Mul_output_0 0.985564 0.995179 0.985530 0.999996 [Conv] /model.8/m.0/cv2/conv/Conv_output_0 0.990769 0.997637 0.990715 0.999997 [exDataConvert] /model.8/m.0/cv2/conv/Conv_output_0__float16 0.990770 0.999782 0.990715 1.000000 [exSwish] /model.8/m.0/cv2/act/Mul_output_0 0.988347 1.000000 0.988264 1.000000 [exDataConvert] /model.8/Split_output_1__float16 0.989589 0.994368 0.989558 1.000000 [Add] /model.8/m.0/Add_output_0 0.987352 1.000000 0.987258 1.000000 [exDataConvert] /model.8/m.0/Add_output_0__int8 0.987235 0.999853 0.987155 0.999996 [Concat] /model.8/Concat_output_0 0.988545 0.998956 0.988492 1.000000 [Conv] /model.8/cv2/conv/Conv_output_0 0.993268 0.999934 [exSwish] /model.8/cv2/act/Mul_output_0 0.988431 0.998617 0.988410 0.999995 [Conv] /model.9/cv1/conv/Conv_output_0 0.995147 0.999600 [exSwish] /model.9/cv1/act/Mul_output_0 0.995686 0.999977 0.995701 0.999998 [MaxPool] /model.9/m/MaxPool_output_0 0.998157 0.999993 0.998176 1.000000 [MaxPool] /model.9/m_1/MaxPool_output_0 0.998345 0.999995 0.998374 1.000000 [MaxPool] /model.9/m_2/MaxPool_output_0 0.998438 0.999996 0.998475 1.000000 [Concat] /model.9/Concat_output_0 0.998165 0.999988 0.998191 1.000000 [Conv] /model.9/cv2/conv/Conv_output_0 0.996734 0.999909 [exSwish] /model.9/cv2/act/Mul_output_0 0.983371 0.991884 0.983471 0.999995 [Resize] /model.10/Resize_output_0 0.983371 0.991884 0.983471 1.000000 [Concat] /model.11/Concat_output_0 0.987593 0.994258 0.987647 1.000000 [Conv] /model.12/cv1/conv/Conv_output_0 0.991737 0.998124 [exSwish] /model.12/cv1/act/Mul_output_0 0.987277 0.998000 0.987263 0.999996 [Split] /model.12/Split_output_0 0.983949 0.996749 0.983951 1.000000 [Split] /model.12/Split_output_1 0.989459 0.998788 0.989435 1.000000 [Conv] /model.12/m.0/cv1/conv/Conv_output_0 0.991305 0.999938 [exSwish] /model.12/m.0/cv1/act/Mul_output_0 0.982684 0.999581 0.982592 0.999993 [Conv] /model.12/m.0/cv2/conv/Conv_output_0 0.982501 0.999761 [exSwish] /model.12/m.0/cv2/act/Mul_output_0 0.972088 0.990556 0.971959 0.999997 [Concat] /model.12/Concat_output_0 0.981439 0.995096 0.981388 1.000000 [Conv] /model.12/cv2/conv/Conv_output_0 0.987011 0.997520 [exSwish] /model.12/cv2/act/Mul_output_0 0.975684 0.997228 0.975644 0.999996 [Resize] /model.13/Resize_output_0 0.975685 0.997228 0.975644 1.000000 [Concat] /model.14/Concat_output_0 0.984781 0.997112 0.984755 0.999999 [Conv] /model.15/cv1/conv/Conv_output_0 0.994747 0.999449 [exSwish] /model.15/cv1/act/Mul_output_0 0.995976 0.999960 0.995956 0.999997 [Split] /model.15/Split_output_0 0.996633 0.999970 0.996601 1.000000 [Split] /model.15/Split_output_1 0.994637 0.999879 0.994642 1.000000 [Conv] /model.15/m.0/cv1/conv/Conv_output_0 0.993847 0.999878 [exSwish] /model.15/m.0/cv1/act/Mul_output_0 0.991842 0.999939 0.991862 0.999994 [Conv] /model.15/m.0/cv2/conv/Conv_output_0 0.990124 0.999900 [exSwish] /model.15/m.0/cv2/act/Mul_output_0 0.992060 0.999958 0.992110 0.999997 [Concat] /model.15/Concat_output_0 0.994582 0.999928 0.994586 1.000000 [Conv] /model.15/cv2/conv/Conv_output_0 0.993808 0.999937 [exSwish] /model.15/cv2/act/Mul_output_0 0.993252 0.999942 0.993281 0.999993 [Conv] /model.16/conv/Conv_output_0 0.984581 0.999898 [exSwish] /model.16/act/Mul_output_0 0.965541 0.994624 0.965579 0.999996 [Concat] /model.17/Concat_output_0 0.972043 0.996269 0.972031 1.000000 [Conv] /model.18/cv1/conv/Conv_output_0 0.981650 0.998201 [exSwish] /model.18/cv1/act/Mul_output_0 0.971250 0.999479 0.971254 0.999996 [Split] /model.18/Split_output_0 0.973918 0.999562 0.973978 1.000000 [Split] /model.18/Split_output_1 0.964332 0.994438 0.964221 1.000000 [Conv] /model.18/m.0/cv1/conv/Conv_output_0 0.985269 0.998521 [exSwish] /model.18/m.0/cv1/act/Mul_output_0 0.975605 0.999534 0.975545 0.999995 [Conv] /model.18/m.0/cv2/conv/Conv_output_0 0.963114 0.999551 [exSwish] /model.18/m.0/cv2/act/Mul_output_0 0.953899 0.997655 0.954108 0.999997 [Concat] /model.18/Concat_output_0 0.961866 0.997476 0.961958 1.000000 [Conv] /model.18/cv2/conv/Conv_output_0 0.980369 0.999478 [exSwish] /model.18/cv2/act/Mul_output_0 0.967018 0.998585 0.967117 0.999994 [Conv] /model.19/conv/Conv_output_0 0.978109 0.999521 [exSwish] /model.19/act/Mul_output_0 0.955933 0.988509 0.956107 0.999996 [Concat] /model.20/Concat_output_0 0.971698 0.990355 0.971838 1.000000 [Conv] /model.21/cv1/conv/Conv_output_0 0.985268 0.996546 [exSwish] /model.21/cv1/act/Mul_output_0 0.970007 0.997934 0.970007 0.999995 [Split] /model.21/Split_output_0 0.970068 0.999353 0.969994 1.000000 [Split] /model.21/Split_output_1 0.967899 0.992915 0.967956 1.000000 [Conv] /model.21/m.0/cv1/conv/Conv_output_0 0.988204 0.998082 [exSwish] /model.21/m.0/cv1/act/Mul_output_0 0.959128 0.989179 0.959249 0.999994 [Conv] /model.21/m.0/cv2/conv/Conv_output_0 0.978439 0.994900 [exSwish] /model.21/m.0/cv2/act/Mul_output_0 0.941659 0.963073 0.941747 0.999998 [Concat] /model.21/Concat_output_0 0.951232 0.975574 0.951287 1.000000 [Conv] /model.21/cv2/conv/Conv_output_0 0.967255 0.981855 [exSwish] /model.21/cv2/act/Mul_output_0 0.946344 0.995443 0.946423 0.999993 [Conv] /model.22/cv4.2/cv4.2.0/conv/Conv_output_0 0.976794 0.998878 0.976687 0.999997 [exDataConvert] /model.22/cv4.2/cv4.2.0/conv/Conv_output_0__float16 0.976793 0.999902 0.976688 1.000000 [exSwish] /model.22/cv4.2/cv4.2.0/act/Mul_output_0 0.979537 1.000000 0.979627 1.000000 [Conv] /model.22/cv4.2/cv4.2.1/conv/Conv_output_0 0.984081 1.000000 0.984063 1.000000 [exSwish] /model.22/cv4.2/cv4.2.1/act/Mul_output_0 0.986374 1.000000 0.986365 1.000000 [Conv] output11_int8 0.992544 1.000000 [exDataConvert] output11 0.992544 1.000000 0.992501 1.000000 [Conv] /model.22/cv2.2/cv2.2.0/conv/Conv_output_0 0.966998 0.997992 0.967220 0.999998 [exDataConvert] /model.22/cv2.2/cv2.2.0/conv/Conv_output_0__float16 0.966999 0.999892 0.967220 1.000000 [exSwish] /model.22/cv2.2/cv2.2.0/act/Mul_output_0 0.972475 1.000000 0.972623 1.000000 [Conv] /model.22/cv2.2/cv2.2.1/conv/Conv_output_0 0.978953 1.000000 0.978722 1.000000 [exSwish] /model.22/cv2.2/cv2.2.1/act/Mul_output_0 0.983686 1.000000 0.983433 1.000000 [Conv] output8_int8 0.992880 1.000000 [exDataConvert] output8 0.992880 1.000000 0.992856 1.000000 [Conv] /model.22/cv3.2/cv3.2.0/conv/Conv_output_0 0.969897 0.996682 0.970212 0.999995 [exDataConvert] /model.22/cv3.2/cv3.2.0/conv/Conv_output_0__float16 0.969894 0.999736 0.970213 1.000000 [exSwish] /model.22/cv3.2/cv3.2.0/act/Mul_output_0 0.967017 1.000000 0.967431 1.000000 [Conv] /model.22/cv3.2/cv3.2.1/conv/Conv_output_0 0.973027 1.000000 0.973418 1.000000 [exSwish] /model.22/cv3.2/cv3.2.1/act/Mul_output_0 0.978745 1.000000 0.979017 1.000000 [Conv] /model.22/cv3.2/cv3.2.2/Conv_output_0 0.999228 1.000000 0.999227 1.000000 [Sigmoid] output9_int8 0.993253 1.000000 [exDataConvert] output9 0.993253 1.000000 0.991211 0.997793 [Conv] /model.22/ReduceSum_2_output_0 0.993216 1.000000 [Clip] output10_int8 0.993216 1.000000 [exDataConvert] output10 0.993216 1.000000 0.902946 0.907305 [Conv] /model.22/cv4.1/cv4.1.0/conv/Conv_output_0 0.974635 0.999637 [exSwish] /model.22/cv4.1/cv4.1.0/act/Mul_output_0 0.978413 0.999659 0.978607 0.999996 [Conv] /model.22/cv4.1/cv4.1.1/conv/Conv_output_0 0.983883 0.999745 0.983974 0.999998 [exDataConvert] /model.22/cv4.1/cv4.1.1/conv/Conv_output_0__float16 0.983883 0.999912 0.983974 1.000000 [exSwish] /model.22/cv4.1/cv4.1.1/act/Mul_output_0 0.983129 1.000000 0.983230 1.000000 [Conv] output7_int8 0.992122 1.000000 [exDataConvert] output7 0.992122 1.000000 0.992180 1.000000 [Conv] /model.22/cv2.1/cv2.1.0/conv/Conv_output_0 0.959621 0.999012 0.959668 0.999996 [exDataConvert] /model.22/cv2.1/cv2.1.0/conv/Conv_output_0__float16 0.959621 0.999758 0.959668 1.000000 [exSwish] /model.22/cv2.1/cv2.1.0/act/Mul_output_0 0.961373 1.000000 0.961553 1.000000 [Conv] /model.22/cv2.1/cv2.1.1/conv/Conv_output_0 0.971303 1.000000 0.971525 1.000000 [exSwish] /model.22/cv2.1/cv2.1.1/act/Mul_output_0 0.977228 1.000000 0.977464 1.000000 [Conv] output4_int8 0.993265 1.000000 [exDataConvert] output4 0.993265 1.000000 0.993345 1.000000 [Conv] /model.22/cv3.1/cv3.1.0/conv/Conv_output_0 0.969095 0.999391 [exSwish] /model.22/cv3.1/cv3.1.0/act/Mul_output_0 0.953357 0.998573 0.953245 0.999995 [Conv] /model.22/cv3.1/cv3.1.1/conv/Conv_output_0 0.977318 0.998247 0.977310 0.999988 [exDataConvert] /model.22/cv3.1/cv3.1.1/conv/Conv_output_0__float16 0.977316 0.999430 0.977311 1.000000 [exSwish] /model.22/cv3.1/cv3.1.1/act/Mul_output_0 0.981851 1.000000 0.981897 1.000000 [Conv] /model.22/cv3.1/cv3.1.2/Conv_output_0 0.999710 1.000000 0.999714 1.000000 [Sigmoid] output5_int8 0.986039 1.000000 [exDataConvert] output5 0.986039 1.000000 0.736498 0.747560 [Conv] /model.22/ReduceSum_1_output_0 0.989157 1.000000 [Clip] output6_int8 0.989157 1.000000 [exDataConvert] output6 0.989157 1.000000 0.223930 0.227319 [Conv] /model.22/proto/cv1/conv/Conv_output_0 0.991815 0.999881 [exSwish] /model.22/proto/cv1/act/Mul_output_0 0.985442 0.998241 0.985507 0.999995 [ConvTranspose] /model.22/proto/upsample/ConvTranspose_output_0 0.993589 0.999328 0.993615 0.999999 [Conv] /model.22/proto/cv2/conv/Conv_output_0 0.996772 0.999993 [exSwish] /model.22/proto/cv2/act/Mul_output_0 0.996644 0.999980 0.996637 0.999996 [Conv] /model.22/proto/cv3/conv/Conv_output_0 0.988931 0.999829 0.988919 0.999998 [exDataConvert] /model.22/proto/cv3/conv/Conv_output_0__float16 0.988931 0.999921 0.988919 1.000000 [exSwish] proto_int8 0.989512 1.000000 [exDataConvert] proto 0.989512 1.000000 0.989494 1.000000 [Conv] /model.22/cv4.0/cv4.0.0/conv/Conv_output_0 0.985720 0.999909 [exSwish] /model.22/cv4.0/cv4.0.0/act/Mul_output_0 0.986436 0.999769 0.986434 0.999997 [Conv] /model.22/cv4.0/cv4.0.1/conv/Conv_output_0 0.986299 0.999826 0.986237 1.000000 [exDataConvert] /model.22/cv4.0/cv4.0.1/conv/Conv_output_0__float16 0.986299 0.999935 0.986238 1.000000 [exSwish] /model.22/cv4.0/cv4.0.1/act/Mul_output_0 0.988153 1.000000 0.988096 1.000000 [Conv] output3_int8 0.995409 1.000000 [exDataConvert] output3 0.995409 1.000000 0.995372 1.000000 [Conv] /model.22/cv2.0/cv2.0.0/conv/Conv_output_0 0.989050 0.999792 [exSwish] /model.22/cv2.0/cv2.0.0/act/Mul_output_0 0.986228 0.999830 0.986218 0.999990 [exDataConvert] /model.22/cv2.0/cv2.0.0/act/Mul_output_0__float16 0.986228 0.999830 0.986219 1.000000 [Conv] /model.22/cv2.0/cv2.0.1/conv/Conv_output_0 0.984343 1.000000 0.984311 1.000000 [exSwish] /model.22/cv2.0/cv2.0.1/act/Mul_output_0 0.986249 1.000000 0.986199 1.000000 [Conv] output0_int8 0.995273 1.000000 [exDataConvert] output0 0.995273 1.000000 0.995252 1.000000 [Conv] /model.22/cv3.0/cv3.0.0/conv/Conv_output_0 0.989440 0.999885 [exSwish] /model.22/cv3.0/cv3.0.0/act/Mul_output_0 0.971564 0.993903 0.971541 0.999995 [Conv] /model.22/cv3.0/cv3.0.1/conv/Conv_output_0 0.980204 0.991985 0.980069 0.999993 [exDataConvert] /model.22/cv3.0/cv3.0.1/conv/Conv_output_0__float16 0.980204 0.999633 0.980068 1.000000 [exSwish] /model.22/cv3.0/cv3.0.1/act/Mul_output_0 0.985248 1.000000 0.985197 1.000000 [Conv] /model.22/cv3.0/cv3.0.2/Conv_output_0 0.999838 1.000000 0.999837 1.000000 [Sigmoid] output1_int8 0.706008 1.000000 [exDataConvert] output1 0.706008 1.000000 0.125208 0.181133 [Conv] /model.22/ReduceSum_output_0 0.818402 1.000000 [Clip] output2_int8 0.818402 1.000000 [exDataConvert] output2 0.818402 1.000000 0.131679 0.159088
问题一: 混合量化步骤一没有使用所用的参数. 1) 设置了optimization_level=0,但是仍然做了优化 2) 设置了quantized_method为channel,但yolov8s-seg.quantization.cfg仍然显示为layer 3) 设置了proposal=False,但yolov8s-seg.quantization.cfg仍然给出了混合量化的建议
问题二: 精度损失巨大 | output1 | 0.125208 | | output2 | 0.131679 | | output5 | 0.736498 | | output6 | 0.223930 |
Yolov8-seg demo for RKNN is available here https://github.com/airockchip/rknn_model_zoo.
The model output struct needs to be changed for quantization, which has been done in rknn_model_zoo demo.
RK3588板环境 系统版本:ubuntu 22.04 rknpu2-dev: 1.5.2
PC环境: 系统版本:ubuntu 22.04 python: 3.8 rknn-toolkit2: 1.5.2+b642f30c
问题描述: 1)YOLOv8-seg模型量化精度异常 2)rknn-toolkit2配置未生效
复现步骤: 模型:官方yolov8s-seg.pt模型https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8s-seg.pt 转换脚本:
混合量化步骤一输出日志:
[[输出的yolov8s-seg.quantization.cfg文件内容: yolov8s-seg.quantization.txt
混合量化步骤二输出的连板验证精度输出:
问题一: 混合量化步骤一没有使用所用的参数. 1) 设置了optimization_level=0,但是仍然做了优化 2) 设置了quantized_method为channel,但yolov8s-seg.quantization.cfg仍然显示为layer 3) 设置了proposal=False,但yolov8s-seg.quantization.cfg仍然给出了混合量化的建议
问题二: 精度损失巨大 | output1 | 0.125208 | | output2 | 0.131679 | | output5 | 0.736498 | | output6 | 0.223930 |