はじめに
arXivにあがっている以下の論文
[1] Q. Shen, et. al. Anything-3D: Towards Single-view Anything Reconstruction in the Wild
のまとめ。
submit先は不明。学生の論文?
github
https://github.com/Anything-of-anything/Anything-3D
概要
- 画像1枚から物体の3Dモデルを復元するしくみで、Anything-3Dという
- 単眼のみならず、あらゆる物体に対してin the wildで、教師なしに学習・推論できるのが特徴
- stable diffusion, BLIP, SAM, Point-E等既存の学習モデルをうまく組み合わせることで、Nerf空間に3Dモデルを形成させる
以下の図は入力画像に対して Anything-3Dを用いた3Dデータ作成例。
左、入力画像と、それをsegmentatinoしたもの。
その右、promptと作成された3Dモデル。
モデル
全体像
入力画像に対するセグメント
入力画像に対してSAM([2])というセグメンテーション・モデルで物体をセグメントする。
正確には、このSAMモデルは内部でpromptを作成し、それに相当する物体をsegmentするらしい(?)。生成したsegmentationのmaskで画像を切り取る
\begin{eqnarray}
M &=& {\rm SAM} (I, p), \\
I' &=& {\rm Affine}(M \odot I;b),
\end{eqnarray}
切り取った物体画像からのprompt生成
BLIPというimg2txtモデルでpromptを生成する。
T = {\rm BLIP} (I'),
ただし、BLIPから出力されるpromptは物体の正確な情報ではない等あるため、以下の2点を用いる。
1)promptは入力部分のみ用いる
2)textual inversion([3])という仕組みを用いる
textual inversion
学習済みdiffusion modelを用いて、promptを最適化する。
具体的には
$e_0 = {\rm EMBEDDING}(T)$:tokenをembeddingしたvector
$\epsilon \sim \mathcal{N}(0, {\bf I})$:正規分布からサンプリングしたノイズ
$I_t = \sqrt{\bar{\alpha}}I' + \sqrt{1 - \bar{\alpha}} {\bf \epsilon}$:ノイズを加えた画像
として、
e^* = {\rm arg}\min_{e} \| \epsilon_{\phi}(I_t, e) - {\bf \epsilon} \|_2^2
として最適化する。つまり、promptが適切であれば、学習済みのdiffusion modelが須くnoiseを取り除けるだろうということで、noiseを最も取り除けるようなpromptを求める。
粗い3Dモデルの作成
学習済みPoint-Eモデルを用いて粗い3Dモデルを作成し、これをdiffusion modelで用いる。
作成した粗い3Dモデルに対し、camera pose $\pi$ でdepth mapを求めたものを diffusion modelの制約として用いる。
P = \mathcal{P}({\rm Point-E}(I'), \pi),
Diffusion modelによる詳細な2D imageの作成
学習済みのdiffusion model(stable diffusion model)を用いて詳細な2D imageを生成する。
入力部分に最適化したpromptを用い、constrainとしてdepth mapをprojectした画像を用いる。depth mapはdepth encoder $E_\rho (\cdot)$ を用いてencodeする。具体的にはCo3D([5])を用いる。
Nerfの更新
カメラposeが π のときに、Nerfでπとしてprojectした画像と、stable diffusionから生成した画像とは一致するはずなので、その差が最小化するようにNerfを更新する。
$\theta$:Nerfのパラメータ
$R_\theta (\pi)$ カメラポーズπでNerfをレンダリングした画像
\nabla_\Theta {\rm L}_{SDS} (\theta, x = R_\theta (\pi )) = \mathbb{E}_{t, p} \left[ \tilde{w}(t) (\epsilon_\phi (x_t, E_\rho (P), e^*) - {\bf \epsilon}) \frac{\partial x}{\partial \theta} \right]
式の導出は拙著こちら
https://qiita.com/masataka46/items/ccfeb89ed20a074dd0ab
の Virtual Multi-view Supervision など参照。
実験と結果
データセット
- SA-1B dataset
in-the-wildの11 millionの画像からなる。この中からセレクトして用いた。
定性的評価
読んだ感想
- 学習済みモデルを上手く組み合わせるという発想は実用的である
- ただ新規性の乏しさ、定量的評価がない点、など考慮すると、学生論文の可能性が高い
reference
[2] lexander Kirillov, Eric Mintun, Nikhila Ravi, Hanzi Mao, Chloe Rolland, Laura Gustafson, Tete Xiao, Spencer White- head, Alexander C. Berg, Wan-Yen Lo, Piotr Dolla ́r, and Ross Girshick. Segment anything. arXiv:2304.02643, 2023.
[3] Rinon Gal, Yuval Alaluf, Yuval Atzmon, Or Patash- nik, Amit H Bermano, Gal Chechik, and Daniel Cohen- Or. An image is worth one word: Personalizing text-to- image generation using textual inversion. arXiv preprint arXiv:2208.01618, 2022.
[4] Alex Nichol, Heewoo Jun, Prafulla Dhariwal, Pamela Mishkin, and Mark Chen. Point-e: A system for generat- ing 3d point clouds from complex prompts. arXiv preprint arXiv:2212.08751, 2022.
[5] Jeremy Reizenstein, Roman Shapovalov, Philipp Henzler, Luca Sbordone, Patrick Labatut, and David Novotny. Com- mon objects in 3d: Large-scale learning and evaluation of real-life 3d category reconstruction. In Proceedings of the IEEE/CVF International Conference on Computer Vision, pages 10901–10911, 2021.