File size: 2,122 Bytes
4019d6d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python
# coding: utf-8

import datetime
import argparse
from rknn.api import RKNN
from sys import exit


parser = argparse.ArgumentParser(description='Convert ONNX to RKNN model.')
parser.add_argument('onnx_model', type=str, help='Path to the input ONNX model file.')
args = parser.parse_args()


ONNX_MODEL = args.onnx_model
RKNN_MODEL = ONNX_MODEL.replace(".onnx", ".rknn")
DATASET = "/home/zt/rk3588-nn/rknn_model_zoo/datasets/COCO/coco_subset_20.txt"
QUANTIZE = False
detailed_performance_log = True

timedate_iso = datetime.datetime.now().isoformat()

rknn = RKNN(verbose=True)
rknn.config(
    # mean_values=[x * 255 for x in [0.485, 0.456, 0.406]],
    # std_values=[x * 255 for x in [0.229, 0.224, 0.225]],
    quantized_dtype="w8a8",
    quantized_algorithm="normal",
    quantized_method="channel",
    quantized_hybrid_level=0,
    target_platform="rk3588",
    quant_img_RGB2BGR=False,
    float_dtype="float16",
    optimization_level=3,
    custom_string=f"converted by: email: 2302004040@qq.com at {timedate_iso}",
    remove_weight=False,
    compress_weight=False,
    inputs_yuv_fmt=None,
    single_core_mode=False,
    # dynamic_input=[  #这个和下面的inputs + input_size_list二选一
    #     [
    #         [1, 3, 240, 320],
    #         # ...
    #     ],
    #     [
    #         [1, 3, 480, 640],
    #         # ...
    #     ],
    #     [
    #         [1, 3, 960, 1280],
    #         # ...
    #     ],
    # ],
    model_pruning=False,
    op_target={'Gather':'cpu'},
    quantize_weight=False,
    remove_reshape=False,
    sparse_infer=False,
    enable_flash_attention=False,
    # 隐藏的参数
    # disable_rules=[],
    # sram_prefer=False,
    # nbuf_prefer=False,
    # check_data=[],
)

ret = rknn.load_onnx(model=ONNX_MODEL)
ret = rknn.build(do_quantization=QUANTIZE, dataset=DATASET, rknn_batch_size=None)
ret = rknn.export_rknn(RKNN_MODEL)

# ret = rknn.init_runtime(target='rk3588',core_mask=RKNN.NPU_CORE_0,perf_debug=detailed_performance_log)
# rknn.eval_perf()
# ret = rknn.accuracy_analysis(inputs=['processed_images_rknn.npy'], target='rk3588')