本文主要是介绍论文带读——RenderDiffusion: Image Diffusion for 3D Reconstruction, Inpainting and Generation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
RenderDiffusion: Image Diffusion for 3D Reconstruction, Inpainting and Generation
————YssssMikey
Tips: 我会基本上几天更新一篇论文引读,一般是AIGC模型——3D+Diffusion方向每日在Arxiv上新发布的最新Paper来导读,喜欢支持的伙伴可以支持关注点赞哦!!对于文章中可能出现的错误和建议可以在评论区打出(本人也只是刚入AIGC方向的小朋友)
Summary: 作为3D生成和推理的第一个3D-aware 1图像扩散模型(接受单目二维监督训练),将三维结构引入到传统的2D diffusion中,将decoder的架构修改为把有噪声的输入图像在去噪步骤中编码为场景的3D表示,然后该场景通过体积渲染获得去噪后的输出图像(2D)。目的是产生3D场景一致性的归纳偏差
-
Monocular 3d Reconstruction
-
3D-aware inpainting——允许2d inpainting 来编辑3d场景
-
Unconditional generation
Resource: challenges in 3d generation & understanding
-
显示3d表示(voxels),导致大量内存需求并影响收敛速度
-
3d 数据集数量级少
Method:
显式潜在3D表示的去噪架构——在每个去噪步骤中生成并渲染一个场景的中间3D表示,可以在扩散过程中有一个强归纳结构
-
只使用2D图像训练且无明确的3D监督
-
潜在的3D表示合并在denoiser中,产生一种归纳偏差
Latent 3D structure:
-
decoder(由noise image创建)
-
volumetric renderer(将3d表示 渲染回 →2d denoised image)2
优势:
- 避免了体积数据的立方内存增长(直接处理2d,而无需3d监督)
-
Model
Architecture overview:
上图为模型总体的体系结构
-
对有噪声的输入图像应用到 g θ g_\theta gθ ,逐步去噪生成图像
-
去噪器 g θ g_\theta gθ 以三平面表示(P)
The description of P:
- noise image→encoder( e ϕ e_\phi eϕ)→P→MLP( s ϕ s_\phi sϕ)将任意采样点的三平面特征转换成→颜色&密度→去噪的输出图像(体积渲染回denoised image)
-
Image diffusion model
基本流程和DDPM一致,有区别的是去噪器 g θ g_\theta gθ 不是来预测噪声( x t − x 0 x_t-x_0 xt−x0) 而是来预测 x 0 x_0 x0,因此Train Loss为如下:
当训练完成,在生成阶段时,模型 g θ g_\theta gθ 就可将 μ t \mu_t μt近似与如下:
-
3D-Aware Denoiser
x t x_t xt→ g θ g_\theta gθ→ x 0 x_0 x0
Novel decoder structure:引入潜在的3D表示,更改decoder的体系结构,以下是加入的额外两个组件
-
triplane encoder e ϕ e_\phi eϕ 三面编码器:使用摄像机视图 v 构成的输入图像 x t x_t xt →3d三面表示
-
triplane renderer r ψ r_\psi rψ 三面渲染器:将3d三面表示→渲染回去噪图像 x 0 x_0 x0
-
- Triplane representation:
- 分解3D特征网格:三平面表示P 将一个完整的3D特征网格分解为三个 (沿三个坐标平面放置的2D feature map[每个feature map的size : N×N× n f n_f nf , n f n_f nf 是feature的通道数])
- P[p]——对P双线性抽样:将任意给定的3D点p****投影到每个坐标平面,对每个特征图作双线性插值并将三个结果相加,最后得到一个size为 n f n_f nf 的单特征向量 - Triplane encoder:
- e ϕ e_\phi eϕ 将M×M×3的输入图像 x t x_t xt →N×N×3 n f n_f nf 的三平面表示(N≥M)
- U-Net体系结构作为basis,但在三平面大小的输出 feature maps中添加额外的层(未跳过连接)
- Triplane renderer:
- r ψ r_\psi rψ 使用上述的三平面特征进行体渲染,输出M×M×3的图像 x t − 1 x_{t-1} xt−1
- 对每个3D采样点,沿着从图像投射的射线得到density **γ **and color c:
( γ , c ) = s ψ ( p , P [ p ] ) (\gamma, \mathbf{c})=s_{\psi}(\mathbf{p}, \mathbf{P}[\mathbf{p}]) (γ,c)=sψ(p,P[p])
像素的最终颜色是通过沿着射线集成density γ and color c产生的(使用与MipNeRF相同的显式体绘制方法)
使用NERF的两次重要性采样:
- 第一次传递使用分层抽样,沿着每条射线放置样本
- 对第一次传递的结果进行抽样
-
3D Reconstruction
tr: [forward process steps tr<T] num of 重建输入图像 x 0 x_0 x0 3D场景的正向加噪step
tr的选择是需要在重建保真度和泛化性(generalization to out-of-distribution) 进行权衡
-
tr=0 :输入图像不添加噪声,3D重建尽可能再现输入图像的场景
-
tr越大,输入图像分布越不均衡,去噪器可以移动输入图像学习分布(这样处理的结果是降低了重建保真度,因为添加的噪声从输入图像中删除了部分细节,去噪器用生成的内容进行了填补)
-
Conclusion
-
第一个可以利用posed 2D-images 而非3D监督的3D扩散模型
-
新的去噪架构:triplane渲染模型,加强了归纳偏差,产生3D场景一致性
-
使用情景:
-
2d image →3d 场景
-
2d inpainting →3d编辑
-
3d场景生成
-
-
局限性:
-
要求训练图像有已知的相机参数
-
三平面需要被放置到一个全局坐标系中,限制了跨对象放置的泛化
以上两个问题作者提出可以通过估计相机参数和对象bounding box来缓解 或 在以对象为中心的坐标系中work.
未来可以朝着组合性和多个对象生成场景发展
-
-
本文的encoder模块可以从注入有关3D场景结构信息(该信息可以通过跳跃连接将图像中的区域连接到三平面中相应的区域)得到提升
-
前景:
-
未来可以朝着组合性和多个对象生成场景发展
-
支持对象编辑和材料编辑,使之成为效果更好的3D-Aware 2d图像编辑workflow
-
3D理解的任务:视图一致性3D生成 & 单视图对象重建 ↩︎
训练过程 ↩︎
这篇关于论文带读——RenderDiffusion: Image Diffusion for 3D Reconstruction, Inpainting and Generation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!