Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Geometry-Aware Learning of Maps for Camera Localization #102

Open
Yagami360 opened this issue Sep 12, 2020 · 0 comments
Open

Geometry-Aware Learning of Maps for Camera Localization #102

Yagami360 opened this issue Sep 12, 2020 · 0 comments

Comments

@Yagami360
Copy link
Owner

Yagami360 commented Sep 12, 2020

0. 論文情報・リンク

1. どんなもの?

  • 画像からカメラ姿勢を回帰するタスクにおいて、{カメラ姿勢の回転表現として対数化された単位クォータニオンを採用}、{2つの入力画像間の相対的なカメラ姿勢を学習&推論する MapNet の採用}、{アノテーションされていないデータセットから自己教師あり学習で追加学習を行う MapNet+}、{複数フレームでの推論カメラ姿勢を滑らかに融合する MapNet+PGO}という工夫により、カメラ姿勢の回帰性能を大きく向上させた DNN ベースの image-based Camera Localization モデル。

2. 先行研究と比べてどこがすごいの?

  • 入力画像から3D空間上でのカメラ位置を推定する問題は、ロボット工学、自律運転、AR/VR などの多くの分野で重要なテーマの1つになっている。
    SLAM [Simultaneous localization and mapping] は、この問題に対する従来の解決法であるが、SLAM では、{トラッキングで画像フレームを密に保存する必要があること}・{外観ベースの位置推定とランドマークベースのポーズ推定を別々に行う必要があること}・{画像フレーム間の特徴対応を確立する必要があること}などの前提条件が必要になる。
    一方で既存の DNN ベースの image-based Camera Localization モデルである PoseNet は、このような前提条件を必要とすることなく、カメラ姿勢を回帰可能なモデルになっているが、その回帰性能に課題が存在する。
    本手法で、PoseNet のアプローチを世襲したモデルであるが、{カメラ姿勢の回転表現として対数化された単位クォータニオンを採用}、{2つの入力画像間の相対的なカメラ姿勢を学習&推論する MapNet の採用}、{アノテーションされていないデータセットから自己教師あり学習で追加学習を行う MapNet+}、{複数フレームでの推論カメラ姿勢を滑らかに融合する MapNet+PGO}という工夫により、カメラ姿勢の回帰性能を大きく向上させることを実現している。

