catch-img

Kaggle Image Matching Challenge 2022で金メダルを獲得しました


目次[非表示]

  1. 1.はじめに
  2. 2.コンペの概要
    1. 2.1.データの内容
    2. 2.2.評価指標
    3. 2.3. 主なSolution
    4. 2.4.コンペの特徴:モデルの再学習について
  3. 3.10th Place Solution
    1. 3.1.DKM-ROI
    2. 3.2.処理のパイプライン化
    3. 3.3.Validation戦略
  4. 4.コンペを終えた感想
  5. 5.おわりに
  6. 6.引用

はじめに

こんにちは、AI技術開発部の池田です。今年の4月から6月頭にかけて開催されたkaggle competition Image Matching Challenge 2022 にチームで参加し、全642チーム中10位の成績で金メダルを獲得しました。

kaggleはGoogle社が運営する世界最大のAIコンペプラットフォームです。Image Matching Challengeは、前年までコンピュータービジョンに関する世界トップレベルの学会CVPR(Computer Vision and Pattern Recognition)にて開催されており、今年初めてkaggleで開催されました。

このコンペには、コニカミノルタのメンバー3名: 岡﨑(@tmyok1984)、氏家(@meguru07)、池田(@makotoikeda)を含む4人でチームを組んで参加しました。本記事では、このコンペティションの概要と我々のソリューションについて紹介します。


コンペの概要

本コンペの目的は、異なる視点から撮影された2枚の画像の対応関係を推定するアルゴリズムを開発することでした。2枚の画像の対応関係が分かれば、その画像を撮影したカメラの内部・外部パラメータを用いることで、撮影したシーンの3次元形状を計測することができます。この技術を応用すれば、安価なカメラで撮影した画像から、様々なシーンの3次元形状を仮想的に復元できるようになると考えられます。

データの内容

コンペ主催者から提供されたデータは下記でした。

  • 学習用画像データ 全16シーン合計5,678枚、1,416,814ペア

  • 学習用画像データそれぞれのカメラ内部パラメーターKおよび外部パラメーターR, T
  • 学習用画像データの全ペアのcovisibility (重なり具合)
  • 学習用画像データの全ペアの基礎行列の正解値 (キャリブレーションデータから計算したもの)

このコンペでは、最終成績を決定するのに用いられる約10,000ペアのテスト画像は非公開でした。参加者には、動作検証用に、テスト画像のうち数枚のサンプル画像が与えられました。

評価指標

本コンペでは、与えられた2枚の画像を入力とし、2枚の画像の対応関係を表す基礎行列 (Fundamental Matrix) を出力して提出します。推定した基礎行列の評価指標には、正解の基礎行列から計算できる2画像の相対位置TGT・相対姿勢RGTと、推定した基礎行列から計算できる2画像の相対位置Tpred・相対姿勢Rpredとの誤差による、mAA (mean Average Accuracy) で評価されました。

相対位置と相対姿勢のそれぞれについて10組の閾値が与えられ、誤差が両方の閾値未満である場合に評価値が得られます。例えば、一番厳しい閾値未満の誤差の場合はAccuracyが1に、2番目に厳しい閾値を下回る場合はAccuracyが0.9になります。この評価値を全ての評価用画像ペアで平均することによりmAAが得られます。

より詳細にはkaggleの評価指標定義をご覧ください。

 主なSolution

本コンペでは、2枚の画像から同じ物理的なポイント (対応点) を検出し、対応点の組から基礎行列を推定するアプローチが主流でした。大まかなフローをFig.1へ示します。

  1. 画像の前処理アルゴリズム
  2. 画像を入力とし対応点を検出するDeep Learningモデル
  3. 対応点の選別アルゴリズム
  4. 対応点を入力とする基礎行列の推定アルゴリズム

Fig.1 主なSolutionのフロー図

Fig.1のそれぞれのStepに対して各チームが独自の工夫をおこない、アルゴリズムの性能を競いました。上位解法より、Step1では重要な領域の切り出しや複数の画像解像度のアンサンブルをすること、Step2では複数のDeep Learningモデルで検出した対応点をアンサンブルすることが、スコア向上の主流となる手法でした。

コンペの特徴:モデルの再学習について

Step2のDeep Learningモデルは、本コンペでもベースラインが公開され精度の高いモデルとして広く使用されたLoFTRなど、様々なものがありました。機械学習コンペでは通常、与えられた学習データでモデルを再学習することが精度向上の焦点となります。しかし、本コンペでは序盤から「学習データを使って再学習しても成績が良くならない」「学習そのものが安定しない」という声が参加者からDisucussionに投稿されていました。一方で、これらのモデルでは、MegaDepthという屋外シーンの大規模なデータセットによって学習済のweightが公開されていました。

