airockchip / rknn-toolkit2

Other
775 stars 79 forks source link

When I use the dynamic shape model for inference, I encounter an error #150

Open liting1045 opened 2 days ago

liting1045 commented 2 days ago

多尺度的静态输入推理结果正常,代码如下:

if scale==0.25:
    ret = rknn.load_rknn('./models/dense_64.rknn')   
elif scale==0.5:
    ret = rknn.load_rknn('./models/dense_128.rknn')
else:
    ret = rknn.load_rknn('./models/dense_256.rknn')
rknn.init_runtime()
dense_features = rknn.inference(inputs=[current_image],data_format='nchw')
rknn.release()

使用动态shape后,转rknn模型过程也比较顺利,然后在PC上使用simulator推理,结果也正常。代码为:

rknn_dense = RKNN(verbose=False)
dynamic_input = [
[[1,3,64,64]],    # set 1: [input0_64]
[[1,3,128,128]],    # set 2: [input0_128]
[[1,3,256,256]],    # set 3: [input0_256]
]
rknn_dense.config(mean_values=[[0, 0, 0]], 
                  std_values=[[1,1, 1]], 
                  target_platform='rk3588',
                  dynamic_input=dynamic_input)
ret = rknn_dense.load_onnx('models_dynamic/dense_dynamic.onnx')
rknn_dense.build(do_quantization=True, dataset=DATASET_PATH01)
rknn_dense.export_rknn('./models_dynamic/dense_dynamic(256).rknn')
rknn_dense.init_runtime(target=None)
current_image = current_image.numpy()
dense_features = rknn_dense.inference(inputs=[current_image],data_format='nchw')
rknn_dense.release()

最后在板子上进行rknn的动态shape推理:

 rknn_dense_X = RKNN()
rknn_dense_X.load_rknn('./rknn/dense_dynamic(256).rknn')
rknn_dense_X.init_runtime()
dense_features = rknn_dense_X.inference(inputs =[current_image],data_format=['nchw'])

报错如下:

terminate called after throwing an instance of 'std::out_of_range' what(): vector::_M_range_check: __n (which is 18446744073709551615) >= this->size() (which is 3) 没想明白为啥不能正常推理?

yuyun2000 commented 1 day ago

换版本试试

liting1045 commented 1 day ago

换版本试试

353464ab-6f52-434b-b874-7f65b4d377f3 我的RKNN Driver版本是0.9.2,toolkit2的版本是2.0.0b0,还需要更新到最新版本吗?

yuyun2000 commented 1 day ago

可以试试