Slide 1

Slide 1 text

Kaggle 過去コンペまとめ Image Matching Challenge 2023 LAIME AI勉強会 村上 直輝 (@634kami) 2024年4⽉17⽇

Slide 2

Slide 2 text

自己紹介 村上 直輝 ● メガベンチャーでデータサイエンティストやってます ● 画像処理初心者 ● Kaggle Master ○ 🥇 2(3) ○ 🥈 0(4) ○ 🥉 0(3) 2 @634kami

Slide 3

Slide 3 text

1. コンペ概要・前提知識 2. 基本的な解法 3. 個別の技術紹介 4. voteの多い Notebook&Discussion 5. 上位解法 目次 3 ※プライベートシェアリングにならないように2024年のコンペに ついては言及しません

Slide 4

Slide 4 text

コンペ概要・前提知識 01 タスク設定・データ概要・評価方法 4

Slide 5

Slide 5 text

Image Matching Challenge 2023 ● CVPR 2023 Workshop の併設コンペ ● タスク概要 ○ ランドマークを様々な位置や角度から撮影した複 数の画像が与えられ、それぞれの撮影位置と向き を推定する ○ Structure from Motion と呼ばれるタスク 5

Slide 6

Slide 6 text

データ形式 6 ● [train/test]/*/*/images ○ 同じ場所の近くで撮影された画像のバッチ。学習 用データセットの中には、images_fullというフォ ルダにさらに画像が含まれているものもある。 ● train/*/*/sfm ○ このバッチ画像の3D再構成。この画像は、本コン ペティションにバンドルされているライブラリ, colmapで開くことができる。 ● train/train_labels.csv ○ 正解ラベルを含むデータセットの画像のリスト

Slide 7

Slide 7 text

提出形式 Output: 撮影位置と向きを表現する値 ● rotation_matrix (3x3 の行列を「;」で繋いで平坦化) ● translation_vector (3次元のベクトルを「;」で繋いで平坦化) 7 どういうこと ?????? → ピンホールカメラモデルなどの前提知識が必要

Slide 8

Slide 8 text

ピンホールカメラモデル(Pinhole Camera model) ① ● 3D の空間にある物体が2D 画像に投影される状態を記述 するためのモデリングの一つ ● 3つの座標系が存在 ○ ワールド座標系: w ○ カメラ座標系: c ○ 画像座標系 8 画像引用:https://kornia.readthedocs.io/en/stable/geometry.camera.pinhole.html

Slide 9

Slide 9 text

ピンホールカメラモデル(Pinhole Camera model) ② ● ワールド座標系→カメラ座標系 回転と平行移動で変換 ● 今回のコンペティションで出力し たいのは R, t 9 画像引用:https://kornia.readthedocs.io/en/stable/geometry.camera.pinhole.html ワールド座標系における 物体の座標 カメラ座標系における 物体の座標

Slide 10

Slide 10 text

評価 mean Average Accuracy (mAA) ● scene ごとに正解率を計算して平均を取る ○ 画像をペアにしたときの全組み合わせについて, 以下の差の誤差を計算 ■ 2つのGTの rotation_matrix, translation_vector の差 ■ 2つの予測値の rotation_matrix, translation_vectorの差 ○ 閾値ごとに正解率を計算して平均を取る ■ 誤差が閾値以内あれば正解とする 10 ペアを使って計算をしているのは、おそらく一つの画像の rotation_matrix, translation_vector の値は基準と なる座標が変わると値が変わってしまうため 2つ使えば相対的な位置関係で値が一意に定まる

Slide 11

Slide 11 text

基本的な解法と技術 02 キーポイントマッチング・3D再構成 11

Slide 12

Slide 12 text

全体の流れ 12 scene(撮影の対象物)ごとに画像セットが与えられているのでsceneごとに以下を実行する 1. 類似する画像のペアを作る 2. 画像のキーポイントを検出 3. ペア画像のキーポイントマッチングを計算 4. ペア画像の対応を表す基礎行列の計算 5. ペア画像の基礎行列を使って Sparse Reconstruction 参考: https://www.kaggle.com/code/eduardtrulls/imc-2023-submission-example

Slide 13

Slide 13 text

1. 類似する画像のペアを作る 13 ● 目的 ○ 類似画像同士のペアを作成したい ■ 全通りペアを作成してしまうと後の計算 で時間が足りなくなってしまう ● やること a. 画像モデルで embedding 計算 ■ input: 画像 ■ output: embedding b. embedding 同士の cosine 類似度を計 算し、画像ごとに上位N件をペアにする 似てる 似てない ︙ 似てる

Slide 14

Slide 14 text

