機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

Learning the Depths of Moving People by Watching Frozen Peopleを読んだのでメモ

はじめに

Learning the Depths of Moving People by Watching Frozen Peopleを読んだのでメモ.

概要

SfMやmulti-view stereo(MVS)は一般的に移動体のデプスを推定することができない(何らかの仮定が必要).この論文では動体は人のみという仮定をおいて,動画からデプスを推定する.デプス推定は教師ありDeep Neural Networkでおこない,その教師データの作り方を工夫.

MannequinChallenge Dataset

動体が写っていていてもデプスが推定できるよう,フレーム毎のデプス推定を考える.

一般的に静止物体やカメラが2台以上存在すれば単純な幾何の問題によってデプスを推定することが可能だが,単眼カメラで移動体のデプス推定は不良設定問題となる.そこで学習ベースでフレーム毎のデプス推定をしたいが教師データを作るコストが高い.ここではマネキンチャレンジと呼ばれる動画を利用して人に関するデプスの正解値をSfMとMVSを利用して作る.マネキンチャレンジは人があたかもマネキンであるかのように振る舞う動画を撮るもので,この場合通常動体であるはずの人が静止物として扱えるため,幾何的にデプスを推定することが可能となる.

基本的にはSfMやMVSで得られたデプスはノイズが多くそのままでは学習に利用するのは難しいため,既存のアウトライヤー除去手法と,以下のSfMとMVSの結果の誤差\Delta(\mathbf{p})を使ってデプスのreginementを行う.

\displaystyle
\Delta(\mathbf{p})=\frac{|D_{MVS}(\mathbf{p})-D_{pp}(\mathbf{p})|}{D_{MVS}(\mathbf{p})+D_{pp}(\mathbf{p})}

D_{MVS},D_{pp}はそれぞれMVSと2フレーム間のSfMから得られたデプス.ここでは\Delta(\mathbf{p})\lt\delta=0.2を超える部分のデプスを除去したらしい.また,取ってきた動画の中には人が動いてる場合もあるため,使えるデプスが20%未満のフレームは学習データから弾いたとのこと.

Depth Prediction Model

学習データは動かない人しかいないのに対し,解きたい課題は動く人もいる状況でのデプス推定で,ギャップが存在する.このギャップの簡単な解決方法は,1フレームのRGB画像を入力としてデプスを推定するという課題としてモデルを学習することが考えられるが,これはあまりにも時系列情報を考慮しなさすぎて課題として難しい.そこでRGB以外の入力以外にnon-human regionsやSfM的に推定されたdepth mapを入力とすることを考える.

今回のデプス推定モデルの入力を整理すると,現在のフレームI^r,人の領域を表すバイナリーマスM,人の領域以外を使ったSfMにより求められたデプスマップD_{pp},信頼度マップ(後述)C,そしてoptionalとして人の関節点マップK.これらを入力とすることにより,人以外の領域のデプスはある程度の推定値が与えられているため,モデルはロスを下げるために人の領域のデプスの推定を正確にすることが求められる.

ここで,入力されるデプスマップD_{pp}はoptical flowをベースとした方法で求める.具体的な部分は引用文献譲りになっていたのでここでも割愛.信頼度マップに関してはピクセルごとに次のように計算される.

\displaystyle
C(\mathbf{p})=C_{lr}(\mathbf{p})C_{ep}(\mathbf{p})C_{pa}(\mathbf{p})

C_{lr}は推定されたoptical flowとデプスから得られるflow fieldsを使ってフレーム間をwapingした際の誤差.DNNベースのデプス推定ではよく使われるもの.C_{ep}はエピポーラ拘束に関するもので,C_{ep}(\mathbf{p})=\max(0,1-(\gamma(\mathbf{p})/\bar{\gamma})^2)で計算される.ただし,\gamma(\mathbf{p})は点とエピポーララインとの距離を表す.\bar{\gamma}は距離に対する許容度で今回は2.最後のC_{pa}C_{pa}(\mathbf{p})=1-\left(\frac{\min(\bar{\beta},\beta(\mathbf{p}))-\bar{\beta}}{\bar{\beta}}\right)^2で計算される.\beta(\mathbf{p})ピクセル\mathbf{p}に関する光線の角度で,\bar{\beta}はずれの許容度を表すハイパーパラメータで今回は1.

Losses

学習に用いたロスは以下.

\displaystyle
\mathcal{L}_{si}=\mathcal{L}_{MSE}+\alpha_1\mathcal{L}_{grad}+\alpha_2\mathcal{L}_{sm}

\mathcal{L}_{MSE}は教師との二乗誤差.\mathcal{L}_{grad}は教師とのL1誤差.これによって推定結果が幾分かシャープになるとのこと.色々な論文で使われているテクニック.最後の\mathcal{L}_{sm}は平滑化項で,推定デプスの1次,2次微分のL1ノルム.

まとめ

マネキンチャレンジの動画を利用して正解を幾何的に生成するという発想がとても面白かった.ただこういう研究をする際に,正解値を作る際のハイパーパラメータやモデルのハイパーパラメータをどうやって決めているか気になる.正解のためのデプスを作るのも学習するのも時間がかかるだろうからそう簡単に探索とかもできなさそうな上に,データ生成側か学習方法側かどちらのハイパーパラメータが効いてるか特定しにくい気がする.力技といえばそこまでかもしれないが.