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
しくじり先生 Image Matching Challenge 2024 編
Search
goosehaaan
July 05, 2024
Programming
1
1.4k
しくじり先生 Image Matching Challenge 2024 編
2024/7/5の関西kaggler会の発表資料です。
goosehaaan
July 05, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
0
1.1k
WebAssembly Unleashed: Powering Server-Side Applications
chrisft25
0
700
CSC509 Lecture 12
javiergs
PRO
0
160
デザインパターンで理解するLLMエージェントの作り方 / How to develop an LLM agent using agentic design patterns
rkaga
9
1.6k
Compose 1.7のTextFieldはPOBox Plusで日本語変換できない
tomoya0x00
0
210
as(型アサーション)を書く前にできること
marokanatani
10
2.8k
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
280
C++でシェーダを書く
fadis
6
4.2k
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
Remix on Hono on Cloudflare Workers
yusukebe
1
320
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
110
「今のプロジェクトいろいろ大変なんですよ、app/services とかもあって……」/After Kaigi on Rails 2024 LT Night
junk0612
5
2.2k
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
380
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Scaling GitHub
holman
458
140k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
850
Navigating Team Friction
lara
183
14k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
Making Projects Easy
brettharned
115
5.9k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Transcript
Image Matching Challenge 2024 編
自己紹介 ぐちやま @goosehaaan - 社会人4年目のメーカーDS - 物理系出身 - 東京在住(一昨年まで2年間京都) - コンペは雑食・ソロ参加
- 趣味 ランニング(毎日7km) 旅行
Agenda - コンペ概要 - 上位解法 - しくじり紹介 - 教訓・まとめ
Image Matching Challenge 2024 - Hexathlon - CVPR Workshopの併設コンペ -
2022年から始まり今年で3回目(2024/3/26 - 2024/6/4) - シーン毎の画像セットから、カメラ位置・角度を推定するタスク - train: 36 ~ 1148枚、test: ~100枚 / シーン 教会シーンの場合 1) より引用
Image Matching Challenge 2024 - Hexathlon - 評価指標は全画像ペアの回転・並進行列の差の誤差を用いたmAA(mean Average Accuracy)
- シーンに応じて与えられた6段階の閾値ごとに正解率を計算、平均化 - シーンごとに正解率を計算、平均化 教会シーンの場合 1) より引用
Image Matching Challenge 2024 - Hexathlon 今年はHexathlon(六種競技)の名の通り、6種類の課題に該当するシーンが対象だった。 simmetories-and-repeats historical-preventation air-to-ground
day-night nature transparent
以下ベースライン(ホスト提供)を元にしたパイプラインが基本となる。 パイプライン 1. 画像マッチング(DINOv2) 3. 特徴点マッチング(LightGlue) 4. カメラポーズ推定(COLMAP) 2. 特徴点抽出(ALIKED)
keypoints (n_kpts , 2) descriptions (n_kpts , n_dim) keypoints (n_kpts , 2) matches (n_mchs , 2) 1) より引用 特徴点の座標とペア情報を COLMAP DBに保存 RANSACを用いた基礎行列計算 シーン再構成
Agenda - コンペ概要 - 上位解法 - しくじり紹介 - 教訓・まとめ
多くのチームが 1. 通常シーンと、2. 透明シーン で別々のパイプラインを組んでいた。 上位解法 1. 通常シーン 2. 透明シーン
1. 通常シーン - 大きく3種類の工夫ポイントがあった 1. 画像マッチング 2. 特徴点マッチング 3. カメラポーズ推定
上位解法
1. 通常シーン 1. 画像マッチング 上位解法 - 画像特徴による類似度マッチング - 特徴抽出の工夫 -
ベースラインのDINOv2を用いるチームが多かった - 画像:頂点、類似度:辺とする最小全域木を計算 - 網羅的マッチング - 全マッチングを試す - 今回は1シーンあたり画像数が最大100枚 - 高速化で対応可能だった 2位解法より引用
1. 通常シーン 2. 特徴点マッチング 上位解法 - モデル - ベースラインのALIKED +
LightGlueを用いるチームが多かった - division - 画像を分割して、より細かい特徴点を抽出 - rotation - 画像を90度ずつ回転させ、最もマッチする特徴点数が多い方向でマッチング - crop - マッチする特徴点の密集領域をcrop 1位解法より引用 6位解法より引用
1. 通常シーン 3. カメラポーズ推定 上位解法 - 独自のSfMパイプラインでCOLMAPのモデルを精緻化 - できるだけ多くの画像を再構成結果に登録 3位解法より引用
6位解法より引用
上位解法 2. 透明シーン - カメラが物体を取り囲むように撮影方法が特徴的だった - 通常パイプラインだと一見変化していない輪郭や背景でマッチしてしまう - 大きく2つのアプローチがあった 1)
より引用
上位解法 2. 透明シーン 2位解法より引用 1. DIP (Direct Image Pose estimation)
- 画像の類似度を元に画像の順序を推定後,カメラパラメータを直接推定するアプローチ - SSIM、画像・特徴点の特徴などが類似度に用いられた
上位解法 2. 透明シーン 2. マッチングの工夫 - 前処理の工夫により微細特徴を元に通常通りマッチングをおこなうアプローチ - 物体表面のcropなど 4位解法より引用
6位解法より引用
自分の結果 - 通常シーン - 画像マッチング:dinov2-base, netvlad - 特徴点マッチング: - ALIKED
+ LightGlue - rotation -> 4 divisions -> resize -> extract keypoint - 透明シーン - 画像マッチング:全マッチング - 特徴点マッチング: - ALIKED + LightGlue - padding -> object detection -> resize -> 9 divisions -> extract keypoint CVはいい感じ...!!
自分の結果 - 通常シーン - 画像マッチング:dinov2-base, netvlad - 特徴点マッチング: - ALIKED
+ LightGlue - rotation -> 4 divisions -> resize -> extract keypoint - 透明シーン - 画像マッチング:全マッチング - 特徴点マッチング: - ALIKED + LightGlue - padding -> object detection -> resize -> 9 divisions -> extract keypoint
Agenda - コンペ概要 - 上位解法 - しくじり紹介 - 教訓・まとめ
僕の苦労・失敗談4つを紹介 年一コンペの割に公開codeも少なく 参入障壁が高めのコンペに感じたので 来年以降初参加される方々の参考になれば幸いです
推論結果が 毎回変わる - COLMAPの出力結果が毎回変わる - 自環境では以下でパイプライン全 体の再現性を確保 - pycolmapのパラメータ変更 -
torch系ライブラリのversion変更 - torch.backends設定変更 - 公開codeでPB300~800位程度のス コアのばらつき - 非対処の上位解法もあり 1
- 明らかにマッチングが改善している のにスコアが向上しない - 画像に対しておこなった変換を、 colmap DBに保存する特徴点に反映し ていなかった - 画像変換
-> 特徴点逆変換のクラスを 用意して対処 2 特徴点の 逆変換を 忘れる
透明シーンの 検証が 足りない - 指紋や傷で特徴点を得るというアイ デアはあったが、やりきれず - 汎用detectorで輪郭内部を検出 - classは無視してscore最大のbboxを
cropする戦略をとった - 一方で上位解法では”bottle” classの あるデータセットで事前学習された segmenterを使用 - モデル調査やsegmentationをもっと 試すべきだった 3
テストシーンの 仕様を 間違える 4 - 史上最大のやらかし - testシーン名がtrainシーン名を含むも のと思い込む(実際はunknown) -
シーン毎に名前で条件分岐させたた め、全パイプラインがelse処理に - discussionにはちゃんと書いてあった
colmapのログ出力が長すぎる 公開notebookのALIKEDのresizeが機能していない LightGlueとHierarchical-Localizationがkaggle notebookでインストールできない 特徴点をアンサンブルしすぎてごく近傍なのに別の特徴点がマッチングしてしまう 透明シーンの順番推定を検証前に諦める 可視化が不十分で教会シーンの再構成の偏りに気付けない 出張期間用に自宅マシンの外部接続設定をするも使わない kaggle notebook上でプライベートレポジトリをcloneできない
何故か実験管理ツールが動かない 全く効かないcrop+アンサンブル+nmsのためにめちゃくちゃ時間を溶かす 提出ID以外の画像がtestセットに含まれていることに気付けない カメラ位置の閾値から透明シーンにおけるオブジェクトとの距離を推測できなかった : ∞
Agenda - コンペ概要 - 上位解法 - しくじり紹介 - 教訓・まとめ
教訓 - discussionはきちんと読む - ローカルでの実験が上手くいっているとdiscussionやcodeを読む優先度を下げがち - 定期的に時間を作ってupdateを追う - 本当にだいじ -
信じたアイデアにはとことん向き合う - 心中しても良いと思えるアイデアを見つける - ソロだと特に向かうべき道が定まらないことも多いイメージ - 微妙なアイデアも一旦試してみる - あきらめるのは簡単 - あまねく試せる手の速さを!
まとめ - Image Matching Challengeはアイデア次第で結果を出せる(はずの)面白いコンペ - しくじりを知ることで圧倒的成長 - つよつよな方々のしくじりも聞いてみたい -
Masterなりたい!!!! だ な り た い っ
参考 1) kaggle IMC2024コンペ 上位解法まとめ