当前位置: 首页 > article >正文

PhyCAGE:符合物理规律的图像到 3D 生成

Paper: Yan H, Zhang M, Li Y, et al. PhyCAGE: Physically Plausible Compositional 3D Asset Generation from a Single Image[J]. arXiv preprint arXiv:2411.18548, 2024.
Introduction: https://wolfball.github.io/phycage/
Code: Unreleased

PhyCAGE 是一种 image-to-3D 方法,完成的任务是保证 3D 物体中的两个组成部分的嵌入方式在物理学上尽可能可信。
在这里插入图片描述

PhyCAGE 的生成过程如下:

  1. 先根据输入图像生成多视角的图像;
  2. 用多视角的图像训练 3D GS 场景。为了保证生成 3D 物体的物理合理性,引入 PSE-SDS 损失函数,使用物理模拟器修正 Gaussians 的位置信息。

在这里插入图片描述

目录

  • 一. Multi-view Generation
  • 二. Multi-view Images to 3D
  • 三. Physical Simulation-Enhanced Optimization

一. Multi-view Generation

输入图像 I I I 包含背景 O 1 O_1 O1 和前景 O 2 O_2 O2,分别对应文本描述 τ 1 \tau_1 τ1 τ 2 \tau_2 τ2。使用 Grounded-SAM 从 I I I 中分割出前景目标 O 2 O_2 O2
{ M 1 , M 2 } = GroundedSAM ⁡ ( I ; τ 1 , τ 2 ) \left\{M_1, M_2\right\}=\operatorname{GroundedSAM}\left(I ; \tau_1, \tau_2\right) {M1,M2}=GroundedSAM(I;τ1,τ2)

然后修复 O 1 O_1 O1 中被 O 2 O_2 O2 遮挡的区域:
I ^ = Inpainting ⁡ ( I ∗ ( ∼ M 2 ) + I noise  ∗ M 2 ; τ 1 ) \hat{I}=\operatorname{Inpainting}\left(I *\left(\sim M_2\right)+I_{\text {noise }} * M_2 ; \tau_1\right) I^=Inpainting(I(M2)+Inoise M2;τ1)

再使用 SyncDreamer 生成 16 个视角的全景和背景图像:
{ I i } i = 1 16 = SyncDreamer ⁡ ( I ) , { I ^ i } i = 1 16 = SyncDreamer ⁡ ( I ^ ) \begin{gathered} \{I_i\}_{i=1}^{16}=\operatorname{SyncDreamer}(I), \\ \{\hat{I}_i\}_{i=1}^{16}=\operatorname{SyncDreamer}(\hat{I}) \end{gathered} {Ii}i=116=SyncDreamer(I),{I^i}i=116=SyncDreamer(I^)

并使用 Grounded-SAM 获取每张全景图 I i I_i Ii 中的语义 mask S i S_i Si,-1 代表背景,1 代表 O 1 O_1 O1,2 代表 O 2 O_2 O2

二. Multi-view Images to 3D

上一步已经获得了多视角的全景 RGB 图像、全景图像的 mask、背景 RGB 图像,现在来重建 3DGS 场景。但由于 Grounded-SAM 分割得到的 mask 并不能保证多视角连续性,因此使用 Part123 根据全景 RGB 图像和 mask 优化一个 SDF 场和语义场以提供几何引导:
{ f , g } = Part123 ⁡ ( { I i , S i } i = 1 16 ) \{f, g\}=\operatorname{Part123}(\left\{I_i, S_i\right\}_{i=1}^{16}) {f,g}=Part123({Ii,Si}i=116)

再使用 Marching Cubes 算法从 SDF 场中提取顶点 V V V,并将其分为 V 1 V_1 V1 V 2 V_2 V2,分别表示背景和前景的顶点。

然后使用背景 RGB 图像 I ^ i \hat{I}_i I^i 重建 GS 场景 G 1 G_1 G1,使用全景 RGB 图像 I i I_i Ii 结合 V 2 V_2 V2 顶点重建 GS 场景 G 2 G_2 G2
G 1 =  GaussianSplatting  ( { I ^ i } i = 1 16 ) , G 2 = GaussianSplatting ⁡ ( { I i } i = 1 16 ; μ ∈ V 2 ) \begin{gathered} G_1=\text { GaussianSplatting }\left(\left\{\hat{I}_i\right\}_{i=1}^{16}\right), \\ G_2=\operatorname{GaussianSplatting}\left(\left\{I_i\right\}_{i=1}^{16} ; \mu \in V_2\right)\\ \end{gathered} G1= GaussianSplatting ({I^i}i=116),G2=GaussianSplatting({Ii}i=116;μV2)

