1*4882a593Smuzhiyun# RKNNToolkit2 API Difference With Toolkit1
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun## rknn.config
4*4882a593Smuzhiyun- Toolkit1:
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun        config(batch_size=100,                                  # abandoned
7*4882a593Smuzhiyun               caffe_mean_file=None,                            # abandoned
8*4882a593Smuzhiyun               dtype='float32',                                 # abandoned
9*4882a593Smuzhiyun               epochs=-1,                                       # abandoned
10*4882a593Smuzhiyun               force_gray=None,                                 # abandoned
11*4882a593Smuzhiyun               input_fitting='scale',                           # abandoned
12*4882a593Smuzhiyun               input_normalization=None,                        # abandoned
13*4882a593Smuzhiyun               mean_file=None,                                  # abandoned
14*4882a593Smuzhiyun               model_data_format='zone',                        # abandoned
15*4882a593Smuzhiyun               model_quantize=None,                             # abandoned
16*4882a593Smuzhiyun               optimize='Default',                              # abandoned
17*4882a593Smuzhiyun               quantized_dtype='asymmetric_affine-u8',
18*4882a593Smuzhiyun               quantized_moving_alpha=0.01,                     # abandoned
19*4882a593Smuzhiyun               quantized_algorithm='normal',
20*4882a593Smuzhiyun               quantized_divergence_nbins=1024,                 # abandoned
21*4882a593Smuzhiyun               mmse_epoch=3,                                    # abandoned
22*4882a593Smuzhiyun               random_brightness=None,                          # abandoned
23*4882a593Smuzhiyun               random_contrast=None,                            # abandoned
24*4882a593Smuzhiyun               random_crop=None,                                # abandoned
25*4882a593Smuzhiyun               random_flip=None,                                # abandoned
26*4882a593Smuzhiyun               random_mirror=None,                              # abandoned
27*4882a593Smuzhiyun               reorder_channel=None,                            # abandoned
28*4882a593Smuzhiyun               restart=False,                                   # abandoned
29*4882a593Smuzhiyun               samples=-1,                                      # abandoned
30*4882a593Smuzhiyun               need_horizontal_merge=False,                     # abandoned
31*4882a593Smuzhiyun               deconv_merge=True,                               # abandoned
32*4882a593Smuzhiyun               conv_mul_merge=True,                             # abandoned
33*4882a593Smuzhiyun               quantized_hybrid=False,                          # abandoned
34*4882a593Smuzhiyun               output_optimize=0,                               # abandoned
35*4882a593Smuzhiyun               remove_tensorflow_output_permute=False,          # abandoned
36*4882a593Smuzhiyun               optimization_level=3,
37*4882a593Smuzhiyun               target_platform=None,
38*4882a593Smuzhiyun               mean_values=None,
39*4882a593Smuzhiyun               std_values=None,
40*4882a593Smuzhiyun               channel_mean_value=None,                         # abandoned
41*4882a593Smuzhiyun               force_builtin_perm=False,                        # abandoned
42*4882a593Smuzhiyun               do_sparse_network=True,                          # abandoned
43*4882a593Smuzhiyun               merge_dequant_layer_and_output_node=False,       # abandoned
44*4882a593Smuzhiyun               quantize_input_node=False,                       # abandoned
45*4882a593Smuzhiyun               inputs_scale_range=None)                         # abandoned
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun- Toolkit2:
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun        config(mean_values=None,
50*4882a593Smuzhiyun               std_values=None,
51*4882a593Smuzhiyun               quantized_dtype='asymmetric_quantized-8',
52*4882a593Smuzhiyun               quantized_algorithm='normal',
53*4882a593Smuzhiyun               quantized_method='channel',                      # new
54*4882a593Smuzhiyun               target_platform=None,
55*4882a593Smuzhiyun               quant_img_RGB2BGR=False,                         # new
56*4882a593Smuzhiyun               float_dtype='float16',                           # new
57*4882a593Smuzhiyun               optimization_level=3,
58*4882a593Smuzhiyun               custom_string=None,                              # new
59*4882a593Smuzhiyun               remove_weight=False,                             # new
60*4882a593Smuzhiyun               compress_weight=False,                           # new
61*4882a593Smuzhiyun               inputs_yuv_fmt=None,                             # new
62*4882a593Smuzhiyun               single_core_mode=False)                          # new
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun- In addition to the above abandoned/new items, there are other differences:
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun        quantized_dtype:
67*4882a593Smuzhiyun            toolkit1: asymmetric_affine-u8, dynamic_fixed_point-i8, dynamic_fixed_point-i16
68*4882a593Smuzhiyun            toolkit2: asymmetric_quantized-8
69*4882a593Smuzhiyun        quantized_algorithm:
70*4882a593Smuzhiyun            toolkit1: normal(default), mmse, kl_divergence, moving_average
71*4882a593Smuzhiyun            toolkit2: normal(default), mmse
72*4882a593Smuzhiyun        target_platform:
73*4882a593Smuzhiyun            toolkit1: rk1808, rk3399pro, rv1109, rv1126
74*4882a593Smuzhiyun            toolkit2: rk3566, rk3568, rk3588, rk3588s, rv1103, rv1106, rk3562 and newer
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun## rknn.load_tensorflow
77*4882a593Smuzhiyun- Toolkit1:
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun        load_tensorflow(tf_pb,
80*4882a593Smuzhiyun                        inputs,
81*4882a593Smuzhiyun                        input_size_list,
82*4882a593Smuzhiyun                        outputs,
83*4882a593Smuzhiyun                        predef_file=None,                       # abandoned
84*4882a593Smuzhiyun                        mean_values=None,                       # abandoned
85*4882a593Smuzhiyun                        std_values=None,                        # abandoned
86*4882a593Smuzhiyun                        size_with_batch=None)                   # abandoned
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun- Toolkit2:
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun        load_tensorflow(tf_pb,
91*4882a593Smuzhiyun                        inputs,
92*4882a593Smuzhiyun                        input_size_list,
93*4882a593Smuzhiyun                        outputs)
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun- In addition to the above abandoned items, there are other differences:
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun        inputs:
98*4882a593Smuzhiyun            toolkit1: node list (layer name)
99*4882a593Smuzhiyun            toolkit2: node list (operand name)
100*4882a593Smuzhiyun        outputs:
101*4882a593Smuzhiyun            toolkit1: node list (layer name)
102*4882a593Smuzhiyun            toolkit2: node list (operand name)
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun## rknn.load_caffe
105*4882a593Smuzhiyun- Toolkit1:
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun        load_caffe(model,
108*4882a593Smuzhiyun                   proto,                                       # abandoned
109*4882a593Smuzhiyun                   blobs=None)
110*4882a593Smuzhiyun- Toolkit2:
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun        load_caffe(model,
113*4882a593Smuzhiyun                   blobs=None,
114*4882a593Smuzhiyun                   input_name=None)                             # new
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun## rknn.load_keras
118*4882a593Smuzhiyun- Toolkit1:
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun        load_keras(model, convert_engine='Keras')
121*4882a593Smuzhiyun- Toolkit2:
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun        Not supported yet!
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun## rknn.load_pytorch
126*4882a593Smuzhiyun- Toolkit1:
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun        load_pytorch(model,
129*4882a593Smuzhiyun                     input_size_list=None,
130*4882a593Smuzhiyun                     inputs=None,                               # abandoned
131*4882a593Smuzhiyun                     outputs=None,                              # abandoned
132*4882a593Smuzhiyun                     convert_engine='torch')                    # abandoned
133*4882a593Smuzhiyun- Toolkit2:
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun        load_pytorch(model,
136*4882a593Smuzhiyun                     input_size_list)
137*4882a593Smuzhiyun
138*4882a593Smuzhiyun## rknn.load_mxnet
139*4882a593Smuzhiyun- Toolkit1:
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun        load_mxnet(symbol, params, input_size_list=None)
142*4882a593Smuzhiyun- Toolkit2:
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun        Not supported yet!
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun## rknn.build
147*4882a593Smuzhiyun- Toolkit1:
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun        build(do_quantization=True,
150*4882a593Smuzhiyun              dataset='dataset.txt',
151*4882a593Smuzhiyun              pre_compile=False,                                # abandoned
152*4882a593Smuzhiyun              rknn_batch_size=-1)
153*4882a593Smuzhiyun- Toolkit2:
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun        build(do_quantization=True,
156*4882a593Smuzhiyun              dataset='dataset.txt',
157*4882a593Smuzhiyun              rknn_batch_size=-1):
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun## rknn.direct_build
161*4882a593Smuzhiyun- Toolkit1:
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun        direct_build(model_input, data_input, model_quantize=None, pre_compile=False)
164*4882a593Smuzhiyun- Toolkit2:
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun        Not supported yet!
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun## rknn.hybrid_quantization_step1
169*4882a593Smuzhiyun- Toolkit1:
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun        hybrid_quantization_step1(dataset=None)
172*4882a593Smuzhiyun- Toolkit2:
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun        hybrid_quantization_step1(dataset=None,
175*4882a593Smuzhiyun                                  rknn_batch_size=-1,           # new
176*4882a593Smuzhiyun                                  proposal=False,               # new
177*4882a593Smuzhiyun                                  proposal_dataset_size=1)      # new
178*4882a593Smuzhiyun
179*4882a593Smuzhiyun
180*4882a593Smuzhiyun## rknn.hybrid_quantization_step2
181*4882a593Smuzhiyun- Toolkit1:
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun        hybrid_quantization_step2(model_input,
184*4882a593Smuzhiyun                                  data_input,
185*4882a593Smuzhiyun                                  model_quantization_cfg,
186*4882a593Smuzhiyun                                  dataset,                      # abandoned
187*4882a593Smuzhiyun                                  pre_compile=False)            # abandoned
188*4882a593Smuzhiyun- Toolkit2:
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun        hybrid_quantization_step2(model_input,
191*4882a593Smuzhiyun                                  data_input,
192*4882a593Smuzhiyun                                  model_quantization_cfg)
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun
195*4882a593Smuzhiyun## rknn.accuracy_analysis
196*4882a593Smuzhiyun- Toolkit1:
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun        accuracy_analysis(inputs,
199*4882a593Smuzhiyun                          output_dir='./snapshot',
200*4882a593Smuzhiyun                          calc_qnt_error=True,                  # abandoned
201*4882a593Smuzhiyun                          target=None,
202*4882a593Smuzhiyun                          device_id=None,
203*4882a593Smuzhiyun                          dump_file_type='tensor')              # abandoned
204*4882a593Smuzhiyun- Toolkit2:
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun        accuracy_analysis(inputs,
207*4882a593Smuzhiyun                          output_dir='./snapshot',
208*4882a593Smuzhiyun                          target=None,
209*4882a593Smuzhiyun                          device_id=None)
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun## rknn.load_rknn
213*4882a593Smuzhiyun- Toolkit1:
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun        load_rknn(path,
216*4882a593Smuzhiyun                  load_model_in_npu=False)                      # abandoned
217*4882a593Smuzhiyun- Toolkit2:
218*4882a593Smuzhiyun
219*4882a593Smuzhiyun        load_rknn(path)
220*4882a593Smuzhiyun
221*4882a593Smuzhiyun
222*4882a593Smuzhiyun## rknn.export_rknn
223*4882a593Smuzhiyun- Toolkit1:
224*4882a593Smuzhiyun
225*4882a593Smuzhiyun        export_rknn(export_path)
226*4882a593Smuzhiyun- Toolkit2:
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun        export_rknn(export_path,
229*4882a593Smuzhiyun                    **kwargs)                                   # new
230*4882a593Smuzhiyun
231*4882a593Smuzhiyun## rknn.load_firmware
232*4882a593Smuzhiyun- Toolkit1:
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun        load_firmware(fw_dir=None)
235*4882a593Smuzhiyun- Toolkit2:
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun        Not supported yet!
238*4882a593Smuzhiyun
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun## rknn.init_runtime
241*4882a593Smuzhiyun- Toolkit1:
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun        init_runtime(target=None,
244*4882a593Smuzhiyun                     target_sub_class=None,
245*4882a593Smuzhiyun                     device_id=None,
246*4882a593Smuzhiyun                     perf_debug=False,
247*4882a593Smuzhiyun                     eval_mem=False,
248*4882a593Smuzhiyun                     async_mode=False,
249*4882a593Smuzhiyun                     rknn2precompile=False)                     # abandoned
250*4882a593Smuzhiyun- Toolkit2:
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun        init_runtime(target=None,
253*4882a593Smuzhiyun                     target_sub_class=None,
254*4882a593Smuzhiyun                     device_id=None,
255*4882a593Smuzhiyun                     perf_debug=False,
256*4882a593Smuzhiyun                     eval_mem=False,
257*4882a593Smuzhiyun                     async_mode=False)
258*4882a593Smuzhiyun
259*4882a593Smuzhiyun- In addition to the above abandoned items, there are other differences:
260*4882a593Smuzhiyun
261*4882a593Smuzhiyun        target:
262*4882a593Smuzhiyun            toolkit1: None(simulator), RK3399Pro, RK1808
263*4882a593Smuzhiyun            toolkit2: None(simulator), RK3566, RK3568, RK3588, RK3562
264*4882a593Smuzhiyun
265*4882a593Smuzhiyun
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun## rknn.inference
268*4882a593Smuzhiyun- Toolkit1:
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun        inference(inputs,
271*4882a593Smuzhiyun                  data_type=None,                               # abandoned
272*4882a593Smuzhiyun                  data_format=None,
273*4882a593Smuzhiyun                  inputs_pass_through=None,
274*4882a593Smuzhiyun                  get_frame_id=False)
275*4882a593Smuzhiyun- Toolkit2:
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun        inference(inputs,
278*4882a593Smuzhiyun                  data_format=None,
279*4882a593Smuzhiyun                  inputs_pass_through=None,
280*4882a593Smuzhiyun                  get_frame_id=False)
281*4882a593Smuzhiyun
282*4882a593Smuzhiyun
283*4882a593Smuzhiyun## rknn.eval_perf
284*4882a593Smuzhiyun- Toolkit1:
285*4882a593Smuzhiyun
286*4882a593Smuzhiyun        eval_perf(inputs=None,                                  # abandoned
287*4882a593Smuzhiyun                  data_type=None,                               # abandoned
288*4882a593Smuzhiyun                  data_format=None,                             # abandoned
289*4882a593Smuzhiyun                  is_print=True,
290*4882a593Smuzhiyun                  loop_cnt=1)                                   # abandoned
291*4882a593Smuzhiyun- Toolkit2:
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun        eval_perf(is_print=True)
294*4882a593Smuzhiyun
295*4882a593Smuzhiyun
296*4882a593Smuzhiyun## rknn.export_rknn_precompile_model
297*4882a593Smuzhiyun- Toolkit1:
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun        export_rknn_precompile_model(export_path=None)
300*4882a593Smuzhiyun- Toolkit2:
301*4882a593Smuzhiyun
302*4882a593Smuzhiyun        Abandoned
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun
305*4882a593Smuzhiyun## rknn.export_rknn_sync_model
306*4882a593Smuzhiyun- Toolkit1:
307*4882a593Smuzhiyun
308*4882a593Smuzhiyun        export_rknn_sync_model(input_model=None, sync_uids=None, output_model=None)
309*4882a593Smuzhiyun- Toolkit2:
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun        Abandoned
312*4882a593Smuzhiyun
313*4882a593Smuzhiyun
314*4882a593Smuzhiyun## rknn.register_op
315*4882a593Smuzhiyun- Toolkit1:
316*4882a593Smuzhiyun
317*4882a593Smuzhiyun        register_op(op_path)
318*4882a593Smuzhiyun- Toolkit2:
319*4882a593Smuzhiyun
320*4882a593Smuzhiyun        Not supported yet
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun
323*4882a593Smuzhiyun## rknn.fetch_rknn_model_config
324*4882a593Smuzhiyun- Toolkit1:
325*4882a593Smuzhiyun
326*4882a593Smuzhiyun        fetch_rknn_model_config(model_path)
327*4882a593Smuzhiyun- Toolkit2:
328*4882a593Smuzhiyun
329*4882a593Smuzhiyun        Not supported yet
330*4882a593Smuzhiyun
331*4882a593Smuzhiyun
332*4882a593Smuzhiyun## rknn.list_support_target_platform
333*4882a593Smuzhiyun- Toolkit1:
334*4882a593Smuzhiyun
335*4882a593Smuzhiyun        list_support_target_platform(rknn_model=None)
336*4882a593Smuzhiyun- Toolkit2:
337*4882a593Smuzhiyun
338*4882a593Smuzhiyun        Not supported yet
339