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

97、Text2NeRF: Text-Driven 3D Scene Generation with Neural Radiance Fields

简介

论文地址
在这里插入图片描述
使用扩散模型来推断文本相关图像作为内容先验,并使用单目深度估计方法来提供几何先验,并引入了一种渐进的场景绘制和更新策略,保证不同视图之间纹理和几何的一致性

实现流程

在这里插入图片描述
简单而言:

文本-图片扩散模型生成一张初始图片 I 0 I_0 I0,将 I 0 I_0 I0扭曲,得到同一z平面的多个图片,也就是 Support set S 0 S_0 S0,注意,这里的 S 0 S_0 S0是由 I 0 I_0 I0扭曲得到,所以存在很多空白,但是我们可以根据 S 0 S_0 S0重建初始的NeRF模型。

利用初始NeRF模型渲染新视角图片,这是残缺的,但是可以通过扩散模型来补全,注意,为了保持场景的一致性,视角从 I 0 I_0 I0旁边小幅度的偏移,让扩散模型尽量多的从 I 0 I_0 I0中获取信息,然后就可以更新NeRF模型了。

由于图像扭曲的影响,必然导致图像尺度差距和距离差距(体现在空间点深度在不同视角存在差异的情况)。为此,采用了深度对齐策略。

Support Set

采用了 DIBR(Depth-image-based rendering (dibr), compression, and transmission for a new approach on 3d-tv) 方法生成 S 0 S_0 S0

具体而言为:
从扩散模型中获得初始图片 I 0 I_0 I0 ,再通过深度预测网络获得深度 D 0 D_0 D0,对于 I − 0 I-0 I0的每个像素q 和其深度 z,利用下述公式进行转换,得到 S 0 S_0 S0
在这里插入图片描述
K K K P i P_i Pi 是视图 i 中的固有矩阵和相机姿态。

为了在大视野范围内生成3D场景,将相机位置设置在辐射场内部,并使相机向外看,但是该方法不能像其他设置相机查看内部的方法那样生成单独的3D对象。

以当前摄像机位置 P 0 P_0 P0 为中心,对其半径为 r 的环绕圆,生成有相同的 z 坐标,统一采样 n 点作为摄像机位置,并使用与当前视图相同的摄像机方向来生成支持集中的翘曲视图,一般 r=0.2,n=8,偏移方向一般为 上、下、左、右、上左、下左、上右和下右。

这时候就可以开始重建初始三维模型了。

Text-Driven Inpainting

除了初始视图 I 0 I_0 I0 之外的渲染结果不可避免地会有内容缺,这时候就可以使利用基于预训练扩散模型的文本驱动的补图方法了。

首先,渲染一个新视角 P 1 P_1 P1 图像 I k R I^R_k IkR,通过对比 I 0 I_0 I0扭曲到 P 1 P_1 P1后的图像和 I k R I^R_k IkR,我们得到了掩膜 M k M_k Mk。然后就丢给扩散模型,这样就扩展了场景信息。
在这里插入图片描述
但是呢,扩散模型的生成质量不一定很好,因此采用多次绘制过程,通过CLIP的图像编码器评估,比较补全的图像与初始图像的差距,选出最优的。论文采用30个候选。
在这里插入图片描述

Depth Alignment

补全的图片与初始的图片在重叠部分会存在深度冲突。体现为:
在这里插入图片描述
尺度差距: 图像中沙发和墙壁对应的空间点的距离应该是唯一的,但是在不同视图可能存在差异
距离差距: 不同视图拟合的空间点不一致

论文通过补偿平均比例尺和距离差异来全局对齐这两个深度图

对应渲染图像 和补全的图像,表示为 { ( x j R , x j E ) } j = 1 M \{(x^R_j,x^E_j)\}^M_{j=1} {(xjR,xjE)}j=1M,计算平均尺度分数 s 和深度偏移 δ 来近似平均尺度和距离差异

在这里插入图片描述

缩放后的点 x ^ j E = s ⋅ x j E \hat{x}^E_j = s \cdot x^E_j x^jE=sxjE ,z(x) 表示预测深度

这里定义全局深度 D k g l o b a l = s ⋅ D k E + δ D^{global}_k = s \cdot D^E_k + \delta Dkglobal=sDkE+δ,最小化渲染深度接近全局深度
在这里插入图片描述

Progressive Inpainting and Updating

在这里插入图片描述
为了保证场景绘制过程中视图的一致性,避免几何和外观的模糊性,采用逐视图更新亮度场的渐进式绘制和更新策略