2. 画像のキーポイントを検出 14 ● 目的 ○ 画像の特徴的な点(キーポイント)を検出したい ■ ペア画像のキーポイントマッチングに使う ● やること ○ キーポイント検出のアルゴリズム/モデルを使う ■ 入力: 画像 ■ 出力: キーポイント ● 例 ○ SIFT ○ DISK ○ SuperPoint 引用元:https://github.com/cvlab-epfl/disk?tab=readme-ov-file [Michał J. Tyszkiewicz, Pascal Fua, Eduard Trulls, 2020]

Slide 15

Slide 15 text

3. ペア画像のキーポイントマッチング 15 ● 目的 ○ ペア画像間のキーポイントの対応を見つける ● やること ○ キーポイントマッチングのモデルを使う ■ 入力: キーポイント検出済みの画像ペア ■ 出力: キーポイント同士の対応 ● 例 ○ SuperGlue ○ LightGlue (2023) 引用元:[Paul-Edouard Sarlin, Daniel DeTone, Tomasz Malisiewicz, Andrew Rabinovich,2020]

Slide 16

Slide 16 text

4. ペア画像の対応を表す基礎行列の計算 16 ● 目的 ○ ペア画像の対応を表す基礎行列を計算する ■ Sparse Reconstruction で用いる ● やること ○ RANSACによる基礎行列の計算 ■ Random sample consensus (RANSAC)によって iterative に外れ値を無視した better な基礎行列を求める ○ pycolmapを使えば簡単に実行できる

Slide 17

Slide 17 text

参考:エピポーラ幾何と基礎行列 17 ● エピポーラ幾何 (epipolar geometry) ○ 2台のカメラで撮影した画像間における幾何 ● 基礎行列 ○ カメラ固有の(内部)パラメータを用いて正規 化しない場合 X L と X R の位置はある行列F を用いて表現でき、これを基礎行列と呼ぶ ○ 正規化する場合は基本行列と呼ぶ 引用元: https://kornia.readthedocs.io/en/stable/geometry.epipolar.html

Slide 18

Slide 18 text

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]

Slide 19

Slide 19 text

個別の技術紹介 03 詳細は説明しきれないので概要を紹介 19

Slide 20

Slide 20 text

SIFT (キーポイント検出) ● 回転・スケール変化・照明変化等に頑健 なキーポイント検出 ● アルゴリズム ○ 少しずつ平滑化を強めた画像を用意し、その差 分画像(DoG画像)を計算 ○ DoG画像から極値となる画素を特徴点候補と して抽出 ■ スケールに頑健になるように前後のスケールも 合わせて周囲の26近傍を比較 ○ 特徴点の勾配強度と勾配方向を求め、4x4の ブロックからそれぞれ 8 方向の勾配方向ヒスト グラムを生成し、128次元の特徴量を得る 20 引用元:[DG Lowe, 2004]

Slide 21

Slide 21 text

SuperPoint (キーポイント検出) ● 自己教師あり学習によるキーポイント検出の手法 ● 2head のモデル構造と多段の学習 ● モデル中の65次元は 8x8 + 1(no point) を表し、 8x8のセル上にキーポイントが存在するのかを表す 21 引用元:[Daniel DeTone, Tomasz Malisiewicz, Andrew Rabinovich, 2017]

Slide 22

Slide 22 text

DISK (キーポイント検出) ● end2end で学習可能なキーポ イント検出のための手法 ● 強化学習の手法を適用し、マッチ したら報酬を与えるような policy で学習させる ● U-netベースのモデル 22 引用元:[Michał J. Tyszkiewicz, Pascal Fua, Eduard Trulls, 2020]

Slide 23

Slide 23 text

SuperGlue (キーポイントマッチング) ● 計算済みのキーポイントを用いてマッチングするモデル ○ マッチングは微分可能な最適輸送問題を解くことによって推 定 ○ そのコストはグラフニューラルネットワークによって予測 23 引用元:[Paul-Edouard Sarlin, Daniel DeTone, Tomasz Malisiewicz, Andrew Rabinovich, 2020]

Slide 24

Slide 24 text

LightGlue (キーポイントマッチング) ● 計算済みのキーポイントを用いてマッチングするモデル ○ モデル構造を見直し SuperGlue よりもメモリと計算が 効率的に 24 引用元:[Philipp Lindenberger, Paul-Edouard Sarlin, Marc Pollefeys, 2023]

Slide 25

Slide 25 text

