はじめに
CVPR2024より以下の論文
[1] X. Kong, et. al. "EscherNet: A Generative Model for Scalable View Synthesis". CVPR2024
のまとめ
project page
CVF Open Access
github
一部書きかけ
はじめに
- 対象物に対する1枚もしくは複数枚の参照画像から、その対象物に対して別の角度・位置から見た画像を生成する
- 学習データには無い、初めての対象物に対しても生成可能(zero-shoto)
- 既存手法に比べて精度よい(角度・位置の条件付き)画像生成を実現するため、新たにカメラ・パラメータのencoding方法を開発した
- 推論時には参照画像とそのカメラパラメータ、及び生成する画像のカメラパラメータが必要
以下の例では左のピンク色の枠が参照画像、右の青い枠の画像が新たに生成した画像。
最上段は参照画像1枚から任意の視点の画像を生成している。最下段は4枚の参照画像から物体の背面まで正確に生成している。
既存の3D表現との違い
以下は既存の3D表現や別視点生成モデルとの違いを端的に表した図。
左上:点群の3D表現
中央上:voxelの3D表現
右上:隠間数による3D表現
左下:NeRFによる3D表現
中央下は Zero-1-to-3(いわゆるzero123)モデル。今回の仕組みに似ているが、1枚の参照画像 ${\bf X}^R$ と出力する別視点画像とのカメラパラメータの差分 $\Delta{\bf P}$ から、別視点の画像 ${\bf X}^T$ を1枚生成する。
右下は本手法 EscherNet。N枚の参照画像 ${\bf X}^R_{1:N}$ とそのカメラパラメータ ${\bf P}^R_{1:N}$ 、出力するM個の視点に対応するカメラパラメータ ${\bf P}^T_{1:M}$ から対応する画像 ${\bf X}^T_{1:M}$ を生成する。
ニューラルネットワークのアーキテクチャ
以下がNNのアーキテクチャの図。
左側2つが全体的な部分。右側2つはモジュールの詳細。
参照画像のencoding
最左では ConvNext v2 tinyを使って参照画像をencodeする。
一般的なstable diffusionモデルはCLIPで画像をencodeするが、CLIPでは画像の詳細部分の特徴量を表現しにくいらしい。Convnextはその点優れているとのこと。
本 EscherNetでは参照画像が N 枚と任意なのが特徴的だが、batchを1と考えると [N, H, W, C]をreshapeして [N, HW, C]とする。Nの次元はProjectionで1つにされる(?)。
これをのちに cross-attention blockに入力する。
stable-diffusionのUNet全体
図中、左から2番目でstable-diffusionのUNetを用いて画像を生成する。
self-attention blockではカメラパラメータをconditionとして与える。cross attention blockではカメラパラメータと参照画像をconditionとして与える。
cross attention block
図中、右から2つ目。stable diffusionと同様に参照画像をencodeしたものをkey, valueとして、cross attentionする。
M個の視点の画像を生成するのでMの次元が加わっている。
cross attention内の行列演算
本手法の特徴的な部分。カメラパラメータを使用する。
camera positional encoding
本手法の特徴的な部分。
書きかけ
学習方法
Objaverse-1.0 datasetを用いてモデル(UNet部分)を学習させる。