三. Physical Simulation-Enhanced Optimization

这里所说的物理合理性指的就是前景和背景位置关系的合理性,因此只需要优化与位置相关的参数即可:位置 μ \mu μ、放缩矩阵 Σ \Sigma Σ(原文是 S S S)、旋转四元数 q q q,不透明度 α \alpha α 和球谐系数 c c c 直接冻结。其中 μ \mu μ 使用模拟器进行优化, Σ \Sigma Σ q q q 正常使用优化器优化(文中将 Σ \Sigma Σ q q q 记为 t t t)。

优化过程中计算 SDS 损失和图像 RGB 损失:
∇ θ L S D S = E t , ϵ [ w ( t ) ( ϵ ϕ ( I t p ; y , t ) − ϵ ) ∂ I t p ∂ θ ] L Image  = ( 1 − λ 1 ) L 1 ( I c , I ) + λ 1 L S S I M ( I c , I ) L : = L Image  ( θ μ , θ t ) + λ 3 L S D S ( θ μ , θ t ) \nabla_\theta \mathcal{L}_{S D S}=\mathbb{E}_{t, \epsilon}\left[w(t)\left(\epsilon_\phi\left(I_t^p ; y, t\right)-\epsilon\right) \frac{\partial I_t^p}{\partial \theta}\right] \\ \mathcal{L}_{\text {Image }}=\left(1-\lambda_1\right) \mathcal{L}_1\left(I^c, I\right)+\lambda_1 \mathcal{L}_{S S I M}\left(I^c, I\right)\\ \mathcal{L}:=\mathcal{L}_{\text {Image }}\left(\theta_\mu, \theta_t\right)+\lambda_3 \mathcal{L}_{S D S}\left(\theta_\mu, \theta_t\right) θLSDS=Et,ϵ[w(t)(ϵϕ(Itp;y,t)ϵ)θItp]LImage =(1λ1)L1(Ic,I)+λ1LSSIM(Ic,I)L:=LImage (θμ,θt)+λ3LSDS(θμ,θt)

然而,直接优化会导致穿透和伪影,因此将 μ \mu μ 的优化过程交给 MLS-MPM 模拟器,将损失函数关于 μ \mu μ 的梯度作为粒子的速度:
x n + 1 , v n + 1 = MPM ⁡ ( x n , v n , Δ t , ψ ) \mathbf{x}^{n+1}, \mathbf{v}^{n+1}=\operatorname{MPM}\left(\mathbf{x}^n, \mathbf{v}^n, \Delta t, \psi\right) xn+1,vn+1=MPM(xn,vn,Δt,ψ)

在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/512685.html

相关文章:

  • 68,[8] BUUCTF WEB [RoarCTF 2019]Simple Upload(未写完)
  • 图片生成Prompt编写技巧
  • 1.2.神经网络基础
  • 【面试题】JVM部分[2025/1/13 ~ 2025/1/19]
  • PyTorch使用教程(8)-一文了解torchvision
  • C语言:位段
  • 思维的进化:从链式推理到元链式推理的算法探秘
  • go语言两个协程goroutine交替打印1-100
  • 解决用 rm 报bash: /usr/bin/rm: Argument list too long错
  • Javascript 将页面缓存存储到 IndexedDB
  • BH1750使用程序
  • 基于SpringBoot和PostGIS的各国及所属机场信息检索及可视化实现
  • Debian常用命令
  • C 语言雏启:擘画代码乾坤,谛观编程奥宇之初瞰
  • Linux之网络套接字
  • C语言/C++——递归、递推、动态规划
  • 各语言镜像配置汇总
  • Unity中用触发器模拟碰撞效果
  • 为什么相关性不是因果关系?人工智能中的因果推理探秘
  • 【深度学习】利用Java DL4J 训练金融投资组合模型
  • 【漫话机器学习系列】056.F1值(F1 score)
  • 前端——JS
  • STM32 FreeRTOS任务通知
  • C++设计新思维:泛型编程与设计模式之应用学习笔记
  • WebSocket 和 Socket 的区别
  • 谈一谈前端构建工具的本地代理配置(Webpack与Vite)