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.6k
しくじり先生 Image Matching Challenge 2024 編
2024/7/5の関西kaggler会の発表資料です。
goosehaaan
July 05, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
『GO』アプリ データ基盤のログ収集システムコスト削減
mot_techtalk
0
150
dbt Pythonモデルで実現するSnowflake活用術
trsnium
0
250
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
220
.NET Frameworkでも汎用ホストが使いたい!
tomokusaba
0
200
Rubyと自由とAIと
yotii23
6
1.6k
Kotlinの開発でも AIをいい感じに使いたい / Making the Most of AI in Kotlin Development
kohii00
5
950
SwiftUI Viewの責務分離
elmetal
PRO
2
270
PEPCは何を変えようとしていたのか
ken7253
2
160
ソフトウェアエンジニアの成長
masuda220
PRO
12
2.1k
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
8
1.3k
Ruby on cygwin 2025-02
fd0
0
180
AIプログラミング雑キャッチアップ
yuheinakasaka
17
4.1k
Featured
See All Featured
Designing Experiences People Love
moore
140
23k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Embracing the Ebb and Flow
colly
84
4.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Navigating Team Friction
lara
183
15k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Producing Creativity
orderedlist
PRO
344
40k
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コンペ 上位解法まとめ