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
240
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
470
(Retrieval) Large-scale Landmark Retrieval/Recognition under a Noisy and Diverse Dataset
smly
2
11k
画像検索 (特定物体認識) — 古典手法、マッチング、深層学習、Kaggle
smly
24
7.6k
データ分析コンテストの 勝者解答から学ぶ
smly
46
18k
データ分析コンテストの技術と最近の進展
smly
25
8.9k
Python とデータ分析コンテストの実践
smly
15
8.8k
実験の再現性と効率化の話(Docker と Serialization 周辺)
smly
5
3.2k
Workflow, Serialization & Docker for Kaggle
smly
10
2.7k
Chapter9 Convolutional Networks
smly
2
350
Other Decks in Research
See All in Research
電通総研の生成AI・エージェントの取り組みエンジニアリング業務向けAI活用事例紹介
isidaitc
1
740
学生向けアンケート<データサイエンティストについて>
datascientistsociety
PRO
0
4.4k
AI エージェントを活用した研究再現性の自動定量評価 / scisci2025
upura
1
130
Galileo: Learning Global & Local Features of Many Remote Sensing Modalities
satai
3
110
Mechanistic Interpretability:解釈可能性研究の新たな潮流
koshiro_aoki
1
360
診断前の病歴テキストを対象としたLLMによるエンティティリンキング精度検証
hagino3000
1
110
「エージェントって何?」から「実際の開発現場で役立つ考え方やベストプラクティス」まで
mickey_kubo
0
130
SSII2025 [SS2] 横浜DeNAベイスターズの躍進を支えたAIプロダクト
ssii
PRO
7
3.7k
2025/7/5 応用音響研究会招待講演@北海道大学
takuma_okamoto
1
120
Combinatorial Search with Generators
kei18
0
440
Vision And Languageモデルにおける異なるドメインでの継続事前学習が性能に与える影響の検証 / YANS2024
sansan_randd
1
120
データサイエンティストの採用に関するアンケート
datascientistsociety
PRO
0
1.1k
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
RailsConf 2023
tenderlove
30
1.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Being A Developer After 40
akosma
90
590k
Writing Fast Ruby
sferik
628
62k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
GraphQLとの向き合い方2022年版
quramy
49
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
282
13k
Statistics for Hackers
jakevdp
799
220k
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 でまた会いましょう!