はじめに
CVPR2021より以下の論文
[1] S. Peng, et. al. Neural Body: Implicit Neural Representations with Structured Latent Codes for Novel View Synthesis of Dynamic Humans. CVPR2021
のまとめ
-
github
https://github.com/zju3dv/neuralbody
git clone して学習させるまで一苦労
概要
- 複数視点からの画像から人の3次元再構成を行うしくみ
- 人のポリゴンモデル SMPL を用いる
- フレームにわたってパラメータを共有するところが特長的
手法
全体像
外観すると、複数方向の画像からSMPLモデルの頂点群を生成し、それをvoxel的に拡散させる。そこから線形な内挿で点をサンプリングし、そこにおける密度とカラーを推定する。それらから画像上にレンダリングする。
$c \in N_c$: カメラのindex。
$t\in N_t$: フレームのindex。
として、ビデオの各フレームを
\{ \mathcal{I}^c_t | c = 1, \ldots, N_c, t=1, \ldots, N_t \}
とする。
step1 Structured latent codeの作成
まずあるフレーム t の複数カメラからの画像を用いて、[2]のSMPLモデルを推定する。以下は複数カメラの様子。(著者らのproject page[4]より)
この推定には[3]のTotal Captureの仕組みを使っている。以下は[3]のFigure2。
論文ざっくりしか読んで無いので推測だが、複数カメラからの画像から、まず(a)のキーポイント、(b)のpoint cloudを推定する。次にそれらから最適化手法でSMPLを推定する。ちなみにこの論文の最大のテーマはbodyのみならず、手や顔の詳細なモデルを同時に推定するところだが、本論文[1]ではbodyのみ利用している(ハズ)。
この推定によってSMPLのパラメータ($S_t$)であるshape, pose, rootのtransformが求まる。
SMPLモデルにおいてはメッシュの頂点は6,890個存在する。
\mathcal{Z} = \{ {\bf \mathcal{z}}_1, {\bf \mathcal{z}}_2, \cdots, {\bf \mathcal{z}}_{6890} \}
これらはpose, shape, transformからの演算で求まる。
以上をまとめると、こんな感じか。
step2 code diffusion
上記で生成されたSMPLモデルのポリゴン頂点群を 5mm x 5mm x 5mm voxelに変換する。voxelの中に頂点があればその値、複数あれば平均値とする処理を行う。
そうすると、かなりスパースなものができあがるので、3D系のconv層でたたみ込んで値を拡散させる。このときにSparse-convolutionを用いる。
たたみ込んだvoxelはlatent code $\psi ({\rm x}, \mathcal{Z}, S_t)$ を持つようにする。図にするとこんな感じか。
空間上の任意の点におけるlatent codeの値は3次元で線形に内挿して求める。
step3 Density and color regression
latent code $\psi ({\rm x}, \mathcal{Z}, S_t)$ から密度とカラーの推定をニューラルネットで行う。
まず密度は4層のMLP $M_{\sigma}$ を使う。
\sigma_t ({\rm \bf x}) = M_{\sigma} (\psi ({\rm \bf x}, \mathcal{Z}, S_t)) \tag{1}
$\mathcal{r}_{\rm \bf d} ({\rm \bf d})$: directionをエンコードしたもの
$\mathcal{r}_{\rm \bf x} ({\rm \bf x})$: 位置をエンコードしたもの
${l}_t$: フレーム t 特有の情報を128次元にエンコードしたもの
として、カラーは2層のMLP $M_{c}$ を使う。
{\rm \bf c}_t ({\rm \bf x}) = M_c (\psi ({\rm \bf x}, \mathcal{Z}, S_t), \mathcal{r}_{\rm \bf d} ({\rm \bf d}), \mathcal{r}_{\rm \bf x} ({\rm \bf x}), l_t) \tag{2}
step4 rendering
NeRF論文と同様に、サンプリングしてレンダリングする。
\begin{eqnarray}
\hat{C}_t({\rm r}) &=& \sum^{N_i}_{k=1} T_k (1- \exp{(-\sigma_t({\rm \bf x}_k)\delta_k)) {\rm \bf c}_t ({\rm \bf x}_k)} \tag{3} \\
&where& \ T_k = \exp{\left(- \sum^{k-1}_{j-1} \sigma_t({\rm \bf x}_j) \delta_j \right)} \tag{4}
\end{eqnarray}
各変数はNeRF論文と同様。
loss
lossはレンダリングした画像上のRGB値に関するもののみ。
L = \sum_{{\rm \bf r} \in \mathcal{R}} \| \hat{C} ( {\rm \bf r}) - C ({\rm \bf r}) \|^2_2 \tag{6}
ZJU-MoCap datasetを用いた実験と結果
ZJU-Mocap datasetとは
著者らは新たに ZJU-MoCap datasetというものを作成した。これの概要は以下
- 9つのビデオからなり、それぞれ人がパンチやキックをしたり、ぐるぐる回ったり、手を振り回したりと、種々の動作をしている
- これを21個のビデオカメラから同時に撮影している
- 21個のカメラのうちtrainigとして4つを用い、残りをtest用としている
- 各ビデオは60から300フレーム
このデータは著者らのgithubページから辿っていくとフリーで入手できる。
メトリクス
定量的評価のメトリクスは以下の2つ
- peak signal-to-noise ratio(PSNR)
- structural similarity index(SSIM)
比較対象
定量的評価の比較対象は以下のモデル
- Neural Volumes [5]
- Neural Textures [6]
- NHR [7]
定量的評価
PSNR, SSIMで上記3モデルと比較した結果は以下。
各rowはビデオの行動。どの行動においてもPSNR, SSIMいずれも最も精度がよい。
定性的評価
test dataに対する定性的表以下は以下。比較対象は上記3モデル+NeRF。
いいとこのtest dataを引っ張ってきたにせよ、これを見る限り、本手法が最も精度がよい。
3D reconstructionの定性的評価
以下の手法と比較した。
- COLMAP
- DVR
- PIFuHD
PIFuHDに関しては拙著
https://qiita.com/masataka46/items/d717a9d57eaa44ea197d
など参照。
1と2はそもそも人の形状がまともに再構築できなかった。よって以下の図ではPIFuHDとの比較のみ。
本手法では推定したneural radiance fieldsをvoxel化し、それをmarching cubes algorithmでメッシュ化している。
この図を見る限り、PIFuHDよりも精度がよさげ。
reference
[2] Matthew Loper, Naureen Mahmood, Javier Romero, Gerard Pons-Moll, and Michael J Black. Smpl: A skinned multi-person linear model. ACM TOG, 2015.
[3] Hanbyul Joo, Tomas Simon, and Yaser Sheikh. Total cap- ture: A 3d deformation model for tracking faces, hands, and bodies. In CVPR, 2018.
[4] https://zju3dv.github.io/neuralbody/
[5] Stephen Lombardi, Tomas Simon, Jason Saragih, Gabriel Schwartz, Andreas Lehrmann, and Yaser Sheikh. Neural volumes: Learning dynamic renderable volumes from images.In SIGGRAPH, 2019.
[6] Justus Thies, Michael Zollho ̈fer, and Matthias Nießner. Deferred neural rendering: Image synthesis using neural textures. ACM TOG, 2019.
[7] Minye Wu, Yuehao Wang, Qiang Hu, and Jingyi Yu. Multi-view neural human rendering. In CVPR, 2020.