101 Views
October 02, 20
スライド概要
2020/10/02
Deep Learning JP:
http://deeplearning.jp/seminar-2/
DL輪読会資料
Stereo Magnification: Learning view synthesis using multiplane images, +α
今回触れる論文 1. Stereo Magnification: Learning view synthesis using multiplane images – SIGGRAPH 2018 2. DeepView: View Synthesis with Learned Gradient Descent – CVPR 2019 – 1の派生 3. Immersive Light Field Video with a Layered Mesh Representation – SIGGRAPH 2020 • Best in Show – Immersive Experience award (没入体験賞)? – 2の派生 全部Google(1は + UC Berkeley)
デモ (③ Immersive Light Field Video with a Layered Mesh Representation)
デモと動画 • デモ – ③: https://augmentedperception.github.io/deepviewvideo/ – ②: https://augmentedperception.github.io/deepview/ • 動画 – ③: https://www.youtube.com/watch?v=SvRgkXQZIQg – ②: https://www.youtube.com/watch?v=CQ0kdR3c4Ec – ①: https://www.youtube.com/watch?v=oAKDhHPwSUE
発表の概要 • Immersive Light Field Video + 前提の二本を紹介 • ひとことで言うと – 複数の画像/映像から一人称視点の1~6DoFの3D世界を再構成する • キーワード – view synthesis, image-based rendering • 選定理由 – Deep×VR系がアツい • G社F社M社あたりが結構本気感 • 将来的なVRプラットフォームの覇権争い???? – (コロナでみんなVRやりたくなってるんじゃないかなと思って)
発表の概要 1. Stereo Magnification: Learning view synthesis using multiplane images, 2018 – 『MPI: multi-plane image』という疑似的な3D化手法を提案 – 2画像(ステレオカメラ)間の内挿&外挿 2. DeepView: View Synthesis with Learned Gradient Descent, 2019 – 1の改善, ~12カメラ 3. Immersive Light Field Video with a Layered Mesh Representation, 2020 – 2を球面に拡張, ~48カメラ DLなところを中心に扱います
(余談) 最近のDeep×VR系で凄そうな研究 • リアルアバターVTuber by Google AI – Volumetric Performance Capture of Humans with Realistic Relighting – https://www.youtube.com/watch?v=anBRroZWfzI • HMD被ったまま表情トラッキング&表情生成 by Facebook – VR Facial Animation via Multiview Image Translation – https://www.youtube.com/watch?v=IoVP3cMIm_Q
Stereo Magnification: Learning view synthesis using multiplane images, 2018
Stereo Magnification: Learning view synthesis using multiplane images, 2018 • https://www.youtube.com/watch?v=oAKDhHPwSUE
Stereo Magnification: Learning view synthesis using multiplane images, 2018 • 問題設定 – 2視点の画像を使い、その内挿&外挿視点からの画像を生成(合成)
似たタスク • https://www.youtube.com/ watch?v=D0JObXCfxv0 • 似たタスク(で最近 バズってたやつ) ⇨ – 単一カメラなので少し違う • 前景と背景を切り分け、 前景で隠れてた部分を 塗りつぶす • 3Dというよりは画像編集 (フォトショ的な)とか短い映像 用な気がする
手法の全体像 • ① 2画像から、画像中の物体を深度ごとに分けた「multi-plane images」を 作る (DLポイント) – 前景・背景分解をもっと細かくするイメージ • ②「multi-plane images」を使って(少しずつずらして)欲しい視点からの画 像を生成(合成)する - 右から見るときは、 MPIを左にずらせばいい (手前のplaneほど大きく ずらす) - 分かりやすいデモ - 平面を動かすだけで(平面と 気づかないレベルで)立体感 が出る。天才
MPIの求め方 • 素朴には… – 2画像(+2画像の位置関係に関する情報)を入力して、 D枚のmulti-plane imagesを生成するNNを作る • 工夫点 – 「各レイヤーは入力画像のある深度部分を切り取ったらだいたい事足りるので、わ ざわざRGBA画像を位置から生成する必要はない」 – ⇨ 1枚の画像をくり抜いて(0~1の重みをかけて)MPIを作る • 論文ではD=32
MPIの求め方 ① ② ③ 1. 2枚の画像の視差を使いD枚のplane sweep画像を生成 2. plane sweep画像と画像1を使って①最背景、②画像1をくり抜く際の重 み、③透過率(ガラスや反射用)マップ(RGBAのA)を求める(NN) 3. 画像1をくり抜いてD枚のMPIを合成
PSV: plane sweep volume • 視差を使って深度推定しつつ、 ある視点からの画像を合成するCV手法 • それなりにうまくいくけどザラザラな画像に なる • 恐らくPSVがMPIの発想的な由来 情報処理学会研究報告 可視性マップの逐次更新を利用したプレーンスイープ法 https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_action_common_download&item_id=80462&item_no=1&attribute_id=1&file_no=1 D枚
PSV: plane sweep volume • 手法 – ある視線上に各画像とプレーンとの交点がD 個ずつある – D個の点のうち、その点での2画像の画素値 が近い点をその視線の色+深度として採用 – 全ての視線(画素)について計算 D枚 • ある視点からの画像と、深度ごとに分かれ た画像(プレーン)が得られる – このプレーン(大雑把な各深度の画像?)を 今回使う 視線 視点
各planeの求め方 • 推定した重みを元に画像1をくり抜く – 重みwでI1,1-wで背景 ② ① ① 画像1(I1) 画像2(I2) ②
NN学習部分 • 入力:I1(H×W×3) plane sweep(H×W×3×D) 結局この手法は、 うまく深度推定してくり抜 けるかがメイン • 出力:① 背景画像(H×W×3) (透過なしのRGB) ② くり抜き用の重み(H×W×D) ③ 各planeの透過率(H×W×D) ① 画像1(I1) 画像2(I2) ② ③
NN学習部分 • モデル:CNN(UNet) – skip connectionあり、dilated convあり – 出力は1024×576 – 微分可能な関数でMPIをターゲット視点で合成、lossをとる • 目的関数 – – ターゲットの予測誤差だけど単純な二乗誤差ではなく、feature matchin loss • VGG-19で得られる特徴量(数ヵ所の層での出力) • λはその層の出力の数の逆数 • 計算コスト – P100 1枚で1週間
NN学習部分 • データ – (1500video) 7000 video clip, 750K frames – 良さそうなYouTubeチャンネルを探した&SLAMでカメラ姿勢推定した • 適当に参照用画像2フレーム を取って、 内挿予測用と外挿予測用の ターゲットをサンプルして 学習 カメラが動いている様子 ⇨ ⇩ point cloud
評価 • (補間の幅は小さいものの)はっきりした合成画像ができる • SSIMやPSNRも既存手法比で改善
limitation • 壁の横(隠れていた部分)、細かい線などは難しい
DeepView: View Synthesis with Learned Gradient Descent, 2019
DeepView: View Synthesis with Learned Gradient Descent, 2019 • https://www.youtube.com/watch?v=CQ0kdR3c4Ec •
Immersive Light Field Video with a Layered Mesh Representation, 2020 • 問題設定 – 複数(~12)視点の画像を使い、その内挿&外挿視点からの画像を生成(合成)
問題意識 • そもそもMPIを求めるのは(不良設定)逆問題だよね – ある視点の画像を合成することは順問題 • ((不良設定)逆問題一般的な話だけど、) • 一発で正確に全ての視点画像を再合成できるMPIを求めるのは困難 • MPIを生成した後、まだ既知の画像との誤差があれば修正してほしい • お気持ち – 「奥のモノを推論したときに 手前のモノでどう隠れるかは、 もう一度順問題に流さないと なかなかわからないよね」
ill-posed inverse problem • well-posed ⇔ ill-posed – 以下の3つを満たせば(アダマールの意味で) well-posed (良設定) • 解が存在する • 解がただ一つ • 入力に微小な変動を与えたときに、出力の変動も微小 • inverse problem – f(x) = x**2, f(x) = 25 のとき、xを求める – ロボットアームを決められた位置姿勢に移動させる関節角度を求める
ill-posed inverse problem • ill-posedな問題の近似解を求める際によく使う方法 (線形問題) – – 誤差項 + 正則化項 – Jを最小化する – 正則化項は「推定パラメタはほとんど零である」や「推定パラメタはばらつきが少な い」などの事前知識を与えている https://ja.wikipedia.org/wiki/逆問題
提案手法 • MPIの推定を逆問題と捉え、逐次最適化によって解く – 「MPIの推定 ⇨ 誤差の調査」を繰り返して最適なMPIを求める • M: multi-plane layers。{{c_1, α_1}…{c_d, α_d}…{c_D, α_D}} • K: 入力画像(視点)の数 • L_k: 本来の目的関数 – L2誤差とか特徴誤差とか – 後述 • Φ: 正則化関数 – とくに決まっていない – 後述 M
LGD: Learned Gradient Descent • 素朴には… – Lを二乗誤差等にして、純粋に勾配法でMPIをN回アップデートする • (微分可能な方法でターゲット視点の画像を合成して誤差を取る) • ちょっと待った! – 逆問題なんかで逐次的な更新をする場合、単純な勾配法を使うのではなく、更新の 仕方も学習してもらった方がいい • Solving ill-posed inverse problems using iterative deep neural networks, 2017 • Learned primal-dual reconstruction, 2018
LGD: Learned Gradient Descent • もともと • 普通の勾配法でN回逐次最適化。(これでもいける) • Learned Gradient Descent – K個の視点での勾配と直前のMを入力として、更新量ΔMを推論 – 実はLGDの方が精度が出る
Learned Gradient Descent の入力 • Learned Gradient Descent – 損失関数に渡す の微分を計算してみる • W: 視点位置に応じてMPIを縦横にずらす行列. 逆にW^{-1}はMPIを原点に戻す • O: MPIを透過率を考慮しながら重ね合わせて1枚の画像にする関数 – – (d=1が奥,d=Dが手前) – Mの成分c_d, α_dでの微分は、
Learned Gradient Descent の入力 • Learned Gradient Descent L = f( , T (transmittance項) ), A (accumulate項) T – 更新方法だけでなく、さらに更新時の損失関数も自由度を持たせる – ⇨ 明示的な損失関数を決めなくても、T, A, Mを入力にしていればいい
Learned Gradient Descent • もともと • 被明示的な(中間)loss ver – ↑: broadcast – W: 視点位置に応じてMPIを縦横にずらす行列 – W^{-1}: MPIを原点に戻す
Learned Gradient Descent • 被明示的な(中間)loss ver • 最終的な目的関数(LはVGG-16でfeature similarity loss) – update回数は4
学習 • update回数は4 • モデル • データ – train: 90シーン、12 input view、4 output view – test: 10シーン
評価 • 既存手法(もとのMPI, Soft3D)と比べて SSIMが向上 • 被明示的なlossを使うことで精度向上
Immersive Light Field Video with a Layered Mesh Representation, 2020
Immersive Light Field Video with a Layered Mesh Representation, 2020 • https://www.youtube.com/watch?v=SvRgkXQZIQg
DeepViewとの差分 • 球面状のmulti-plane images、multi-sphere imagesの提案 – 6DoF(70cmまで動ける, 角度は180°まで)の実現 • 大規模サイズのMSI(H×W×3×D=1800×1350×3×160)の効率的な圧縮方 法の提案 – 境界線を検出して面でつなぎ、メッシュを作る • VRデモの実装 – 200MB/sくらいでストリーミングできる • (deep的な差分はほぼなし)
まとめ • Multi-plane Imagesの発想はすごい • 逆問題で逐次最適化したい時、Learned Gradientを使うと良さそう • データドリブンなVR開発はこれからも進みそう