3. 技術や手法の"キモ"はどこにある?

  • アーキテクチャの全体像

    上図は、本手法でのアーキテクチャの全体像を示した図である。
    このアーキテクチャは、以下のようなコンポーネントから構成されている。

    1. 入力画像から入力画像からカメラパラメーターを回帰するネットワーク
      PoseNet のように画像 encoder + カメラ姿勢回帰のための FC 層で構成されるネットワークで、
      カメラ姿勢の回転表現として対数化された単位クォータニオンを採用することで、回帰性能を向上させている。

    2. MapNet
      入力画像の絶対的なカメラ姿勢に加えて、2つの入力画像間の相対的なカメラ姿勢も学習&推論する

    3. MapNet+
      アノテーションされていないデータセットから自己教師あり学習で追加学習を行う

    4. MapNet+PGO
      推論時のみの処理で、複数フレームでの推論カメラ姿勢を滑らかに融合する。

  • 入力画像からカメラパラメーターを回帰するネットワーク
    本手法でのカメラパラメーター回帰ネットワークは、既存の image-based Camera Localization モデルである PoseNet のネットワーク構造をベースに以下のような変更を加えている。

    • 画像 encoder のベースラインネットワークとして、GoogLeNet ではなく ResNet-34 を採用
    • 最後の conv 層の後に GAP 層 [global average pooling layer] を追加
    • 出力層の直前に追加していた 2048 個の FC 層に加えて、さらなる FC 層も追加(この FC 層のに続いて、6-Dof のカメラパラメーターを出力する FC 層が存在する)

    ここで、カメラの向きに関して、PoseNet では正規化された単位クォータニオンで表現している。 しかしながら、クォータニオンは4つの次元で構成されるので、クォータニオンで回転を表現するとパラメーター数が増加し、NN で回帰する際の性能が悪くなる傾向がある。またクォータニオンを正則化して L2 loss をとるので、この面でも回帰性能が悪くなる傾向がある。
    一方で、オイラー角(軸回りの回転)で回転表現するとパラメーターが増えることがないが、0 ~ 2πの範囲で周期的な値になるので、NN がうまく回帰できなくなる

    そのため本手法では、対数化された単位クォータニオンで回転を表現するようにする。
    対数化された単位クォータニオンは、3次元パラメーターなのでパラメーター数も増加せず、またクォータニオンを正則化することなしに L1 loss や L2 loss をとることが出来るので、正規化された単位クォータニオンのときのような回帰性能低下が発生しないメリットがある。

    対数化クォータニオンは、以下のような式で与えられる。

  • MapNet のアーキテクチャ

    MapNet では、PoseNet のように単一の入力画像に対する{入力画像・カメラ姿勢}のペアデータを学習&推論するだけでなく、入力画像に対する{入力画像・絶対的なカメラ姿勢 p }と、2つの入力画像間の相対的なカメラ姿勢 v の両方を学習&推論する。

    MapNet は、以下の損失関数で学習される。

    上図は、MapNet が学習した最後の活性化層の特徴ベクトルの分布を、MDS [2D multi-dimensional scaling] を使用して可視化した図である。
    PoseNet では最終層からの特徴ベクトルがカメラ姿勢と相関がないように学習が行われているが、MapNet では最終層からの特徴ベクトルがカメラ姿勢と相関するようにに学習が行われている。

  • MapNet+

    MapNet +では、正解カメラ姿勢データがアノテーションされていない追加データセット T に対しても、自己教師あり学習を用いて学習を行い、MapNetの重みを更新する。
    具体的には、以下のような処理を行う。

    1. 市販の VO アルゴリズムを用いると、ビデオ中の複数の画像データから画像ペア間の相対的なカメラ姿勢の正解データを生成することが出来るので、この VO アルゴリズムを用いてアノテーションされたデータセット D と同じシーンで構成される追加データセット T のカメラ姿勢をアノテーションする。また、他のセンサ情報(GPSなど)も活用し、カメラ姿勢をアノテーションする。
      ※ VO アルゴリズム : 論文「DSO: Direct sparse odometry」、「Semi-dense visual odometry for a monocular camera」

    2. そして、MapNet を以下の式のように、追加データセット T に対する損失関数項 L_T が追加された損失関数で再学習する。

      学習時の各ミニバッチは、アノテーション付きデータセット D とアノテーションなしデータセット T からそれぞれ半分ずつサンプリングしながら学習が行われる。

  • MapNet+PGO: Optimizing During Inference

    推論時は、PGO [pose graph optimization] の手法を用いて、MapNet+ からの入力画像に対する絶対的な推定カメラ姿勢のT個のフレームでの系列 と VO アルゴリズムからの入力画像間の相対的なカメラ姿勢のT個のフレームでの系列 を融合させ、最終的なカメラ姿勢を出力する。(MapNet+PGO)
    この融合された最終的なカメラ姿勢は、滑らかで大域的に安定したカメラ姿勢になっている。
    ※ PGO : 論文「Pose graph optimization in the complex domain: Duality, optimal solutions, and verification」など

    具体的には、これらの処理は、T 個のフレームでのカメラ姿勢の最適値 に対して、以下の式で定義された損失関数を最小化するように解くことで得られる?
    → 学習ではなく、損失関数を最小化するような解を求めている?

4. どうやって有効だと検証した?

  • 既存のモデルとのカメラ姿勢回帰性能の比較検証

    既存の image-based Camera Localization モデルである PoseNet などと比較して、本手法ではより正解データをうまく回帰出来ている。
    また、MapNet+ や MapNet+PGO を導入することで、より正解データをうまく回帰出来ている。
    (緑:正解、赤:推論)

  • 回転表現として対数化された単位クォータニオンを採用することによる回帰性能の定量検証

    カメラの向きを、正則化された単位クォータニオンではなく、対数化された単位クォータニオンで表現して回帰することにより、カメラの向きの回帰性能が向上している。

5. 議論はあるか?

  • カメラパラメーター回帰ネットワークにおいて、カメラ姿勢の回転表現として対数化された単位クォータニオンを用いる方法は手軽に採用できそうな手法。実装コードにて、カメラパラメーター回帰ネットワークにおける対数クォータニオン計算部分を確認

6. 次に読むべき論文はあるか?

  • Geometric loss functions for camera pose regression with deep learning
  • Image-based localization using hourglass networks
  • DSAC: Differential RANSAC for camera localization

7. 参考文献

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant