98、Text2Room: Extracting Textured 3D Meshes from 2D Text-to-Image Models
简介
github

利用预训练的2D文本到图像模型来合成来自不同姿势的一系列图像。为了将这些输出提升为一致的3D场景表示,将单目深度估计与文本条件下的绘画模型结合起来,提出了一个连续的对齐策略,迭代地融合场景帧与现有的几何形状,以创建一个无缝网格
实现流程


Iterative 3D Scene Generation
随着时间的推移而生成场景表示网格 M = ( V , C , S ) M=(V,C,S) M=(V,C,S),V——顶点,C——顶点颜色,S——面集合,输入的文本prompts { P t } t = 1 T \{P_t\}^T_{t=1} {Pt}t=1T,相机位姿 { E t } t = 1 T \{ E_t \}^T_{t=1} {Et}t=1T,遵循渲染-精炼-重复模式,对于第 t 代的每一步,首先从一个新的视点渲染当前场景

r 是没有阴影的经典栅格化函数, I t I_t It\是渲染的图像, d t d_t dt 是渲染的深度, M t M_t Mt 图像空间掩码标记没有观察到内容的像素
使用文本到图像模型

在深度对齐中应用单目深度估计器 F d F_d Fd b来绘制未观察到的深度

利用融合方案将新内容 { I ^ t , d ^ t , m t } \{ \hat{I}_t,\hat{d}_t,m_t \} {I^t,d^t,mt} 与现有网格结合起来

Depth Alignment Step
要正确地结合新旧内容,就必须使新旧内容保持一致。换句话说,场景中类似的区域,如墙壁或家具,应该放置在相似的深度
直接使用预测深度进行反向投影会导致3D几何结构中的硬切割和不连续,因为后续视点之间的深度尺度不一致
应用两阶段的深度对齐方法,使用预训练的深度网络(Irondepth: Iterative refinement of single-view depth using surface normal and its uncertainty),将图像中已知部分的真实深度d作为输入,并将预测结果与之对齐 d ^ p = F d ( I , d ) \hat{d}_p=F_d(I,d) d^p=Fd(I,d)
(Infinite nature: Perpetual view generation of natural scenes from a single image) 优化尺度和位移参数,在最小二乘意义上对齐预测和呈现的差异来改进结果

通过 m 屏蔽掉未观察到的像素,提取对齐深度 d ^ = ( y d ^ p + β ) − 1 \hat{d}=(\frac{y}{\hat{d}_p}+\beta)^{-1} d^=(d^py+β)−1,在蒙版边缘应用5 × 5高斯核来平滑 d ^ \hat{d} d^
Mesh Fusion Step
在每一次迭代中插入新的内容 { I ^ t , d ^ t , m t } \{ \hat{I}_t,\hat{d}_t,m_t \} {I^t,d^t,mt} 到场景中,将图像空间像素反向投影到世界空间点云中

K ∈ R 3 x 3 K \in R^{3 x 3} K∈R3x3 是相机位姿参数,W,H是图像宽高。使用简单的三角测量,将图像中的每四个相邻像素{(u, v), (u+1, v), (u, v+1), (u+1, v+1)}形成两个三角形。
估计的深度是有噪声的,这种简单的三角测量会产生拉伸的3D几何形状。
使用两个过滤器来去除拉伸的面
首先,根据边长对面进行过滤。如果任意面边缘的欧几里得距离大于阈值 δ 边缘,则删除该面。其次,根据表面法线与观看方向之间的夹角对面进行过滤