在每次补全后更新亮度场。这意味着之前绘制的内容将在后续的效果图中反映出来,这些部分将被视为已知区域,不会在其他视图中再次绘制

受(Zeroshot text-guided object generation with dream fields)启发,设计了一个深度感知透射损失 L T L_T LT,以促使NeRF网络在相机光线到达预期深度之前产生空密度
在这里插入图片描述
m(t)是一个掩膜,当 t< z ^ \hat{z} z^ 时,m(t) = 1,否则为0, z ^ \hat{z} z^是对齐深度图 D ^ \hat{D} D^ 中逐像素深度值,T (T)为累积透过率

效果

在这里插入图片描述
在这里插入图片描述

相关文章:

97、Text2NeRF: Text-Driven 3D Scene Generation with Neural Radiance Fields

简介 论文地址 使用扩散模型来推断文本相关图像作为内容先验&#xff0c;并使用单目深度估计方法来提供几何先验&#xff0c;并引入了一种渐进的场景绘制和更新策略&#xff0c;保证不同视图之间纹理和几何的一致性 实现流程 简单而言&#xff1a; 文本-图片扩散模型生成一…...

【C++】多态(上) 多态 | 虚函数 | 重写 | final、override | 接口继承与实现继承 | 抽象类

一、多态 概念 多态&#xff0c;就是多种状态&#xff0c;即不同的对象去完成同一个行为时会产生出不同的状态。比如&#xff1a;买票时&#xff0c;成人要原价买&#xff0c;学生和老人就可以享受优惠价便宜一点儿。同样是买票这个行为&#xff0c;不同的对象来做就有不同的…...

国内怎么投资黄金,炒黄金有哪些好方法?

随着我国综合实力的不断强大&#xff0c;投资市场的发展也日臻完善&#xff0c;现已成为了国际黄金市场的重要组成部分&#xff0c;人们想要精准判断金市走向&#xff0c;就离不开对我国经济等信息的仔细分析。而想要有效提升盈利概率&#xff0c;人们还需要掌握国内黄金投资的…...

springboot实现数据脱敏

springboot实现数据脱敏 怎么说呢&#xff0c;写着写着发觉 ”这写的什么玩意“ 。 总的来说就是&#xff0c;这篇文章并不能解决数据脱敏问题&#xff0c;但以下链接可以。 SpringBoot中利用自定义注解优雅地实现隐私数据脱敏 然后回到本文&#xff0c;本来是想基于AOP代理&am…...

uniapp实现多时间段设置

功能说明&#xff1a; 1 点击新增时间&#xff0c;出现一个默认时间段模板&#xff0c;不能提交 2 点击“新增时间文本”&#xff0c;弹出弹窗&#xff0c;选择时间&#xff0c;不允许开始时间和结束时间同时为00:00&#xff0c; <view class"item_cont"> …...

uni-app - 去除隐藏页面右侧垂直滚动条

