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

【NIPS2024】Unique3D:从单张图像高效生成高质量的3D网格

背景(现有方法的不足):

基于Score Distillation Sampling (SDS)的方法:从大型二维扩散模型中提取3D知识,生成多样化的3D结果,但存在每个案例长时间优化问题/不一致问题。
目前通过微调多视角扩散模型或训练快速前馈模型解决上述问题,但它们仍存在一致性问题和分辨率限制,无法实现复杂的几何形状和精细纹理。

贡献:

Uniique3D:
一个多视角扩散模型+对应的法线扩散模型生成带有法线图的多视角图像;
一个多级放大过程来逐步提高生成的分辨率;
ISOMER即时一致网格重建算法将颜色和几何先验整合到网格结果中。
在这里插入图片描述

模型结构:

高分辨率多视角生成
并非从零开始训练,而使用Stable Diffusion[53]的预训练权重进行初始化,并编码多视角依赖关系,对其进行微调,以获得一个能够从单张野外图像生成四张正交视图图像(分辨率为256)的多视角扩散模型。
对多视角感知ControlNet[54]进行微调,以提高图像分辨率。
法线图预测:仅依靠纯RGB图像很难重建正确的几何形状。为了有效捕捉目标3D形状的丰富表面细节,我们微调了法线扩散模型,来预测与多视角彩色图像对应的法线图。
即时一致网格重建算法(ISOMER)

三个主要步骤:
估计3D对象的粗略拓扑结构并直接生成初始网格;
采用由粗到精的策略进一步逼近目标形状;
显式处理多视角之间的不一致性,重建高保真且复杂的细节。整个网格重建过程不超过10秒。

**初始网格估计:**基于网格的重建方法[60,61]在优化过程中难以改变拓扑连接性,这要求在初始化时正确的拓扑构建。整合正视图的法线图,通过积分公式获取深度图:
在这里插入图片描述
积分之前对法线图进行随机旋转,重复多次,然后利用这些积分的平均值来计算深度,提高可靠性。

**由粗到精的网格优化:**迭代优化网格模型以最小化损失函数。包括基于掩码的损失和基于法线的损失。最终的损失由两者加和而成。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为了应对在有限视图法线监督下可能出现的表面塌陷问题(如图3-(b)所示),我们在每一步中采用一种称为“扩展”的正则化方法。每个顶点沿着其法线方向移动一小段距离,类似于权重衰减。

**显示目标优化:**为了应对多视角不一致性和几何细化,需要找到一个更合适的优化目标。由于单视图监督下,虽然无法重建完整的模型,但可见区域内的网格形状可以满足监督要求,并且具备高度的细节结构,基于此提出为每个顶点分配一个独特的优化目标,称为ExplicitTarget。
在这里插入图片描述

它是一个网格中顶点集合到颜色集合的映射函数。顶点 v的结果通过监督视图的加权和计算,权重由余弦角度的平方决定。(这是因为投影面积与余弦值成正比,且预测准确度也与余弦值正相关)
目标损失函数定义为:
在这里插入图片描述

衡量网格渲染结果和原始渲染的差异,M代表了不同的视角点。

实验:

数据集:Objaverse数据集的一个子集。所有图像都以2048×2048像素的分辨率进行渲染,对每个物体的水平方向渲染了八个正交投影。
在这里插入图片描述

图像生成:初始级别使用了Stable Diffusion Image Variations Model[53]的权重进行初始化,而后续级别则使用经过ControlNet-Tile[54]微调的放大版本。最后阶段使用了预训练的Real-ESRGAN模型[55]。法线图预测的初始阶段同样从上述Stable Diffusion Image Variations模型初始化。

定性/定量对比:在 GSO[69] 数据集上计算了 PSNR、SSIM、LPIPSandClip-Similarity[68]、ChamferDistance(CD)、VolumeIoUandF 分数的度量。
在这里插入图片描述

消融实验:

比较了有无ExplicitTarget和扩展正则化的样本,验证了ET对于几何重建效果的改善以及扩展正则化对于塌陷现象的避免。
在这里插入图片描述

局限性和未来工作:

多视角预测模型对于倾斜或非透视输入的预测可能不够理想。
当前的几何着色算法尚不支持纹理贴图。
未来计划通过在更大规模且多样化的数据集上进行训练,来增强多视角预测模型的鲁棒性。

http://www.lryc.cn/news/498447.html

相关文章:

  • 使用Kubernetes部署Spring Boot项目
  • 基于VTX356语音识别合成芯片的智能语音交互闹钟方案
  • git将一个项目的文件放到另一个项目的文件夹下
  • Cannon.js 从入门到精通
  • 深入理解 TCP 标志位(TCP Flags)
  • K8S,StatefulSet
  • JavaScript动态网络爬取:深入解析与实践指南
  • MySql:Centos7安装MySql
  • Vector软件CANdb++的信号起始位Bug
  • elasticsearch-7.14.0集群部署+kibana
  • 如何给GitHub的开源项目贡献PR
  • 神经网络-CNN
  • 4.Vue-------this.$set()的使用和详细过程-------vue知识积累
  • 服务器上的常见Linux命令教程
  • 汽车总线协议分析-FlexRay总线
  • Java 集合:强大的数据管理工具
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十九,ffmpeg复用
  • python之Django连接数据库
  • 基于Springboot+Vue的在线答题闯关系统
  • 声音克隆GPT-SoVITS
  • 【STM32 Modbus编程】-作为主设备读取保持/输入寄存器
  • 前端开发入门指南Day 17:TypeScript高级类型(泛型,类型守卫,Partial<T>和 Required<T>等)
  • flex布局容易忽略的角色作用
  • 如何开发高效的企业内训APP?教育培训系统源码搭建实战详解
  • 【软考网工笔记】网络基础理论——传输层
  • 如何预防服务器后台爆破攻击
  • CMake笔记之在CMakeLists.txt文件中开启Debug模式
  • C++编程:模拟实现CyberRT的DataVisitor和DataDispatcher
  • 【Flutter】WillPopScope组件-监听物理返回键事件自定义返回事件
  • 【sqlserver】mssql 批量加载数据文件 bulk copy使用