S 是面集合, i 0 , i 1 , i 2 i_0,i_1,i_2 i0,i1,i2 为三角形的顶点指数, δ s n \delta_{sn} δsn为阈值, m ∈ R 3 m \in R^3 m∈R3 是归一化法线, v ∈ R 3 v \in R^3 v∈R3 为世界空间中从相机中心到三角形起始平均像素位置的归一化视角方向,这是避免了从图像中相对较少的像素为网格的大区域创建纹理
最后将新生成的网格补丁和现有的几何形状融合在一起,所有从像素中反向投影到绘制蒙版 m t m_t mt 中的面都与相邻的面缝合在一起,这些面已经是网格的一部分,在 m t m_t mt 的所有边缘上继续三角剖分方案,但使用 m t m_t mt 的现有顶点位置来创建相应的面
Two-Stage Viewpoint Selection
一种两阶段的视点选择策略,该策略从最优位置采样每个下一个摄像机姿态,并随后细化空区域
Generation Stage
如果每个轨迹都从一个具有大多数未观察区域的视点开始,那么生成效果最好。这会生成下一个块的轮廓,同时仍然连接到场景的其余部分
将摄像机位置 T 0 ∈ R 3 T_0∈R^3 T0∈R3 沿注视方向 L ∈ R 3 L∈R^3 L∈R3 进行均匀的平移: T i + 1 = T i − 0.3 L T_{i+1}=T_i−0.3L Ti+1=Ti−0.3L,如果平均渲染深度大于0.1,就停止,或者在10步后丢弃相机,这避免了视图过于接近现有的几何形状
创建封闭的房间布局,通过选择以圆周运动生成下一个块的轨迹,大致以原点为中心。发现,通过相应地设计文本提示,可以阻止文本到图像生成器在不需要的区域生成家具。例如,对于看着地板或天花板的姿势,我们分别选择只包含单词“地板”或“天花板”的文本提示
Completion Stage
由于场景是实时生成的,所以网格中包含了没有被任何相机观察到的孔,通过采样额外的姿势后验完成场景
将场景体素化为密集的均匀单元,在每个单元中随机取样,丢弃那些与现有几何太接近的,为每个单元格选择一个姿态,以查看大多数未观察到的像素,根据所有选择的相机姿势绘制场景
清理绘制蒙版很重要,因为文本到图像生成器可以为大的连接区域生成更好的结果
首先使用经典的绘制算法绘制小的孔,并扩大剩余的孔,移除所有落在扩展区域并且接近渲染深度的面,对场景网格进行泊松曲面重建。这将在完井后关闭任何剩余的井眼,并平滑不连续性。结果是生成的场景的水密网格,可以用经典的栅格化渲染
Result


