image-matching-modelsの紹介

1.9K Views

June 12, 25

スライド概要

https://github.com/alexstoken/image-matching-models

profile-image

大きめのトイプードルが好きです

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

image-matching-models の紹介 2025.06.12 木村 元紀 GO株式会社 AI

2.

image-matching-models (IMM) とは? ▪ github.com/alexstoken/image-matching-models ▪ ▪ 多様な画像マッチングモデルを統一的なAPIで利用可能 34種類のモデルをサポート(2025年6月時点) ▪ SIFT, SuperPoint, ALIKED ▪ SuperGlue, LightGlue ▪ LoFTR, Roma ▪ などなど ▪ Sparse, semi-dense, denseまで広くサポート ▪ ▪ 推論のみ(学習はサポート外) BSD 3-Clause ライセンス https://x.com/AlexStoken/status/1839323777186066441 AI 2

3.

使い方 ▪ ▪ ▪ ▪ ▪ READMEにしたがってpip install モデルによっては追加の依存パッケージ(.[loftrs] など)を指定する必要がある pip install .[all] で全部のモデルが使える状態になる 特に .[all] を指定した場合、10分程度かかることがあるので気長に待つ torch >= 2.2 を推奨 AI 3

4.

使い方 ▪ ▪ ▪ get_matcher : モデル名を指定し、マッチングモデルを生成 matcher.load_image : 画像ファイル読み込み + リサイズ + 前処理(グレースケール 化や正規化など、モデル固有の前処理)。結果はtorch.Tensor。自分で書いてもOK plot_matches : マッチング結果を可視化 AI 4

5.

使い方 ▪ get_matcher で指定するモデル名 を変えるだけで、モデルを簡単に 変更できる ▪ 自分の用途に合っているモデルを 見つけるのに便利 AI https://x.com/AlexStoken/status/1839323777186066441 5

6.

使い方 ▪ ▪ マッチング結果(result)の内容 ▪ all_kpts0/1 : img0/1から検出された全ての特徴点のxy座標 ▪ all_desc0/1 : img0/1から検出された全ての特徴点の特徴量 ▪ matched_kpts0/1 : マッチングしたimg0/1上の特徴点のxy座標 ▪ H : マッチング結果にRANSACを適用して推定したホモグラフィ行列 ▪ num_inliers : RANSACで最終的に推定に使われた特徴点の数 ▪ inlier_kpts0/1 : RANSACで最終的に推定に使われたimg0/1上の特徴点のxy座標 plot_matches では、inlier_kpts(inliers)が緑、inlier_kptsに含まれないmatched_kpts (つまり outliers)が青 で描画される AI 6

7.

利用可能なモデル ▪ README.md#model-details を参照 ▪ matching.available_models で指定可能なモデル名の一覧を取得できる ▪ どのモデルにマッピングされているかは matching/__init__.py を参照 AI 7

8.

Tips ▪ 複数モデルのアンサンブル ▪ get_matcherにモデル名のリストを渡すと、全てのモデルの特徴点がconcatされ て返ってくる ▪ 下記は、SuperPoint-LightGlueとALIKED-LightGlueを組み合わせた例 ▪ p.6(SuperPont-LightGlueのみの場合)と比べて特徴点の個数が増えている AI 8

9.

Tips ▪ RANSACのパラメータ調整 ▪ get_matcherでRANSACのパラメータを設定できる ▪ ちなみにRANSACはOpenCVのfindHomographyが使われている https://github.com/alexstoken/image-matching-models/blob/28168d251ca462 53a52d306161e7a13bb0456cfc/matching/im_models/base_matcher.py#L80-L9 5 AI 9

10.

Tips ▪ 1枚の画像に対して特徴点の検出・記述を行うこともできる AI 10

11.

IMMはどうやって作られているのか? ▪ ▪ ▪ ▪ ▪ third_party ディレクトリ下に、各モデルの 公式実装がsubmoduleとして登録されている (右図) IMMは、これらを統一的なAPIで推論するた めのwrapperという位置付け モデルごとのwrappingは im_models 以下に 実装されている なお、学習済みモデルも公式実装のものをそ のまま利用している IMMはBSD 3-Clauseライセンスだが、モデ ルによっては制限の厳しいライセンスを採用 しているもの(SuperPointなど)があるた め、公式実装のライセンスを確認すること! AI 11

12.

その他の注意点 1. 大体のモデルはCPU・GPUどちらでも動くが、一部のモデルはどちらかでしか動かない (README.md#model-details) 2. モデル固有のパラメータを変更したい場合、IMMのソースをいじる必要がある https://github.com/alexstoken/image-matching-models/blob/28168d251ca46253a52d3 06161e7a13bb0456cfc/matching/im_models/lightglue.py#L62-L66 AI 12

13.

まとめ ▪ ▪ ▪ ▪ ▪ ▪ ▪ image-matching-models (IMM) は、多様な画像マッチングモデルを統一的なAPIで推 論できるツール Sparse, semi-dense, dense まで多様なモデルをカバー 各モデルをパッと試して用途に合っていそうなモデルを選定するのに便利。複数モデル のアンサンブルも簡単 IMMは各モデルの公式実装をsubmoduleとして利用している。IMMはそれらの実装と 学習済みモデルを統一的なAPIとして扱うためのwrapper IMMはBSD 3-Clauseライセンスだが、モデルによっては商用利用不可など制限の厳し いライセンスを採用しているものもあるため、モデルの公式実装のライセンスを必ず確 認すること! 興味のある方は公式のColab notebookを試してみてください https://colab.research.google.com/github/alexstoken/image-matching-models/b lob/main/demo.ipynb AI 13