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
Kaggle 過去コンペまとめ Image Matching Challenge 2023
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kami
April 17, 2024
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kaggle 過去コンペまとめ Image Matching Challenge 2023
LAIMEの勉強会で利用した資料です。
kami
April 17, 2024
More Decks by kami
See All by kami
JSAI2025 RecSysChallenge2024 優勝報告
unonao
2
800
MLコンペ実験テンプレートを作ろう!
unonao
4
2.3k
RecSys2024 参加報告
unonao
1
450
睡眠コンペ 1st place solution
unonao
3
3.8k
N=1 の推薦系コンペの戦い方
unonao
5
2.7k
atmaCup #16: 1st place solution + 取り組み方振り返り
unonao
1
1.1k
RecSys23参加報告:推薦システムに関する最新研究
unonao
1
1.1k
#15 atmaCup 振り返り& 1st place solution
unonao
1
1.6k
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
New Earth Scene 8
popppiees
3
2.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Side Projects
sachag
455
43k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
210
Designing Experiences People Love
moore
143
24k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Technical Leadership for Architectural Decision Making
baasie
3
410
The SEO Collaboration Effect
kristinabergwall1
1
480
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
Transcript
Kaggle 過去コンペまとめ Image Matching Challenge 2023 LAIME AI勉強会 村上 直輝
(@634kami) 2024年4⽉17⽇
自己紹介 村上 直輝 • メガベンチャーでデータサイエンティストやってます • 画像処理初心者 • Kaggle Master
◦ 🥇 2(3) ◦ 🥈 0(4) ◦ 🥉 0(3) 2 @634kami
1. コンペ概要・前提知識 2. 基本的な解法 3. 個別の技術紹介 4. voteの多い Notebook&Discussion 5.
上位解法 目次 3 ※プライベートシェアリングにならないように2024年のコンペに ついては言及しません
コンペ概要・前提知識 01 タスク設定・データ概要・評価方法 4
Image Matching Challenge 2023 • CVPR 2023 Workshop の併設コンペ •
タスク概要 ◦ ランドマークを様々な位置や角度から撮影した複 数の画像が与えられ、それぞれの撮影位置と向き を推定する ◦ Structure from Motion と呼ばれるタスク 5
データ形式 6 • [train/test]/*/*/images ◦ 同じ場所の近くで撮影された画像のバッチ。学習 用データセットの中には、images_fullというフォ ルダにさらに画像が含まれているものもある。 • train/*/*/sfm
◦ このバッチ画像の3D再構成。この画像は、本コン ペティションにバンドルされているライブラリ, colmapで開くことができる。 • train/train_labels.csv ◦ 正解ラベルを含むデータセットの画像のリスト
提出形式 Output: 撮影位置と向きを表現する値 • rotation_matrix (3x3 の行列を「;」で繋いで平坦化) • translation_vector (3次元のベクトルを「;」で繋いで平坦化)
7 どういうこと ?????? → ピンホールカメラモデルなどの前提知識が必要
ピンホールカメラモデル(Pinhole Camera model) ① • 3D の空間にある物体が2D 画像に投影される状態を記述 するためのモデリングの一つ •
3つの座標系が存在 ◦ ワールド座標系: w ◦ カメラ座標系: c ◦ 画像座標系 8 画像引用:https://kornia.readthedocs.io/en/stable/geometry.camera.pinhole.html
ピンホールカメラモデル(Pinhole Camera model) ② • ワールド座標系→カメラ座標系 回転と平行移動で変換 • 今回のコンペティションで出力し たいのは
R, t 9 画像引用:https://kornia.readthedocs.io/en/stable/geometry.camera.pinhole.html ワールド座標系における 物体の座標 カメラ座標系における 物体の座標
評価 mean Average Accuracy (mAA) • scene ごとに正解率を計算して平均を取る ◦ 画像をペアにしたときの全組み合わせについて,
以下の差の誤差を計算 ▪ 2つのGTの rotation_matrix, translation_vector の差 ▪ 2つの予測値の rotation_matrix, translation_vectorの差 ◦ 閾値ごとに正解率を計算して平均を取る ▪ 誤差が閾値以内あれば正解とする 10 ペアを使って計算をしているのは、おそらく一つの画像の rotation_matrix, translation_vector の値は基準と なる座標が変わると値が変わってしまうため 2つ使えば相対的な位置関係で値が一意に定まる
基本的な解法と技術 02 キーポイントマッチング・3D再構成 11
全体の流れ 12 scene(撮影の対象物)ごとに画像セットが与えられているのでsceneごとに以下を実行する 1. 類似する画像のペアを作る 2. 画像のキーポイントを検出 3. ペア画像のキーポイントマッチングを計算 4.
ペア画像の対応を表す基礎行列の計算 5. ペア画像の基礎行列を使って Sparse Reconstruction 参考: https://www.kaggle.com/code/eduardtrulls/imc-2023-submission-example
1. 類似する画像のペアを作る 13 • 目的 ◦ 類似画像同士のペアを作成したい ▪ 全通りペアを作成してしまうと後の計算 で時間が足りなくなってしまう
• やること a. 画像モデルで embedding 計算 ▪ input: 画像 ▪ output: embedding b. embedding 同士の cosine 類似度を計 算し、画像ごとに上位N件をペアにする 似てる 似てない ︙ 似てる
2. 画像のキーポイントを検出 14 • 目的 ◦ 画像の特徴的な点(キーポイント)を検出したい ▪ ペア画像のキーポイントマッチングに使う •
やること ◦ キーポイント検出のアルゴリズム/モデルを使う ▪ 入力: 画像 ▪ 出力: キーポイント • 例 ◦ SIFT ◦ DISK ◦ SuperPoint 引用元:https://github.com/cvlab-epfl/disk?tab=readme-ov-file [Michał J. Tyszkiewicz, Pascal Fua, Eduard Trulls, 2020]
3. ペア画像のキーポイントマッチング 15 • 目的 ◦ ペア画像間のキーポイントの対応を見つける • やること ◦
キーポイントマッチングのモデルを使う ▪ 入力: キーポイント検出済みの画像ペア ▪ 出力: キーポイント同士の対応 • 例 ◦ SuperGlue ◦ LightGlue (2023) 引用元:[Paul-Edouard Sarlin, Daniel DeTone, Tomasz Malisiewicz, Andrew Rabinovich,2020]
4. ペア画像の対応を表す基礎行列の計算 16 • 目的 ◦ ペア画像の対応を表す基礎行列を計算する ▪ Sparse Reconstruction
で用いる • やること ◦ RANSACによる基礎行列の計算 ▪ Random sample consensus (RANSAC)によって iterative に外れ値を無視した better な基礎行列を求める ◦ pycolmapを使えば簡単に実行できる
参考:エピポーラ幾何と基礎行列 17 • エピポーラ幾何 (epipolar geometry) ◦ 2台のカメラで撮影した画像間における幾何 • 基礎行列
◦ カメラ固有の(内部)パラメータを用いて正規 化しない場合 X L と X R の位置はある行列F を用いて表現でき、これを基礎行列と呼ぶ ◦ 正規化する場合は基本行列と呼ぶ 引用元: https://kornia.readthedocs.io/en/stable/geometry.epipolar.html
5. ペア画像の基礎行列を使って Sparse Reconstruction 18 • 目的 ◦ 3D再構成とともにカメラの位置と向きを計算 •
やること ◦ pycolmap.incremental_mapping ▪ 基礎行列を計算したペア画像を一組ずつ incremental に用いることで3D再構成す るアルゴリズムを提供 引用元:https://github.com/cvlab-epfl/disk?tab=readme-ov-file [Michał J. Tyszkiewicz, Pascal Fua, Eduard Trulls, 2020]
個別の技術紹介 03 詳細は説明しきれないので概要を紹介 19
SIFT (キーポイント検出) • 回転・スケール変化・照明変化等に頑健 なキーポイント検出 • アルゴリズム ◦ 少しずつ平滑化を強めた画像を用意し、その差 分画像(DoG画像)を計算
◦ DoG画像から極値となる画素を特徴点候補と して抽出 ▪ スケールに頑健になるように前後のスケールも 合わせて周囲の26近傍を比較 ◦ 特徴点の勾配強度と勾配方向を求め、4x4の ブロックからそれぞれ 8 方向の勾配方向ヒスト グラムを生成し、128次元の特徴量を得る 20 引用元:[DG Lowe, 2004]
SuperPoint (キーポイント検出) • 自己教師あり学習によるキーポイント検出の手法 • 2head のモデル構造と多段の学習 • モデル中の65次元は 8x8
+ 1(no point) を表し、 8x8のセル上にキーポイントが存在するのかを表す 21 引用元:[Daniel DeTone, Tomasz Malisiewicz, Andrew Rabinovich, 2017]
DISK (キーポイント検出) • end2end で学習可能なキーポ イント検出のための手法 • 強化学習の手法を適用し、マッチ したら報酬を与えるような policy
で学習させる • U-netベースのモデル 22 引用元:[Michał J. Tyszkiewicz, Pascal Fua, Eduard Trulls, 2020]
SuperGlue (キーポイントマッチング) • 計算済みのキーポイントを用いてマッチングするモデル ◦ マッチングは微分可能な最適輸送問題を解くことによって推 定 ◦ そのコストはグラフニューラルネットワークによって予測 23
引用元:[Paul-Edouard Sarlin, Daniel DeTone, Tomasz Malisiewicz, Andrew Rabinovich, 2020]
LightGlue (キーポイントマッチング) • 計算済みのキーポイントを用いてマッチングするモデル ◦ モデル構造を見直し SuperGlue よりもメモリと計算が 効率的に 24
引用元:[Philipp Lindenberger, Paul-Edouard Sarlin, Marc Pollefeys, 2023]
LoFTR: (キーポイント不要なマッチング) • Transformerを用いた画像マッチング手法 ◦ 「画像のキーポイント計算」不要(Detector-Free)で、マッチングをend2endでこなす ◦ 粗いレベルでピクセル単位の密なマッチングをし、細かいレベルで良好なマッチングを絞り込む 25 Figure
2: Overview of the proposed method. 引用元:[Jiaming Sun, Zehong Shen, Yuang Wang, Hujun Bao, Xiaowei Zhou. 2021]
voteの多い Notebook&Discussion 04 ソリューション以外で役に立つもの中心に紹介 26
Notebook(ソリューション以外) • [EDA] 🏛IMC ~ 🔻3D plots | 📊Interactive vis
◦ 3d 再構成したときの結果を可視化 • imc-2023-submission-example ◦ ホストによるサンプル提出。これに習うだけで一通り実行できる上、意外とコード量 は少ない • imc2023-evaluation ◦ ホストによる評価コード • Image Matching Data Discovery and SIFT features ◦ SIFTによるキーポイントマッチングと可視化 27
Discussion(ソリューション以外) • Learning Materials for Completely New to Structure from
Motion ◦ SfM に関わる youtube 動画のリスト • Medals sellers are always there ◦ メダル圏内のソリューションを売っているのでは?という不正に関する話。 • Recent promising CVPR2023 papers on image matching. ◦ CVPR2023の関連研究のリスト。いくつかは上位ソリューションで使われている • Last year's image matching competition winning solutions ◦ IMC2022のソリューションリスト • Visually explore the dataset! ◦ データセット作成用のオープンソースツール FiftyOne を可視化として使う紹介 28
上位解法 05 概要・差別化ポイント 29
1st place solution (public 1st / private 1st) ① 30
• ペア作成 ◦ NetVLAD • マッチング ◦ 90°回転により向きをあわせる ◦ マッチ部分をクロップしてスケー ルを合わせる ◦ 2つの手法を組み合わせ ▪ sparse method (SPSG) ▪ dense method (LoFTR) • dense method を組みわせると生じ る問題を後の処理で解消
1st place solution (public 1st / private 1st) ② 31
• dense method を組みわせると生じる問題 ◦ ペア画像を入力としてキーポイントとマッチングを 作るため、一つの画像におけるキーポイントの位置 がペアごとに微妙に異なる 引用元:[Xingyi He, Jiaming Sun, Yifan Wang, Sida Peng, Qixing Huang, Hujun Bao, Xiaowei Zhou, 2023] • Transformer ベースのモデルと Geometry Refinement を組み 合わせて正確な結果を得る ◦ モデルはMegaDepthデータで 学習
2nd place solution (public 3rd / private 2nd) 32 •
ペア作成 ◦ すべての画像ペアを利用 ◦ あとでマッチ数が100以上のものだけにフィ ルタ • マッチング ◦ Rotate detectionで回転検出と修正 ◦ SuperPoint&SuperGlueの組み合わせ ◦ 結果をキャッシュすることで高速化 • COLMAPにいれる最初のペアはマッチ数が 最も多いものにする • 閾値を変えて複数回再構成を実施し、画像数 と3Dポイントの数を元に最適なものを選択
2nd place solution (public 3rd / private 2nd) 33 •
大きく効いてそうなもの ◦ 画像サイズの変更 ◦ 複数画像サイズの組み合わせ ◦ Rotate detection ◦ Multi-run reconstruction
3rd place solution(ban?) (public ? / private ?) 34 •
画像が大きすぎる場合は長辺1920になるまでリサイズ • 各画像ペアについて片方を4回転して SuperGlue • GeoVerification(RANSAC) ◦ cv2.findFundamentalMat(mkpts0, mkpts1, cv2.USAC_MAGSAC, 2, 0.99999, 100000) • EXIFデータの利用 • 3D再構成の再実行: register ratio(復元に失敗した画像の割合)が 1 未満ならパラメータを変 えて再実行
4th(3rd) place solution (public 9th / private 3rd) 35 •
90°回転を試してマッチ数が少なければ飛ばす • マッチング ◦ DKM v3 を使うと Super Glue では拾えなかったマッチングを拾えるように ◦ 画像を4分割して4x4 でマッチングさせる。SuperPointがオーバーヘッドなので実行時間は4倍程度
5th(4th) place solution (public 13th / private 4th) 36 •
2022年の優勝ソリューションがベース ◦ DBSCANを利用することで、上位80〜 90%の一致するキーポイントを含むクラ スターを取得し、特徴的な領域のみを Cropする • 4種の回転画像を用意し、軽量なモデルで マッチさせる • CPUタスクとGPUタスクを別スレッドで実行 することで高速化を実現
6th(5th) place solution (public 5th / private 5th) 37 •
KeynetAffnetHardnet+Adalam によるマッチング • EXIFの焦点距離の情報を利用 • CPUタスクとGPUタスクを別スレッド で実行することで高速化を実現
まとめ 38 • マッチング ◦ 多くのチームが 90°回転をうまく使っていた ◦ リサイズ・クロップ・分割は性能に大きく影響 ◦
複数のマッチング方法をうまく組み合わせて性能向上 • 3D 再構成 ◦ refine するか複数実施して適切な再構成を選択すると性能向上
参考になったおすすめ書籍 ディジタル画像処理[改訂第二版] • 近年の機械学習ベースの手法を除けば、古典的な手 法の多くを図例とともにカバーしている良本 ◦ 一応CNNもカバー • エピポーラ幾何の話など、今回のコンペティションの 前提となる知識も含めてかなり広い範囲を説明して
いるため、画像処理をするなら手元においておきたい 39
参考 IMC 2023 • Image Matching Challenge 2023 _ Kaggle
• Kaggle Image Matching Challenge 2023を振り返る IMC 2022 • Image Matching Challenge 2022 _ Kaggle • Kaggle Image Matching Challenge 2022 まとめ #Python - Qiita 40
参考 画像処理 • 画像処理の数式を見て石になった時のための、金の針 #Python - Qiita Local Feature Matching
• 論文まとめ: Local Feature Matching Using Deep Learning: A Survey(202401) 41
THANK YOU! ありがとうございました! 42