Limitations
方法允许从任意文本提示生成3D房间几何形状,这些文本提示非常详细并且包含一致的几何形状。然而,方法在某些条件下仍然可能失败。首先,阈值方案可能无法检测到所有拉伸的区域,这可能导致剩余的扭曲。此外,一些孔在第二阶段后可能仍未完全完井,这导致在应用泊松重建后出现过平滑区域。场景表示不分解光线中的材料,光线会在阴影或明亮的灯中烘烤,这是由扩散模型产生的。
相关文章:
98、Text2Room: Extracting Textured 3D Meshes from 2D Text-to-Image Models
简介 github 利用预训练的2D文本到图像模型来合成来自不同姿势的一系列图像。为了将这些输出提升为一致的3D场景表示,将单目深度估计与文本条件下的绘画模型结合起来,提出了一个连续的对齐策略,迭代地融合场景帧与现有的几何形状࿰…...
MySQL 优化器 Index Condition Pushdown下推(ICP)
ICP 测试 准备数据 CREATE TABLE icp (employee_id int(6) NOT NULL AUTO_INCREMENT,first_name varchar(20) DEFAULT NULL,last_name varchar(25) DEFAULT NULL,email varchar(25) DEFAULT NULL,phone_number varchar(20) DEFAULT NULL,PRIMARY KEY (employee_id) );insert i…...
ruoyi 若依框架采用第三方登录
在项目中,前后端分离的若依项目,需要通过统一认证,或者是第三方协带认证信息跳转到本系统的指定页面。需要前后端都做相应的改造,由于第一次实现时已过了很久,再次重写时,发现还是搞了很长时间,…...
dom api
dom的全称为Document Object Model,即文档对象模型.所谓文档就是html页面,对象就是js里的对象,通过这个模型把页面上的元素和js里的对象关联起来. 下面是关于dom api的一些常用方法 1.获取元素 使用querySelector()方法获取一个元素 使用querySelectorAll()方法获取所有元素 当…...
音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十一)
介绍 在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…...
Qt项目打包发布超详细教程
https://blog.csdn.net/qq_45491628/article/details/129091320...
简单递归题
本来不想用递归做的,最后还是用了 题目如下: 洪尼玛有 n 块长度不同的木板,他想用这些木板拼成一个等边三角形的围栏,好将他的草泥马养在这个围栏里面。现在,给你这 n 块木板的长度,洪尼玛想知道他能否拼…...
再生式收音机踩坑记
下载《A Simple Regen Radio for Beginners》这篇文章也有好几年了,一直没有动手,上周末抽空做了一个,结果相当令人沮丧,一个台也收不到,用示波器测量三极管振荡波形,只有在调节再生电位器R2过程中…...
稻谷飘香金融助力——建行江门市分行助力乡村振兴
7月的台山,稻谷飘香。在大耕户李胜业的农田里,金灿灿的稻谷翻起层层稻浪,收割机在稻浪里来回穿梭,割稻、脱粒、装车等工序一气呵成。空气中弥漫着丰收的喜悦。 夏粮迎丰收的背后,是中国建设银行江门市分行(…...
【Pytorch】Visualization of Feature Maps(1)
学习参考来自 CNN可视化Convolutional Featureshttps://github.com/wmn7/ML_Practice/blob/master/2019_05_27/filter_visualizer.ipynb 文章目录 filter 的激活值 filter 的激活值 原理:找一张图片,使得某个 layer 的 filter 的激活值最大,…...
js修改浏览器地址栏里url的方法
1、更新url某一参数的值 function updateQueryStringParameter(uri, key, value) {if (!value) { return uri }var re new RegExp("([?&])" key ".*?(&|$)", "i");var separator uri.indexOf(?) ! -1 ? "&" : &q…...
正则表达式(Java)(韩顺平笔记)
正则表达式(Java) 底层实现 package com.hspedu.RegExp;import java.util.regex.Matcher; import java.util.regex.Pattern;public class RegExp00 {public static void main(String[] args) {String content "1998年12月8日,第二代J…...
LLVM学习笔记(62)
4.4.3.3.2. 指令处理的设置 4.4.3.3.2.1. 目标机器相关设置 除了基类以外,X86TargetLowering构造函数本身也是一个庞然大物,我们必须要分段来看。V7.0做了不小的改动,改进了代码的结构,修改了一些指令的设置。 100 X86Targ…...
解决Spring Boot应用在Kubernetes上健康检查接口返回OUT_OF_SERVICE的问题
现象 在将Spring Boot应用部署到Kubernetes上时,健康检查接口/healthcheck返回的状态为{"status":"OUT_OF_SERVICE","groups":["liveness","readiness"]},而期望的是返回正常的健康状态。值得注意的…...
Java对象逃逸
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、相关知识3.1 逃逸…...
Greenplum的数据库年龄检查处理
概述 Greenplum是基于Postgresql数据库的分布式数据库,而PG数据库在事务及多版本并发控制的实现方式上很特别,采用的是递增事务id的方法,事务id大的事务,认为比较新,反之事务id小,认为比较旧。 事务id的上…...
[HCIE] IPSec-VPN (IKE自动模式)
概念: IKE:因特网密钥交换 实验目标:pc1与pc2互通 步骤1:R1与R3配置默认路由 R1: ip route-static 0.0.0.0 0.0.0.0 12.1.1.2 R2: ip route-static 0.0.0.0 0.0.0.0 23.1.1.2 步骤2:配ACL…...
Qt/QML编程学习之心得:一个Qt工程的学习笔记(九)
这里是关于如何使用Qt Widget开发,而Qt Quick/QML的开发是另一种方式。 1、.pro文件 加CONFIG += c++11,才可以使用Lamda表达式(一般用于connect的内嵌槽函数) 2、QWidget 这是Qt新增加的一个类,基类,窗口类,QMainWindow和QDialog都继承与它。 3、Main函数 QApplicati…...
c++ 课程笔记
105课: cpp文件分为 .h .cpp .cpp 文件 110课:124课 深拷贝 浅拷贝 自建拷贝构造解决浅拷贝释放new后堆区析构函数的问题 (浅拷贝 拷贝内存地址, 释放堆区时 导致源数据 释放时,该地址无数据?而报错) 浅拷贝: 拷贝了对方的值和 堆区内存地址(删除 影响原数据堆区) 深拷贝…...
ELK企业级日志分析平台——ES集群监控
启用xpack认证 官网:https://www.elastic.co/guide/en/elasticsearch/reference/7.6/configuring-tls.html#node-certificates 在elk1上生成证书 [rootelk1 ~]# cd /usr/share/elasticsearch/[rootelk1 elasticsearch]# bin/elasticsearch-certutil ca[rootelk1 ela…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...
JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...
多元隐函数 偏导公式
我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z、 …...
医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor
1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...
CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...
