Skip to content

Latest commit

 

History

History
146 lines (122 loc) · 7.23 KB

README.ja.md

File metadata and controls

146 lines (122 loc) · 7.23 KB
English | 简体中文 | 日本語

ONNX TensorRT GitHub Repo stars GitHub all releases Blog

LightGlue ONNX

LightGlue: Local Feature Matching at Light Speed の ONNX(Open Neural Network Exchange)互換実装です。ONNX モデルフォーマットにより、複数の実行プロバイダーに対応し、さまざまなプラットフォーム間での相互運用性が向上します。また、PyTorch などの Python 固有の依存関係を排除します。TensorRT および OpenVINO をサポートしています。

新機能: エンドツーエンドの並列動的バッチサイズのサポート。詳細はこの ブログ記事 をご覧ください。

レイテンシ比較
⏱️ 推論時間の比較

LightGlue 図

更新履歴
  • 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 エクスポート & 推論パイプラインを追加。

⭐ ONNX エクスポート & 推論

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

クレジット

もし本リポジトリのコードや論文のアイデアを使用した場合は、LightGlueSuperPoint、および 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}
}