Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IMC の細かすぎる話 2025
Search
@smly
July 24, 2025
Research
2
830
IMC の細かすぎる話 2025
Image Matching Challenge 2025 振り返り会にて発表した資料です。
https://turing.connpass.com/event/360266/
@smly
July 24, 2025
Tweet
Share
More Decks by @smly
See All by @smly
(Recognition) Large-scale Landmark Retrieval/Recognition under a Noisy and Diverse Dataset
smly
1
490
(Retrieval) Large-scale Landmark Retrieval/Recognition under a Noisy and Diverse Dataset
smly
2
11k
画像検索 (特定物体認識) — 古典手法、マッチング、深層学習、Kaggle
smly
24
7.9k
データ分析コンテストの 勝者解答から学ぶ
smly
46
19k
データ分析コンテストの技術と最近の進展
smly
25
9.1k
Python とデータ分析コンテストの実践
smly
15
8.9k
実験の再現性と効率化の話(Docker と Serialization 周辺)
smly
5
3.3k
Workflow, Serialization & Docker for Kaggle
smly
10
2.8k
Chapter9 Convolutional Networks
smly
2
380
Other Decks in Research
See All in Research
財務諸表監査のための逐次検定
masakat0
0
230
20251023_くまもと21の会例会_「車1割削減、渋滞半減、公共交通2倍」をめざして.pdf
trafficbrain
0
150
Aurora Serverless からAurora Serverless v2への課題と知見を論文から読み解く/Understanding the challenges and insights of moving from Aurora Serverless to Aurora Serverless v2 from a paper
bootjp
6
1.3k
[IBIS 2025] 深層基盤モデルのための強化学習驚きから理論にもとづく納得へ
akifumi_wachi
19
9.3k
HoliTracer:Holistic Vectorization of Geographic Objects from Large-Size Remote Sensing Imagery
satai
3
470
Satellites Reveal Mobility: A Commuting Origin-destination Flow Generator for Global Cities
satai
3
350
それ、チームの改善になってますか?ー「チームとは?」から始めた組織の実験ー
hirakawa51
0
200
AlphaEarth Foundations: An embedding field model for accurate and efficient global mapping from sparse label data
satai
3
690
AIグラフィックデザインの進化:断片から統合(One Piece)へ / From Fragment to One Piece: A Survey on AI-Driven Graphic Design
shunk031
0
590
Pythonでジオを使い倒そう! 〜それとFOSS4G Hiroshima 2026のご紹介を少し〜
wata909
0
1.2k
音声感情認識技術の進展と展望
nagase
0
430
Agentic AI フレームワーク戦略白書 (2025年度版)
mickey_kubo
1
110
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
37
Typedesign – Prime Four
hannesfritz
42
2.9k
[SF Ruby Conf 2025] Rails X
palkan
0
700
How to make the Groovebox
asonas
2
1.9k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.8k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Site-Speed That Sticks
csswizardry
13
1k
Transcript
IMC の細かすぎる話 2025 〜 COLMAP はアツいという話をそえて 〜
Agenda 最近の発展を紹介しつつ IMC を振り返り COLMAP の細かい話 Factory パターンと動的ローディングのススメ
Image Matching Challenge 2025 の概要 画像集合からカメラの姿勢 (rotation matrix) と座標 (translation
vector) を答える定番コンペ。 2025年度は画像集合に関係ない画像 (outlier) が含まれる。クラスタリングして推定する必要がある。
文字が見えない角度でも 文字盤とマッチしている
オブジェクトの裏側とマッチしている。 Keypoint detection してマッチングする アプローチだとまず無理
最近の進化:3D基盤モデル MASt3R pixel-aligned な点群を学習させることで 3D 空間の視点が必要なマッチングが可能に。 局所特徴を使った定番アプローチと比較して極端に視点が異なる場面で極めて強力。 一方で(画像が十分にある場面など)簡単な事例で精緻な推定が必要となるケースでは、それほど強くない。
最近の進化:VGGT CVPR’25 の best paper。”2枚以上” の画像を与えて、カメラ姿勢推定も深度推定もあわせてすべて同時に解く。必要とな る VRAM が大きいため IMC
環境ではうまく利用できたチームはいなかった。 MASt3R と同様、精緻な推定が必要となる場面では定番アプローチほど正確ではない。 (Camera Head で IMC’25 train の評価をしたが、可もなく不可もなくという結果。)
全画像ペアのマッチングと適応的なクラスタリング (7th place) 全画像ペアのマッチング後に inlier count で類似グラフを作成。 80 percentile point
の inlier count をしきい値としてグラフをカットしてクラスタ作成 独自に「クラスタのIoU」によりクラスタリング手法をローカルで評価して判断 VGGT (refiner のみ使用)、MASt3R を試すも上手く行かず停滞。猛省
1st place solution: MASt3R-Hybrid 全画像ペアの MASt3R によるマッチングは計算コストが高くて無理。画像検索によってマッチングするペアのリスト (shortlist) を作成する。MASt3R に加えて定番の
keypoint detector (ALIKED, SuperPoint) で keypoints を検出して、 MASt3R の semi-dense keypoints とあわせて MASt3R matcher でマッチングさせてる(精緻化を期待)。 Detection-based keypoints は必要? この hybrid なアプローチでは semi-dense も別アルゴリズムによ る detector から得られた keypoints も、MASt3R Matcher でマッ チングする。なので MASt3R の local features の良し悪しに依存 する。Matcher で合流せず concat して COLMAP で解くとアプ ローチごとの得意不得意を補って良い結果が得られた。 追試したが MASt3R-ASMK のみで十分。ただし計算コス トがほぼ無料なのでわずかに安定が増すならば積み得。
Agenda 最近の発展を紹介しつつ IMC を振り返り COLMAP の細かい話 Factory パターンと動的ローディングのススメ
pycolmap 3.10 から version が COLMAP と共通に これまで pycolmap リポジトリは
colmap とは別のリポジトリでメンテナンスされていた。 2024年7月の pycolmap 3.10.0 より本家の colmap リポジトリに統合された。 pycolmap パッケージの versioning が colmap と一緒に。めちゃ良いニュース!
pycolmap 3.10 から API が色々と変わった 3.10 から大きなリファクタリングが実施されており、API の変更点も多い。 Jianyuan Wang
が書いた VGGSfM の refiner によって point tracks を refine するスクリプト https://www.kaggle.com/code/jianyuanv/vggsfm-to-refine-pycolmap-tracks は CVPR’24 前の pycolmap 0.6.0 までは動作するが、その後の 3.10 以降は API 変更の影響を受けて動作しない。
Filtering logic が ObservationManager に移動 pycolmap 0.6.0 では filtering の各種ロジックを
Reconstruction オブジェクトのメソッドとして実装 されていたが、pycolmap 3.10 では削除されている。 代わりに ObservationManager オブジェクトが追加され、Reconstruction オブジェクトを渡して呼 び出すように仕様変更されている。ほかにも Image クラスなど Primitive なクラスから SfM のみに 使う実装を分離している。 Add ObservationManager #2575 https://github.com/colmap/colmap/pull/2575
RANSAC の停止判定の修正 (3.12.0; 2025/6/30) 停止基準に使用される「all-inlier set をサンプリングする確率 P」を近似確率から厳密な確率へ置き換えることで性 能向上した。 OpenCV,
scikit-image, COLMAP をはじめ多くの OSS 実装がこの楽観的な近似を採用していた。 1981年に示された式では、インライア比率 p の k 反復である p^k で P を近似。非復元抽出を考慮していない楽観的 な近似となっており、P を高く見積もりすぎてしまう。 これは早期停止による under sampling が起こりやすくなり、結果として誤差を生む。特にノイズが多い場合や複雑 なモデルの場合に影響が大きい。(p が小さいとき、k が大きいとき) “Fixing the RANSAC Stopping Criterion” https://arxiv.org/abs/2503.07829 COLMAP 3.12.0 にて修正。
COLMAP はアツい
Agenda 最近の発展を紹介しつつ IMC を振り返り COLMAP の細かい話 Factory パターンと動的ローディングのススメ
IMC はソフトウェア開発の工夫が活きる 様々な実験をしていくとコードベースはどんどん膨大に なっていく。ソフトウェア開発の工夫が活きる。 • Pydantic による config の validation
• Factory パターンによるモジュール分離 • テスト!テスト!テスト!(単体、統合、品質) コード例は IMC’25 1st place solution を拝借 →
経験的にモジュール間の結合を疎にしてポータビリティを上げ ると実験や開発がしやすくなる Factory モジュールをロードすると、ほかの具象クラスのモジュール も同時にロードする。複数の環境で動作して欲しいときに環境依存 の問題が起きやすくなる。 → 更に結合を疎にしてポータビリティを上げたい! 例:asmk パッケージ(環境にあわせて事前ビルド)が必要なときだ
け asmk パッケージを import して欲しい 例:なぜか pycolmap のパッケージで RuntimeError になるので必要 になるまで import しないで欲しい(※ pyceres とのバージョン不整 合でよく起こる) 例:ARM アーキテクチャでの動作をサポートしないが、開発環境で テストを動かすなど部分的に実行できるようにしたい コード例は IMC’25 1st place solution を拝借 →
Factory パターン + 動的ロードで結合を切る importlib.import_module() で動的にモジュールをロードすることで疎結合にする。 リファクタリングが難しくなる・型のサポートが部分的に消えるデメリットもあるが、 研究的なコードでは同時に依存関係を満たすことが難しいポータビリティの悪いパッケージがある。 HF transformers
も auto 系クラスは dynamic_module_utils.py から importlib で動的ロード。
デプロイ:vscode-fast-kaggle で Ctrl+Shift+U VSCode 上でショートカットキーひとつでコードベースを Kaggle Datasets にアップ。 ビルドなどワンクッション必要なときは、 git
commit を hook して Kaggle API 経由でデプロイ。あ るいは Github Actions からビルドして Kaggle API 経由でデプロイ。
まとめ • チームマージはよく考えよう • COLMAP はアツい • 動的ロードはいいぞ Image Matching
Challenge 2026 でまた会いましょう!