AIGC43D论文阅读:Dream系列

之前开了一个AIGC43D的合集,但是这个技术实在是更新得太快了,所以还是挑一些重点文章和技术出来额外仔细讲。

Dream系列主要是今年从DreamFusion开始的一系列论文和方法改进,这类模型的主要方法就是通过输入的文本和图像进行多视角图像生成再结合NeRF的思路,进行三维重建,这个方法在DreamFusion里生成的模型text23D效果其实还可以了,但是单视角图像生成的效果还是比较一般的,最大问题就是其他几面很粗糙,正面的模型生成的很好,但是背面侧面的效果就很一般,不知道后续的论文里是否有效果改善呢。

1、DreamFusion: text-to-3D using 2D diffusion

三个月前,我部署了DreamFusion实现了text23D以及图像转3D,打开了新世界的大门,当然那时候我不懂NeRF,也不懂扩散模型,所以没有读论文。

DreamFusion实际上是无监督三维模型生成,它没有现成的三维模型做基础,直接通过文本和图像进行生成,优点就是生成性能很强,什么奇形怪状的都能生成,缺点就是指定性不够了。在github上,大佬结合了几篇论文做出了stable-dreamfusion,根据我本人的使用来说,文本生成三维模型的效果较好,但是如果通过单图像生成则常常会效果不足

GitHub - ashawkey/stable-dreamfusion: Text-to-3D & Image-to-3D & Mesh Exportation with NeRF + Diffusion.

从原理上讲Dreamfusion还是比较简单的,用Imagen将输入的描述文字生成图像,下图右边的过程,然后用NeRF生成三维模型,核心问题就是这中间要如何串起来。

 作者利用Imagen包括后来的此类方法使用SD都是固定参数的,也就是在这一类框架中,文生图模型是拿来即用的,不进行训练。具体流程可见大佬的文章

DreamFusion: text-to-3D using 2D diffusion - 知乎 (zhihu.com)

a. 给定一段输入的文本(以pipeline中的“a DSLR photo of a peacock on a surfboard"为例),并将其送到训练好的Imagen中,此时可以得到该文本所对应的生成图像(上图a)。

b. 另一方面,随机初始化NeRF场,然后在球坐标中随机采样一个相机参数P并在相机周围采样点光源 ,这时我们便可以在相机P下对NeRF场进行渲染(render),从而得到该相机参数P下对应的render图(上图b)。注意,这里render的图像分辨率也是64*64的,从而保证与Imagen的输出保持一致。不同的相机参数P影响了对输入文本的更改,从而控制Imagen的生成过程(此过程是多对5的过程,即不同的相机参数可能对应同一种文本描述)。

c. 通过上面两步,我们得到了Imagen的输出a,NeRF的render结果b。现在要做的是,怎么利用a和b,从而优化NeRF的网络参数,并得到最终预期结果。

d. 具体来说,首先是DM固有的加噪过程。通过不断地往render结果b上加高斯噪声b',最终可以得到纯噪声c。此时对这个纯噪声c执行去噪过程(个人认为这时可以把Imagen当作VAE的解码器),并得到a'。我们知道,DM的去噪过程实际上是在估计噪声,然后估计的噪声和添加的噪声之间求loss。所以a'与加入的高斯噪声b'相减,便有了c'。c'将直接用来更新NeRF的权重,从而使render的结果b更加真实,如此迭代下去。。。便可以得到text-to-3D的效果。

这段流程里,如果清楚DM和Imagen的过程的话,可以总结出两个实现的具体问题,一个是输入文本如何对应相机参数P,这里个人猜测是通过增加视角描述的Prompt,另一个问题就是C'如何能影响到NeRF权重的更新?

作者在这里提出了SDS(Score Distillation Sampling,分数蒸馏采样,重点概念,圈住要考)。

传统的DM的采样过程如上图左边所示,是从随机高斯噪声图像Zt一步一步去噪更新到Z0, 

猜你喜欢

转载自blog.csdn.net/fisherisfish/article/details/131681427