fabio-sim / LightGlue-ONNX

ONNX-compatible LightGlue: Local Feature Matching at Light Speed. Supports TensorRT, OpenVINO
Apache License 2.0
364 stars 33 forks source link

how to convert onnx into an rknn model? #72

Closed ouxiand closed 5 months ago

ouxiand commented 6 months ago

Hello, Thank you for sharing such a great project!

May I ask how to convert onnx into an rknn model?I want to run this lightglue onnx model on rknn npu.

However, rknn does not support dynamic calls and has no idea at all.

Who knows how to solve it?

caiya55 commented 6 months ago

you can set the shape of the model to static shape

ouxiand commented 6 months ago

Input/Output has been set to 512,but there were some errors: root@6ddf679dd88b:/examples# python onnx2rknn.py W init: rknn-toolkit2 version: 1.6.0+81f21f4d W config: Please make sure the model can be dynamic when enable 'config.dynamic_input'! W config: The 'dynamic_input' function has been enabled, the MaxShape is dynamic_input[0] = [[1, 3, 512, 512]]! The following functions are subject to the MaxShape:

  1. The quantified dataset needs to be configured according to MaxShape
  2. The eval_perf or eval_memory return the results of MaxShape --> Loading model W load_onnx: It is recommended onnx opset 19, but your onnx model opset is 17! W load_onnx: Model converted from pytorch, 'opset_version' should be set 19 in torch.onnx.export for successful convert! Loading : 100%|████████████████████████████████████████████████| 125/125 [00:00<00:00, 94228.61it/s] done --> Building model E build: The input 0 of NonZero('/NonZero') need to be constant! It will cause the graph to be a dynamic graph! Remove NonZero('/NonZero') manually and try again! W build: ===================== WARN(5) ===================== E rknn-toolkit2 version: 1.6.0+81f21f4d E build: Catch exception when building RKNN model! E build: Traceback (most recent call last): E build: File "rknn/api/rknn_base.py", line 1971, in rknn.api.rknn_base.RKNNBase.build E build: File "rknn/api/graph_optimizer.py", line 779, in rknn.api.graph_optimizer.GraphOptimizer.fold_constant E build: File "rknn/api/graph_optimizer.py", line 347, in rknn.api.graph_optimizer._dynamic_check E build: File "rknn/api/rknn_log.py", line 92, in rknn.api.rknn_log.RKNNLog.e E build: ValueError: The input 0 of NonZero('/NonZero') need to be constant! It will cause the graph to be a dynamic graph! E build: Remove NonZero('/NonZero') manually and try again! W If you can't handle this error, please try updating to the latest version of the toolkit2 and runtime from: https://console.zbox.filez.com/l/I00fc3 (Pwd: rknn) Path: RKNPU2_SDK / 1.X.X / develop / If the error still exists in the latest version, please collect the corresponding error logs and the model, convert script, and input data that can reproduce the problem, and then submit an issue on: https://redmine.rock-chips.com (Please consult our sales or FAE for the redmine account) build model failed.
napalm00 commented 5 months ago

@ouxiand were you able to solve this? if so, how?

ouxiand commented 5 months ago

Cannot use NPU model, can only use CPU, slow speed, currently no better solution.

JohnConnor123 commented 4 months ago

Same problem with simple model from torchhub model zoo

tomatosliu commented 3 months ago

anyone found the solution?

JohnConnor123 commented 3 months ago

anyone found the solution?

You should write an implementation of the NonZero operation. The documentation contains a description of how to do this.

tomatosliu commented 3 months ago

anyone found the solution?

You should write an implementation of the NonZero operation. The documentation contains a description of how to do this.

which documentation you refered to, could you please provide it?