LoFTR: (キーポイント不要なマッチング) ● Transformerを用いた画像マッチング手法 ○ 「画像のキーポイント計算」不要(Detector-Free)で、マッチングをend2endでこなす ○ 粗いレベルでピクセル単位の密なマッチングをし、細かいレベルで良好なマッチングを絞り込む 25 Figure 2: Overview of the proposed method. 引用元:[Jiaming Sun, Zehong Shen, Yuang Wang, Hujun Bao, Xiaowei Zhou. 2021]

Slide 26

Slide 26 text

voteの多い Notebook&Discussion 04 ソリューション以外で役に立つもの中心に紹介 26

Slide 27

Slide 27 text

Notebook(ソリューション以外) ● [EDA] 🏛IMC ~ 🔻3D plots | 📊Interactive vis ○ 3d 再構成したときの結果を可視化 ● imc-2023-submission-example ○ ホストによるサンプル提出。これに習うだけで一通り実行できる上、意外とコード量 は少ない ● imc2023-evaluation ○ ホストによる評価コード ● Image Matching Data Discovery and SIFT features ○ SIFTによるキーポイントマッチングと可視化 27

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

上位解法 05 概要・差別化ポイント 29

Slide 30

Slide 30 text

1st place solution (public 1st / private 1st) ① 30 ● ペア作成 ○ NetVLAD ● マッチング ○ 90°回転により向きをあわせる ○ マッチ部分をクロップしてスケー ルを合わせる ○ 2つの手法を組み合わせ ■ sparse method (SPSG) ■ dense method (LoFTR) ● dense method を組みわせると生じ る問題を後の処理で解消

Slide 31

Slide 31 text

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データで 学習

Slide 32

Slide 32 text

2nd place solution (public 3rd / private 2nd) 32 ● ペア作成 ○ すべての画像ペアを利用 ○ あとでマッチ数が100以上のものだけにフィ ルタ ● マッチング ○ Rotate detectionで回転検出と修正 ○ SuperPoint&SuperGlueの組み合わせ ○ 結果をキャッシュすることで高速化 ● COLMAPにいれる最初のペアはマッチ数が 最も多いものにする ● 閾値を変えて複数回再構成を実施し、画像数 と3Dポイントの数を元に最適なものを選択

Slide 33

Slide 33 text

2nd place solution (public 3rd / private 2nd) 33 ● 大きく効いてそうなもの ○ 画像サイズの変更 ○ 複数画像サイズの組み合わせ ○ Rotate detection ○ Multi-run reconstruction

Slide 34

Slide 34 text

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 未満ならパラメータを変 えて再実行

Slide 35

Slide 35 text

4th(3rd) place solution (public 9th / private 3rd) 35 ● 90°回転を試してマッチ数が少なければ飛ばす ● マッチング ○ DKM v3 を使うと Super Glue では拾えなかったマッチングを拾えるように ○ 画像を4分割して4x4 でマッチングさせる。SuperPointがオーバーヘッドなので実行時間は4倍程度

Slide 36

Slide 36 text

5th(4th) place solution (public 13th / private 4th) 36 ● 2022年の優勝ソリューションがベース ○ DBSCANを利用することで、上位80〜 90%の一致するキーポイントを含むクラ スターを取得し、特徴的な領域のみを Cropする ● 4種の回転画像を用意し、軽量なモデルで マッチさせる ● CPUタスクとGPUタスクを別スレッドで実行 することで高速化を実現

Slide 37

Slide 37 text

6th(5th) place solution (public 5th / private 5th) 37 ● KeynetAffnetHardnet+Adalam によるマッチング ● EXIFの焦点距離の情報を利用 ● CPUタスクとGPUタスクを別スレッド で実行することで高速化を実現

Slide 38

Slide 38 text

まとめ 38 ● マッチング ○ 多くのチームが 90°回転をうまく使っていた ○ リサイズ・クロップ・分割は性能に大きく影響 ○ 複数のマッチング方法をうまく組み合わせて性能向上 ● 3D 再構成 ○ refine するか複数実施して適切な再構成を選択すると性能向上

Slide 39

Slide 39 text

参考になったおすすめ書籍 ディジタル画像処理[改訂第二版] ● 近年の機械学習ベースの手法を除けば、古典的な手 法の多くを図例とともにカバーしている良本 ○ 一応CNNもカバー ● エピポーラ幾何の話など、今回のコンペティションの 前提となる知識も含めてかなり広い範囲を説明して いるため、画像処理をするなら手元においておきたい 39

Slide 40

Slide 40 text

参考 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

Slide 41

Slide 41 text

参考 画像処理 ● 画像処理の数式を見て石になった時のための、金の針 #Python - Qiita Local Feature Matching ● 論文まとめ: Local Feature Matching Using Deep Learning: A Survey(202401) 41

Slide 42

Slide 42 text

THANK YOU! ありがとうございました! 42