本コンペでは、公開されている学習済のweightで高い精度が出たことと、さらに精度を上げるための再学習には大規模な計算リソースが必要なことから、再学習を選択した上位解法はありませんでした。これは他のKaggleコンペでは珍しく、本コンペのユニークなポイントとなりました。

10th Place Solution

本記事では、我々のソリューションでスコア向上に重要であったキー技術のうち、DKM-ROI処理のパイプライン化Validation戦略について説明します。kaggleのDiscussionに他の工夫やより詳細なソリューションを公開しているので、そちらもぜひご覧ください。

DKM-ROI

対応点を検出するStepで、実験において多くのDeep Learningモデルを試しました。その中でDKM (Deep Kernelized Dense Geometric Matching) は、他のモデルと比べると、シーンの難しさによらず安定して多くの対応点を検出できる傾向がありました。一方で、DKMで得られた対応点を用いて推定した基礎行列は、他のモデルと比較して精度が低くなっていました。

この傾向を有効活用するため、我々のソリューションでは、画像の重要な領域を切り出すROI (Region of Interest) を作成するためにDKMを使用しました。以下に、DKMでROIを作成する過程を画像のサンプル(同じシーンを撮影した視点の異なる2画像)とともに示します。

1. DKMによる推論
Fig.2 は、DKMが推定した対応点の信頼度マップです。赤い色の画素ほど対応点検出の信頼度が高いことを示しています。

Fig.2 DKMによる推論
    
2. 対応点のフィルタリング
大津の二値化を用いて、画像ペアごとに適応的に閾値を決めてフィルタリングしました。白い領域が選ばれた対応点、黒い領域がフィルタリングされて除去された対応点になります。

Fig.3 大津の二値化
    
3. フィルタリングされた対応点マップを用いたバウンディングボックスの作成
対応点マップ(白い画素)の外接矩形でバウンディングボックスを作成します。
   

Fig.4 バウンディングボックスの作成
    
4. バウンディングボックスを用いた領域の切り出し
3. で得られたバウンディングボックスを元画像へ適用することにより、対応点検出において重要と考えられる部分領域を切り出しました。
    

Fig.5 領域の切り出し
    