全局配置 "globalStyle": { //全局配置 "scrollIndicator":"none", // 不显示滚动条 "app-plus":{ "scrollIndicator":"none" // 在APP平台都不显示滚动条 } }局部配置 "path": "pages/ind…...

一次简单的 Http 请求异常处理 (请求的 url 太长, Nginx 直接返回 400, 导致请求服务异常)

1 结论 按照惯例直接说结论。 后台服务 A 有一个 Http 接口, 代码如下: RequestMapping(value "/user", method RequestMethod.GET) public List<UserInfoVo> getUserInfoByUserIds(RequestParam(value "userIds") List<String> userIds…...

spring Cloud在代码中如何应用,erueka 客户端配置 和 服务端配置,Feign 和 Hystrix做高可用配置

文章目录 Eureka一、erueka 客户端配置二、eureka 服务端配置 三、高可用配置FeignHystrix 通过这篇文章来看看spring Cloud在代码中的具体应用&#xff0c;以及配置和注解&#xff1b; Eureka 一、erueka 客户端配置 1、Eureka 启禁用 eureka.client.enabledtrue 2、Eurek…...

C#8.0中新语法“is {}“的介绍及使用

一&#xff64;C#7.0及之前is的使用 is操作符检查表达式的结果是否与给定类型兼容&#xff0c;或者(从c# 7.0开始)根据模式测试表达式。有关类型测试is操作符的信息&#xff0c;请参阅类型测试和类型转换操作符文章的is操作符部分。 1&#xff64;is 模式匹配 从C&#xff0…...

编译器设计01-入门概述

编译器作用概述 源代码 → 编译器 目标代码 源代码\xrightarrow{\ \ \ 编译器\ \ \ }目标代码 源代码 编译器 ​目标代码 编译阶段概述 编译处理包括两个阶段&#xff1a;前端处理和后端处理&#xff0c;中间过程生成语法树。 编译处理&#xff1a;源代码 → 语法树 …...

SpringBoot封装Elasticsearch搜索引擎实现全文检索

一、前言 注&#xff1a;本文实现了Java对Elasticseach的分页检索/不分页检索的封装 ES就不用过多介绍了&#xff0c;直接上代码&#xff1a; 二、实现步骤&#xff1a; 创建Store类&#xff08;与ES字段对应&#xff0c;用于接收ES数据&#xff09; import com.alibaba.f…...

(C)一些题4

1. 以下叙述中正确的是( )。 A.C程序中的注释只能出现在程序的开始位置和语句的后面 B.C程序书写格式严格&#xff0c;要求行内只能写一个语句 C,C程序书写格式自由&#xff0c;一个语句可以写在多行上 D.用C语言编写的程序只能放在一个程序文件中 2.设有如下程序段 char …...

ChatGPT初体验:注册、API Key获取与ChatAPI调用详解

自从2022年10月&#xff0c;ChatGPT诞生以后&#xff0c;实际上已经改变了很多&#xff01;其火爆程度简直超乎想象&#xff0c;一周的时间用户过百万&#xff0c;两个月的时间用户过亿。 目前ChatGPT4已经把2023年4月以前的人类的知识都学习到了&#xff0c;在软件工程里面&am…...

TCP/IP协议、三次握手、四次挥手

TCP/IP TCP/IP协议分层TCP头部三次握手TCP四次挥手常见问题1、什么是TCP网络分层2、TCP为什么是三次握手&#xff0c;不是两次或者四次&#xff1f;3、TCP为什么是四次挥手&#xff0c;为什么不能是三次挥手将第二次挥手和第三次挥手合并&#xff1f;4、四次挥手时为什么TIME_W…...

Android U 匹配不到APN,无法发起数据建立的问题分析

问题 打开数据开关后&#xff0c;没有data PDN请求发起&#xff0c;因此无法上网。 根据日志确定是没有找到合适的data profile&#xff0c;原因一般有&#xff1a; 1、APN 没有配置 2、APN 类型/网络能力不满足——APN type或bearer 3、APN 配置了但被disable了——APN p…...

如何打造“面向体验”的音视频能力——对话火山引擎王悦

编者按&#xff1a;随着全行业视频化的演进&#xff0c;我们置身于一个充满创新与变革的时代。在这个数字化的浪潮中&#xff0c;视频已经不再只是传递信息的媒介&#xff0c;更是重塑了我们的交互方式和体验感知。作为字节跳动的“能力溢出”&#xff0c;火山引擎正在飞速奔跑…...

什么是NoOps

过去几年&#xff0c;自动化一直在推动整个 IT 行业向前发展。通过自动化某些任务&#xff0c;开发团队可以提高其能力&#xff0c;而无需感受到雇用新团队成员的预算压力。自动化还保证了更高的效率&#xff0c;特别是在操作和维护方面。 传统的软件开发工作流程涉及开发团队…...

Unity - Graphic解析

Gpahic 的作用 Graphic 是 Unity最基础的图形基类。主要负责UGUI的显示部分。 由上图可以看你出我们经常使用的Image&#xff0c;Text&#xff0c;都是继承自Graphic。 Graphic的渲染流程 在Graphic的源码中有以下属性 [NonSerialized] private CanvasRenderer m_CanvasRend…...

哈希思想的应用

目录 1.位图 位图的实现 题目变形一 题目变形二 题目变形三 总结&#xff1a; 2.布隆过滤器 概念 布隆过滤器的实现 3.哈希切割的思想 1.位图 哈希表和位图是数据结构中常用的两种技术。哈希表是一种数据结构&#xff0c;通过哈希函数把数据和位置进行映射&#xff0c…...

React入门使用 (官方文档向 Part1)

文章目录 React组件:万物皆组件 JSX: 将标签引入 JavaScriptJSX 规则1. 只能返回一个根元素2. 标签必须闭合3. 使用驼峰式命名法给 ~~所有~~ 大部分属性命名&#xff01;高级提示&#xff1a;使用 JSX 转化器 在 JSX 中通过大括号使用 JavaScript使用引号传递字符串使用大括号&…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...