LightGlue: Local Feature Matching at Light Speed の ONNX(Open Neural Network Exchange)互換実装です。ONNX モデルフォーマットにより、複数の実行プロバイダーに対応し、さまざまなプラットフォーム間での相互運用性が向上します。また、PyTorch などの Python 固有の依存関係を排除します。TensorRT および OpenVINO をサポートしています。
✨ 新機能: エンドツーエンドの並列動的バッチサイズのサポート。詳細はこの ブログ記事 をご覧ください。
更新履歴
- 2024年7月17日: エンドツーエンドの並列動的バッチサイズのサポート。スクリプト UX の改良。 ブログ記事 を追加。
- 2023年11月2日: 約30%のスピードアップのために ArgMax を最適化する TopK トリックを導入。
- 2023年10月4日: FlashAttention-2 をサポートする
onnxruntime>=1.16.0
を使用した LightGlue ONNX モデルの統合。長いシーケンス長(キーポイントの数)で最大80%の推論速度向上。 - 2023年10月27日: LightGlue-ONNX が Kornia に追加されました。
- 2023年7月19日: TensorRT のサポートを追加。
- 2023年7月13日: Flash Attention のサポートを追加。
- 2023年7月11日: Mixed Precision のサポートを追加。
- 2023年7月4日: 推論時間の比較を追加。
- 2023年7月1日:
max_num_keypoints
をサポートするエクストラクタを追加。 - 2023年6月30日: DISK エクストラクタのサポートを追加。
- 2023年6月28日: エンドツーエンドの SuperPoint+LightGlue エクスポート & 推論パイプラインを追加。
LightGlue を簡単に ONNX へエクスポートし、ONNX Runtime で推論を行うための typer CLI dynamo.py
を提供しています。すぐに推論を試したい場合は、こちら からすでにエクスポートされた ONNX モデルをダウンロードできます。
$ python dynamo.py --help
Usage: dynamo.py [OPTIONS] COMMAND [ARGS]...
LightGlue Dynamo CLI
╭─ コマンド ───────────────────────────────────────╮
│ export LightGlue を ONNX にエクスポートします。 │
│ infer LightGlue ONNX モデルの推論を実行します。 │
| trtexec Polygraphy を使用して純粋な TensorRT |
| 推論を実行します。 |
╰──────────────────────────────────────────────────╯
各コマンドのオプションを確認するには、--help
を使用してください。CLI は完全なエクストラクタ-マッチャー パイプラインをエクスポートするため、中間ステップの調整に悩む必要はありません。
🔥 ONNX エクスポート
python dynamo.py export superpoint \ --num-keypoints 1024 \ -b 2 -h 1024 -w 1024 \ -o weights/superpoint_lightglue_pipeline.onnx
⚡ ONNX Runtime 推論 (CUDA)
python dynamo.py infer \ weights/superpoint_lightglue_pipeline.onnx \ assets/sacre_coeur1.jpg assets/sacre_coeur2.jpg \ superpoint \ -h 1024 -w 1024 \ -d cuda
🚀 ONNX Runtime 推論 (TensorRT)
python dynamo.py infer \ weights/superpoint_lightglue_pipeline.trt.onnx \ assets/sacre_coeur1.jpg assets/sacre_coeur2.jpg \ superpoint \ -h 1024 -w 1024 \ -d tensorrt --fp16
🧩 TensorRT 推論
python dynamo.py trtexec \ weights/superpoint_lightglue_pipeline.trt.onnx \ assets/sacre_coeur1.jpg assets/sacre_coeur2.jpg \ superpoint \ -h 1024 -w 1024 \ --fp16
🟣 ONNX Runtime 推論 (OpenVINO)
python dynamo.py infer \ weights/superpoint_lightglue_pipeline.onnx \ assets/sacre_coeur1.jpg assets/sacre_coeur2.jpg \ superpoint \ -h 512 -w 512 \ -d openvino
もし本リポジトリのコードや論文のアイデアを使用した場合は、LightGlue、SuperPoint、および DISK の著者を引用することを検討してください。また、ONNX バージョンが役に立った場合は、このリポジトリにスターを付けていただけると幸いです。
@inproceedings{lindenberger23lightglue,
author = {Philipp Lindenberger and
Paul-Edouard Sarlin and
Marc Pollefeys},
title = {{LightGlue}: Local Feature Matching at Light Speed},
booktitle = {ArXiv PrePrint},
year = {2023}
}
@article{DBLP:journals/corr/abs-1712-07629,
author = {Daniel DeTone and
Tomasz Malisiewicz and
Andrew Rabinovich},
title = {SuperPoint: Self-Supervised Interest Point Detection and Description},
journal = {CoRR},
volume = {abs/1712.07629},
year = {2017},
url = {http://arxiv.org/abs/1712.07629},
eprinttype = {arXiv},
eprint = {1712.07629},
timestamp = {Mon, 13 Aug 2018 16:47:29 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-2006-13566.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}