こんにちは、CTO室リサーチャーの角田です。
私は、今年4月に新卒としてモルフォに入社しました。3ヶ月の OJT が終了し、現在私は測距センサーの情報を用いることで画像処理品質を向上させるための研究開発に取り組んでいます。この分野では “Depth Completion”と呼ばれる手法の研究が行われています。研究の一環として、この“Depth Completion”に関連する論文調査を行いましたので、本エントリにて概要を紹介させて頂きます。
Depth Completion
近年のモバイル端末はカメラの進化が著しいですが、近年ではLiDARやToFといった測距センサーも搭載されており、それらにより画像に3次元的な情報を付与することができるようになりました。ただし測距センサーの弱点として
depthを部分的にしか測定できない
解像度が低い
という側面があり、RGB画像と同程度の情報を得るには至っていません。
そこで、測距センサーの出力をRGB画像並みに補完する"depth completion"という手法が近年盛んに研究されていまます。以下ではECCV2020に採択された以下の論文の概略と、実装を動かしてみた所感を紹介します。
概略
RGB画像とdepth画像からdenseなdepth推定を(UNet的な簡単なネットワークで)素朴に行い、その後に複数回refinementをかける
refinement時に単純に周囲8ピクセルの重み付き平均を取るのではなく、例えば柱なら縦方向のみを近傍と見なして、refinementするのに最適な近傍系をニューラルネットワークで求める
refinementが収束するように逐一重みの正規化をする必要があるが、その正規化の仕方を工夫して表現力が落ちないようにしている
denseなdepth mapと同時に信頼度画像も求めることで、occlusionを回避する
refinement含めてend-to-endに学習させる
内容の詳細
論文のより詳細な概要については上のスライドをご覧ください。とにかく重要なのはdepth completionをrefinementの問題と捉えた点だと思います。従来手法はネットワーク構造を工夫して推論精度を上げる側面が強かったですが、この手法はrefinementにメインが置かれているので、出力が非常に高品質です。実際の結果は以下に掲載しましたのでご覧ください。
実装を動かしてみた
著者による実装が公開されています。
特に環境整備は困らなかったので、GPUをお持ちの方はぜひ試してみてください。以下は最初のdepth推定画像からrefinementを数回かけるごとの中間出力です。下画像左から二枚目に見える粒粒がsparse depth mapの入力から来ているものなのですが、それらがうまく拡散されていることがわかります。
動かしてみると良い点に加えていくつか課題も見えてきたので、それを共有して本稿を締めくくろうと思います。
良い点
エッジ保存性は抜群に良く、また細かいテクスチャをしっかり拾ってくれます。
refinementは経験的に18回かけるのが最適と著者が明言しており、メモリアクセス時間がかかることを懸念しましたが、意外と実行時間はかかりませんでした。
ToFはRGB画像とほぼ同時で入力に加えているため、ToFがネットワーク内部でRGB画像と混ざり合ってToFのsparseな情報がぼやけてしまう(すなわちToFの影響が陽に現れてくるのか非自明の)ように思えましたが、不思議とネットワークはToFの結果を有意に用いていることがrefinement前の画像から確認できます。
問題点
sparseな点群はdenseなdepth mapから500点サンプリングして作成しているのですが、サンプリングは画像から一様にされるため、depthの大きな欠損領域がある場合の考慮がされていません。実際そのようなToF画像を入力すると出力がかなりぼやけます。
RGB画像とToF画像を最初のあたりでconcatenateしていますが、ダウンサンプリングしきった段階でconcatenateした方がToF画像のノイズの影響を受けにくく、なおかつ大域的な情報が得やすいように思います。
総じて内容は素晴らしいと思います。本筋とはずれますが特にGitHubの実装が非常に美しく、dataloader, model, loss, metricといった役割ごとにフォルダ整理がきれいにされていて、余分なimportがされないようカプセル化のような仕組みが施されています。さらに学習結果をフォルダに保存する際は日付がフォルダ名に付加されるようになっており、スムーズに研究が行える仕様に感激しました。
上述の通り、残念ながらToFの欠損領域が大きいとrefinementが機能しないため、本手法をそのまま実務に応用することはできませんでした。しかしながら構造は簡潔なため応用の幅は広がりそうです。特にrefinementの核であるdeformable convolution(スライド参照)はこの論文の筆頭著者が他の研究にも多用しているようで、探せば色々と有意義な使い方が見つかるのではないでしょうか。