5. 切り出した領域を用いた、他のモデル(LoFTR, SE2-LoFTR, SuperGlueによる対応点の検出
Fig.6の緑色の点は、LoFTRが検出した対応点を表しています。上が領域の切り出しをしない場合、下が領域の切り出しをした場合の検出結果です。領域の切り出しをした場合は、領域外となっている画像上部で対応点を検出していないことが分かります。

Fig.6 対応点の検出結果 上:領域の切り出し無し、下:領域の切り出し有り
    

DKM-ROIを使った領域の切り出しは、片方の画像にしか映ってない領域を対応点検出候補から除去できます。また、切り出した2画像を同じ大きさへリサイズすることで、スケール違いが抑えられ対応点の検出精度が向上しました。しかし、領域の切り出しによって重要な領域を見逃してしまうケースも一部ありました。その問題の対策として、元画像全体を用いたLoFTRによる推論も行い対応点に加えました。

処理のパイプライン化

このコンペはコードコンペという形式で開催され、推論時間を9時間以内に収める必要がありました。そのため、推論の実行を高速化することが重要なポイントの一つとなりました。我々のチームは、処理のパイプライン化により高速化しました。

Fig.1に示したStepごとの処理時間を計測し、ボトルネックとなっている処理を確認しました。その結果、Step2とStep4の負荷が特に大きいことが分かりました。Step2はGPU処理であり、他のCPU処理のStepと並列に動かすことができます。またStep1とStep3の処理の負荷は小さく、Step4と並列に動かしてもCPUに負荷がかかりすぎることはありませんでした。

よって、[Step1] → [Step2] → [Step3, 4]のように処理をまとめ、パイプライン化しました。

Fig.7 パイプライン化による時間短縮

パイプライン化による高速化を実現し、我々は9時間の制限時間内に複数のモデルを実行することができました。複数の異なるモデルから得られる対応点をアンサンブルすることが、このコンペでスコアを向上させる有効な手段でした。

Validation戦略

kaggleでは、1日にsubmissionできる回数に1チーム5回という制限があるため、手元のデータでスコアを確認し、試行錯誤を重ねる環境を作ることが重要な戦略となります。我々はコンペ主催者から与えられたデータセットを、モデルの学習に使うのではなく、手法の有効性を確認するための検証用データとして活用することにしました。

データセットの中には、明らかに難しすぎるペアや簡単すぎるペアが含まれていました。そこで、画像サイズ、被写体までの距離・角度、画像ペアの重なり具合のパラメーターを用いて学習用データのクリーニングを行い、検証用のデータセットを作成しました。Validation戦略についてkaggleのDiscussionでより詳細に説明しているので、そちらもぜひご覧ください。

上位解法を見ると、今回の学習用データを検証用データとして活用したチームは少なかったようです。我々のチームは特にコンペ終盤において、限られた提出回数の中で有効な選択をし、最後までスコアを向上し続けることができました。Fig.8に、最終5日間のスコアの向上の様子を示します。スコアが0.83から0.846まで断続的に向上しており、この差は最終順位の20位台から10位までのスコアの差に相当します。

Fig.8 最終5日間のスコアの向上

コンペを終えた感想

(岡﨑)

私はこれまで個人でしかコンペに参加しておらず、コンペとは辛く厳しい修行のようなものだと思い込んでいました。今回、初めてチームを組んでコンペに参加しましたが、slackを活用して雑談も交えながら密に連絡をとりあい、最後の最後まで楽しみながら取り組むことができました。

今回の課題は基礎行列の推定でしたが、私は学生時代から馴染みのある分野だったので、その点では他の参加者より有利だったかなと思います。今回のコンペはコード提出型で処理時間の制限があったので、アルゴリズムだけでなく全体設計や実装の部分でも工夫の余地があり、その点でも色々試すことができて楽しかったです。

計算機環境について、会社PCを自己研鑽のために使用することを認めていただき、ありがとうございました。今回の経験を周囲のメンバーへ波及させ、技術力強化に貢献できればと思います。

(氏家)

本コンペは、モデルのトレーニングが効かずいつもと勝手が違いましたが、きちんと取り組めば精度を向上させることができたので勉強になりました。

当初はメダルを目指さず、技術のキャッチアップと基礎力向上を目標に取り組んでいましたが、金メダルが見えてくると当初の目的を忘れて没頭していました。

結果的に、チームメンバーや上位参加者から本当に多くのことを学べて目標を大幅に達成できたと思います。

今後、自身の業務に活かしたり、自社で機械学習に取り組む誰かの刺激になったり出来れば嬉しいです。

(池田)

コンペを始めた当初は課題の複雑さ・難易度に面食らいましたが、続けていくうちにアイデア次第で上位に入りうることに気が付き、のめり込んでいきました。

コンペの終盤は上位の争いが激しく、毎日更新されるスコアについていくことが大変でしたが、チームメンバーと諦めずにスコア向上の手段を探索し続け、良い結果を生むことができました。チームメンバーの発想力・実装力に多くを学び、助けていただきました。

今回のコンペを通じて学んだ技術はもちろん、コンペで得た人の繋がりも大切にし、これからも努力を続けていきたいと思います。今回の経験を、今後の開発に活かしていきたいです。

おわりに

本記事では、kaggleで開催されたImage Matching Challenge 2022の概要と、10位に入賞した我々のソリューションについて紹介させていただきました。

kaggleには世界中からデータサイエンティストや機械学習エンジニアが集まり、自身の知識・スキルの確認や、最新技術のキャッチアップの場として活用することができます。コンペに参加することで得られた刺激や気付きを普段の業務に活かして、価値あるサービスにつなげていきます。



コニカミノルタは画像IoTプラットフォームFORXAIを通じて、お客様やパートナー様との共創を加速させ、技術・ソリューションの提供により人間社会の進化に貢献してまいります。

引用

[Sun 2021] Sun, Jiaming, Zehong Shen, Yuang Wang, Hujun Bao, and Xiaowei Zhou. "LoFTR: Detector-free local feature matching with transformers." In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, pp. 8922-8931. 2021.
[Li 2018] Li, Zhengqi, and Noah Snavely. "Megadepth: Learning single-view depth prediction from internet photos." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[Edstedt 2022] Edstedt, J., Wadenbäck, M. and Felsberg, M., 2022. Deep Kernelized Dense Geometric Matching. arXiv preprint arXiv:2202.00667.
[Bokman 2022] Bokman, Georg and Kahl, Fredrik “A case for using rotation invariant features in state of the art feature matchers” ,CVPRW, 2022
[Sarlin 2020] Sarlin, Paul-Edouard, et al. "Superglue: Learning feature matching with graph neural networks." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020.

Makoto Ikeda
Makoto Ikeda
技術開発本部 FORXAI開発センター AI技術開発部 第2グループ 所属 画像を扱う機械学習モデルの開発を行っています。


pagetop