【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.mzph.cn/diannao/63286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机LCD分区刷新技术介绍

分区刷新也称为分区变频,LCD分区刷新功能的目的是将屏幕分为上下半区,分区显示不同帧率,上方区块High Frame Rate,下方区块Low Frame Rate。使用者可以动态自定义上方高刷显示区的结尾位置。 当前的智能手机屏幕上,显示…

NLP算法具备技能

摘要:好久不看理论,最近把自己学过以及用到过的东西都列了出来,主要是这个大纲体系,详细的内容部分是使用LLM来辅助编写的。 一、大模型 1.1 常用大模型 1.1.1 Qwen ‌Qwen大模型‌是由阿里巴巴开发的系列大语言模型&#xff…

学习日志022 -- python事件机制

作业: 1】思维导图 2】完成闹钟 main.py import sysfrom PySide6.QtCore import QTimerEvent, QTime,Qt from PySide6.QtGui import QMovie,QMouseEvent from PySide6.QtWidgets import QApplication, QWidget from Form import Ui_Formclass MyWidget(Ui_Form,Q…

服务器被ping的风险,如何开启和禁止ping?

允许服务器被ping(即响应ICMP回显请求)有其风险和好处。允许ping的主要好处是它可以帮助网络管理员快速检查服务器的连通性。然而,这也可能带来一些安全风险,例如: 暴露信息:响应ping请求可以让攻击者知道…

JAVAWeb中的Servlet学习

一 Servlet简介 1.1动态资源和静态资源 静态资源 无需在程序运行时通过代码运行生成的资源,在程序运行之前就写好的资源.例如:html css js img ,音频文件和视频文件 动态资源 需要在程序运行时通过代码运行生成的资源,在程序运行之前无法确定的数据,运行时动态生成,例如Servle…

重生在我在21世纪学C++—赋值操作符、类型转换、单目操作符

一、赋值操作符 在变量创建的时候给一个初始值叫初始化。在变量创建好后,再给⼀个值,这叫赋值。 int a 100 ; //这叫初始化 a 200 ; //这叫赋值, 就是赋值操作符 赋值操作符 是⼀个随时可以给变量(不能是常…

03、Node.js安装及环境配置

1.下载node.js 下载地址:Node.js 2.安装 2.1 自定义安装路径(可以选择默认) 下图根据本身的需要进行,我选择了默认Node.js runtime,然后Next: Node.js runtime :表示运行环境 npm package mana…

【网络安全设备系列】1、防火墙

0x00 前言 最近由于工作原因,需要详细如今各类网络安全设备,所以开了此系列文章,希望通过对每个网络安全设备进行整理总结,来详细了解各类网络安全设备作用功能以及实现原理、部署配置方法等。 0x01 定义:防火墙指的…

使用Python3 连接操作 OceanBase数据库

注:使用Python3 连接 OceanBase数据库,可通过安装 PyMySQL驱动包来实现。 本次测试是在一台安装部署OBD的OceanBase 测试linux服务器上,通过python来远程操作OceanBase数据库。 一、Linux服务器通过Python3连接OceanBase数据库 1.1 安装pyth…

STM32改写printf输出到串口需要注意的问题

int fputc(int ch, FILE *f) {while ((USART1->SR & 0X40) 0); /* 等待上一个字符发送完成 */USART1->DR (uint8_t)ch; /* 将要发送的字符 ch 写入到DR寄存器 */return ch; …

【Java】反射简介

框架的核心和架构师的核心 反射和代理是重中之重 反射 反射的作用 在运行的时候由代码获取类的信息 三种获取类信息的方式: 对象.getClass()Class.forName("类的路径")类.class Class :一个用来存储类信息的类 获取类信息是获取的整体的…

Qt入门8——Qt文件

1. Qt文件概述 文件操作是应用程序必不可少的部分。Qt作为⼀个通用开发库,提供了跨平台的文件操作能力。Qt 提供了很多关于文件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件复制或重命名等。 2. 输入输出设备类 在…

常量变量和一些运算符

3.4 变量 常量:!final关键字 final修饰基本类型不可以第二次赋值final修饰的引用类型不可以第二次改变指向final修饰的类不可以被继承final修饰的方法不可以被重写final防止指令重排序,遏制流水线性能优化,保障多线程并发场景下…

C++ 非变异算法

非变异算法总结与分析 1. 什么是非变异算法 非变异算法是指那些不会改变容器内容的算法。这些算法主要用于查询、计数和比较等操作,确保在操作过程中容器的状态保持不变。非变异算法的优势在于它们可以安全地在不改变数据的情况下进行数据处理。 2. 四类函数讲解…

阿里云:aliyun-cli和ali-instance-cli

概念: 这篇文章只是来澄清一下这俩“cli"之间的区别和联系: aliyun cli 和 ali-instance-cli 都是阿里云提供的命令行工具,但它们的功能和使用场景有所不同。 1. aliyun cli 是一个通用的阿里云命令行接口工具,它允许用户…

opencv Mat To Heif

高效率图像文件格式(英语:High Efficiency Image File Format, HEIF;也称高效图像文件格式)是一个用于单张图像或图像序列的文件格式。它由运动图像专家组(MPEG)开发,并在MPEG-H Part 12&#x…

内存管理面试常问

为什么要有虚拟内存? 虚拟内存 如果你是电⼦相关专业的,肯定在⼤学⾥捣⿎过单⽚机。 单⽚机是没有操作系统的,所以每次写完代码,都需要借助⼯具把程序烧录进去,这样程序才能跑起来。 另外, 单⽚机的 CPU …

PostgreSQL DISTINCT 关键字的使用与优化

PostgreSQL DISTINCT 关键字的使用与优化 PostgreSQL 是一种功能强大的开源对象关系数据库管理系统,广泛用于各种应用场景。在处理数据库查询时,我们经常需要从表中检索唯一的记录集合,这时就会用到 DISTINCT 关键字。本文将详细介绍 PostgreSQL 中 DISTINCT 关键字的使用方…

LSM Tree 底层设计理念

场景:设计一个海量读写的的kv数据库,优先保证写入速度,但是读取速度也不能很慢 因为海量数据存储,不能使用内存,得存到文件里。 Q:对已经落盘的文件,怎么根据key修改value A:读取文件…

Debezium日常分享系列之:Debezium Engine

Debezium日常分享系列之:Debezium Engine 依赖打包项目在代码中输出消息格式消息转换消息转换谓词高级记录使用引擎属性异步引擎属性数据库模式历史属性处理故障 Debezium连接器通常通过部署到Kafka Connect服务来运行,并配置一个或多个连接器来监视上游…