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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
@smly
July 24, 2025
Research
1.1k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IMC の細かすぎる話 2025
Image Matching Challenge 2025 振り返り会にて発表した資料です。
https://turing.connpass.com/event/360266/
@smly
July 24, 2025
More Decks by @smly
See All by @smly
Parallel Sampling & Rule-based Prompt Generation for Code Golf
smly
0
50
生成AI時代のKaggleの姿
smly
0
73
(Recognition) Large-scale Landmark Retrieval/Recognition under a Noisy and Diverse Dataset
smly
1
510
(Retrieval) Large-scale Landmark Retrieval/Recognition under a Noisy and Diverse Dataset
smly
2
11k
画像検索 (特定物体認識) — 古典手法、マッチング、深層学習、Kaggle
smly
23
7.9k
データ分析コンテストの 勝者解答から学ぶ
smly
46
19k
データ分析コンテストの技術と最近の進展
smly
25
9.2k
Python とデータ分析コンテストの実践
smly
15
9k
実験の再現性と効率化の話(Docker と Serialization 周辺)
smly
5
3.4k
Other Decks in Research
See All in Research
社内データ分析AIエージェントを できるだけ使いやすくする工夫
fufufukakaka
1
1.1k
Harness Engineering and Al Agent
kzinmr
3
1.6k
「なんとなく」の顧客理解から脱却する ──顧客の解像度を武器にするインサイトマネジメント
tajima_kaho
10
7.6k
AGI4OPT:自然言語から数理最適化を導くエ ージェントスキル Translating Human Intent into Mathematical Optimization
mickey_kubo
0
130
オーストリア流 都市の公共交通サービス水準評価@公共交通オープンデータ最前線2026
trafficbrain
0
180
業界横断 副業コンプライアンス調査 三者(副業者・本業先・発注者)におけるトラブル認知ギャップの構造分析
fkske
0
1.3k
量子コンピュータの紹介
oqtopus
0
320
Ghost in the 7‑Zip: The Shadow of Residential Proxies Creeping into Your Life
nttcom
0
950
YOLO26_ Key Architectural Enhancements and Performance Benchmarking for Real-Time Object Detection
satai
3
780
2026年度 生成AI を活用した論文執筆ガイド/ワークショップ / 2026 Academic Year Guide to Writing Papers Using Generative AI - Workshop
ks91
PRO
0
170
正規分布と最適化について
koide3
1
240
東京大学工学部計数工学科、計数工学特別講義の説明資料
kikuzo
0
460
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
190
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Visualization
eitanlees
152
17k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.6k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
380
Music & Morning Musume
bryan
47
7.2k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Prompt Engineering for Job Search
mfonobong
0
330
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 でまた会いましょう!