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
2.1k
しくじり先生 Image Matching Challenge 2024 編
2024/7/5の関西kaggler会の発表資料です。
goosehaaan
July 05, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
300
エンジニア向け採用ピッチ資料
inusan
0
160
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
370
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
320
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
230
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
810
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
190
Rubyでやりたい駆動開発 / Ruby driven development
chobishiba
1
370
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
680
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
220
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
19
3.5k
Gleamという選択肢
comamoca
6
760
Featured
See All Featured
Producing Creativity
orderedlist
PRO
346
40k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Building an army of robots
kneath
306
45k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Designing for Performance
lara
609
69k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
It's Worth the Effort
3n
185
28k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
YesSQL, Process and Tooling at Scale
rocio
173
14k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
RailsConf 2023
tenderlove
30
1.1k
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コンペ 上位解法まとめ