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…...
real-anime-z Web界面深度解析:7860端口服务的UI功能区与技术栈说明
real-anime-z Web界面深度解析:7860端口服务的UI功能区与技术栈说明 1. 平台概述与技术架构 real-anime-z是一款专为二次元插画创作设计的文生图AI镜像,能够快速生成高质量的动漫风格图像。该镜像集成了先进的AI模型和优化后的Web界面,让用…...
Linux服务器卡死别慌!手把手教你用pstack和strace快速定位进程‘假死’元凶
Linux服务器进程假死排查实战:pstack与strace高阶应用指南 凌晨三点,服务器告警铃声划破寂静。监控大屏上,某个关键服务的响应曲线已经变成一条毫无波动的直线——不是崩溃退出,而是陷入了诡异的"假死"状态。CPU和内存指…...
MySQL 8.0.27安装卡在初始化?别急着重装,先检查这个中文路径/名称的坑
MySQL 8.0.27安装卡在初始化?中文路径/名称的排查与解决方案 最近在Windows环境下安装MySQL 8.0.27时,不少开发者遇到了数据库初始化卡住或报错的问题。错误日志中出现的"瀛欎笉鍧?208-bin.index"这类乱码文件名,往往让新手感到困…...
Xcode 13.3之后,iOS崩溃日志(.ips)符号化,除了symbolicatecrash还能怎么搞?
Xcode 13.3时代:全面掌握iOS崩溃日志符号化的现代方案 当你的应用在用户设备上崩溃时,那种无力感每个开发者都深有体会。特别是当Xcode 13.3突然废弃了我们熟悉的symbolicatecrash工具后,许多经验丰富的iOS开发者突然发现自己站在了技术断层的…...
别再只用@PostConstruct初始化了!SpringBoot中3种替代方案实战对比(含InitializingBean)
别再只用PostConstruct初始化了!SpringBoot中3种替代方案实战对比(含InitializingBean) 在SpringBoot项目中,Bean的初始化是开发过程中不可或缺的一环。很多开发者习惯性地使用PostConstruct注解来完成初始化逻辑,这确…...
C#处理时间戳别再踩坑了!秒与毫秒转换的3个常见错误与最佳实践
C#时间戳处理避坑指南:从UTC混淆到性能优化的实战解决方案 凌晨三点,你盯着屏幕上显示的时间戳数据,发现比预期晚了8小时——这不是时区幻觉,而是C#时间戳处理中典型的UTC陷阱。作为.NET开发者,时间戳与DateTime的转换…...
【紧急预警】Docker 27升级后Volume无法resize?92%团队忽略的daemon.json关键配置项(含v27.0.0–v27.2.1全版本兼容矩阵)
第一章:Docker 27存储卷动态扩容问题的紧急定性与影响评估Docker 27.0.0(2024年9月发布)引入了对本地存储驱动(如 local 和 overlay2)下绑定挂载(bind mount)与命名卷(named volume&…...
避坑指南:STM32驱动LD3320语音模块,SPI通信和中断配置的那些坑我都帮你踩过了
STM32与LD3320语音模块实战:SPI通信与中断配置的深度排坑指南 调试嵌入式语音识别系统时,最令人头疼的莫过于硬件接口的微妙差异和寄存器配置的隐藏陷阱。最近在帮学员排查STM32F4系列与LD3320模块的通信问题时,发现不少开发者都在SPI时序和中…...
LitCAD:免费开源的二维CAD绘图终极指南,15分钟快速上手
LitCAD:免费开源的二维CAD绘图终极指南,15分钟快速上手 【免费下载链接】LitCAD A very simple CAD developed by C#. 项目地址: https://gitcode.com/gh_mirrors/li/LitCAD 在数字化设计领域,专业CAD软件往往价格昂贵且学习曲线陡峭&…...
日志丢失、格式混乱、排查耗时>2小时?27天重构Docker日志架构,实现100%可追溯、零盲区监控
第一章:Docker日志架构重构的痛点与目标在大规模容器化生产环境中,Docker默认的日志驱动(json-file)暴露出显著瓶颈:日志文件无自动轮转、磁盘空间不可控、多容器日志检索低效、缺乏结构化字段支持,且无法与…...
