【論文紹介】End-to-End深層学習による大域的自己位置推定

# 紹介する論文

[Alex Kendall, Matthew Grimes, and Roberto Cipolla. "PoseNet: A convolutional network for real-time 6-DOF camera relocalization," In IEEE International Conference on Computer Vision, 2015.](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Kendall_PoseNet_A_Convolutional_ICCV_2015_paper.pdf)



# 論文の要約

- 単眼のカメラ画像と対応する3次元のカメラ位置の対応をEnd-to-Endで学習し，入力された画像に対応するカメラ位置を予測する
- ある1つの入力に対するカメラ位置を予測できるため，大域的自己位置推定（すなわちre-localization）の問題を解くことができる



# はじめに

End-to-End学習とは，入力と出力の対応を直接学習することです．本論文では，End-to-End学習で単眼のカメラ画像から対応するカメラ位置推定を行う方法を提案しています．これにより，ある1つのカメラ画像の入力に対する自己位置の予測ができる，すなわち**過去の状態に何も依存しない自己位置推定が行える**ため，大域的自己位置推定の様なre-localizationの問題が解けるようになります．

1ページのタイトルより上に，結果の画像（論文中図1）が示されています．上が入力画像，真ん中が予測された位置から見た3次元地図，下が3次元地図を入力画像に投影した図になります．最近の論文は1ページ目にインパクトのある図を置くことが多いですが，これはかなりインパクトがありますね．

![figure1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329950/0d8e3cef-f2aa-10a5-f2ec-4d9bdca11856.png)



# 学習

単眼の画像$I$とそれに対応するカメラの3次元位置${\bf x}$と姿勢（クォータニオン）${\bf q}$の関係を学習します．学習を行うための損失関数は次式（論文中式(2)）になります（ネットワークが出力するクォータニオンは正規化されていないので，明示的に正規化します．予測時も同様に正規化します）．

```math
loss(I)=\|{\bf \hat{x}}-{\bf x}\|_{2}+\beta\left\|{\bf \hat{q}}-\frac{{\bf q}}{{\bf \|q\|}}\right\|_{2}
```

位置と姿勢の単位が違うため単に2つを足し和せると，学習時に姿勢の損失が考慮されにくくなるので，スケールファクターである$\beta$を導入しています．スケールファクターの変化による損失関数の変化の仕方が下図（論文中図2）になっています．スケールファクターによって損失関数が変化していることが見てとれます．

![scale_factor_and_loss.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329950/20a95ea1-1bc5-24eb-59f7-7a5a030936de.png)

なお，屋内・屋外環境でもそれぞれ有効なスケールファクターの値は異なる様で，屋内だと120から750，屋外だと250から2000になるそうです．これは屋外の方が遠くのランドマークが観測できるため，角度の変化によるずれが顕著になるためだとといえます．



# ネットワーク構成

[GoogLeNet](https://www.cs.unc.edu/~wliu/papers/GoogLeNet.pdf)に多少の修正を加えたネットワークを利用しています．具体的には，以下のことを行っています．

- ソフトマックスのレイヤーを削除し，位置・姿勢を出力するために出力層を修正
- 出力層の直前に2048個の全結合層を追加し，自己位置推定のための特徴ベクトルを抽出する
- テスト次にはクォータニオンを正規化する



# データセット

[Cambridge Landmarks](mi.eng.cam.ac.uk/projects/relocalisation/)というデータセットを著者らが作成し，学習・テストを行っています．下図（論文中図4）にデータセットが示されており，緑が学習時の，青がテスト時の，赤がテストデータに対して予測されたそれぞれのカメラ位置になります．なお，学習データを作成するために，[この論文](http://ccwu.me/vsfm/vsfm.pdf)で述べられているStructure from Motion（SfM）が利用されています．

![datasets.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329950/3213bf9a-9b40-5227-e320-0c0ea3489e6b.png)



# 実験

様々な環境・条件で実験が行われ，その有用性が検証されています．上が入力画像，下が予測された位置から見た3次元地図になります．

入力画像ぼやけているとき．
![results_with_blur.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329950/26c2ebda-24be-8b73-b35a-d852b89a9a69.png)

照明条件が異なるとき．
![results_with_different_illumination_conditions.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329950/d91a401f-51af-f445-7683-f26f1a59fbcc.png)

それぞれで正しく自己位置推定が行えていることが確認できます．



# サリエンシーマップ

[この論文](https://arxiv.org/pdf/1312.6034.pdf)で紹介されている方法を用いて，深層学習がどの領域に反応しているか（どの領域が損失関数の勾配を大きくするために寄与するか）を可視化することで作成したサリエンシーマップが下図（論文中図11）に示されています．空や，歩行者や自動車といった自己位置推定のために不要そうな情報に関しては，ネットワークが反応していないことがわかります．また，SIFTなどでは検出できない様な大きな領域にまたがって深層学習が反応していることも確認できます．

![saliency_maps.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329950/23f15601-d8f0-75e6-6afd-c9e4e0f7d006.png)



# 感想

「End-to-End学習ですべて解く」と聞くと，モデリングなども対してやってないで研究として面白くないのでは？と思いながら否定的に読み始めました．実際，論文に式は2つしかなく，モデル化という観点からは面白くないといえます．しかし実際に読んでみると，かなり面白い論文でした．実験，比較，考察の質が高く，読んでいて「なるほど！」と思える部分が非常に多かったです．

論文を通して「We found」という表現が多い印象があり，かなり実験をやって色々なことを検証したのだなと感じました．また，SfMやSIFTなどの従来技術をしっかり用いて比較を行っている辺りは，画像処理に関する事をしっかりやって来たからこそできる研究であるなと強く感じました．

「単に深層学習を使った」というだけでなく，深くそれに関する検証や考察を行っている辺りは，さすがICCVに採択されるだけの論文だと改めて実感できました．