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

LVSM: A LARGE VIEW SYNTHESIS MODEL WITH MINIMAL 3D INDUCTIVE BIAS 论文解读

目录

一、概述

二、相关工作

1、新视角合成

2、优化3D表示

3、可泛化的前馈方法

三、LVSM

1、总体结构

2、encoder-decoder

3、decoder-only  

4、Loss


一、概述

        该论文提出大视角合成模型LVSM,基于Transformer方法,用于场景中或对象级层次从稀疏视角(或单视角)作为输入,进行可扩展和泛化的新视角合成。

        提出了两种新颖的LVSM架构:encoder-decoder LVSM,decoder-only LVSM。

        encoder-decoder LVSM:将输入图像编码到固定长度的潜在表示,并从中解码新视角图像。

        decoder-only LVSM:直接将输入图像映射到新视角输出,完全消除了中间场景表示,减少了3D归纳偏差,decoder-only的方法也实现了更高的质量、可扩展性和零样本泛化能力,在PSNR指标上优于之前的SOTA(GS-LRM)1.5到3.5dB PSNR。

        我觉得LVSM的最大特点在于,依赖Transformer架构完全数据驱动的方法实现高质量新视角合成,不需要再考虑几何,纹理等问题,这也需要进一步的思考。

二、相关工作

1、新视角合成

        基于图像的渲染(IBR)早期一般使用基于图像的渲染使用代理几何,并通过输入参考图像进行加权混合的方式(Modeling and rendering architecture from photographs)。光场方法从密集视图输入中建立4D多视函数切片(Light field rendering)。

        上面两个方法属于20年前老祖级别,近期随着卷积神经网络的发展,将逐渐转变为基于学习的IBR方法来预测深度图或者渲染权重(比如NeRF参数)。另外由于要做更大的场景渲染,所以考虑多视角立体重建。

        而该论文做的事基于大场景,真实数据的可泛化的先验来实现新视角合成。

2、优化3D表示

        NeRF提出可微分的神经辐射场3D表示,通过最小化渲染损失来重建场景。后续工作逐渐在渲染质量、优化速度、放宽输入条件等多方式,来提升NeRF的性能。

        DVGO通过将NeRF于体素信息相结合,Point-NeRF提出基于点的NeRF表示,Gaussian Splatting将3D点引入3DGS来提升渲染速度。

        另外也有一些论文考虑使用稀疏体素,体积分解,哈希技术来降低空间复杂度。

        我们的论文提出不需要3D先验和任何单一场景的优化过程的归纳偏差,来实现LRM的新视角生成。

3、可泛化的前馈方法

        3D归纳偏差(3D Inductive Bias),指在设计前馈网络时,引入一些预定义的3D结构或渲染方程,从而限制了模型的灵活性和泛化能力,无法很好地适应更加复杂多样的场景。3D归纳偏差包括极线约束、平面扫描体积等3D特定先验,尽管这些方法会在某些特定场景取得了一些进展,但是限制了模型的潜在泛化能力和可扩展性。

        可泛化的方法考虑通过NVS推理,并使用神经网络训练场景,来生成3D表示和新视角图像。

        PixelNeRF、MVSNeRF、IBRNet网络考虑使用3D先验来实现可微分的3D渲染。另外,考虑直接学习渲染函数的方法但被证实是不可扩展的且缺乏模型容量,无法捕捉高频细节。SRT方法移除手工设计的3D表示,而学习潜在表示,但他采用的是一个不可扩展的模型+Cross Att.而我们的模型使用完全基于Transformer的模型,有效的学习新视角合成和最小化归纳偏差,不需要学习潜在表示。

        对于以往的方法通过引入3D归纳偏差,而该论文的LVSM考虑完全消除3D归纳偏差,直接从数据中学习渲染函数,提高了模型的可扩展性和渲染质量。

三、LVSM

        LVSM分为两个部分:encoder-decoder部分和decoder-only部分。

1、总体结构

        首先对于输入图像I_i使用Plucker射线\left \{ P_i \right \}对于每一个像素进行嵌入,最后在分解为不重叠的patch中,p个patch\left \{ I_{i,j},P_{i,j} \right \}。之后将这组输入引入线性层得到输入tokenx_{i,j}

        对于目标视图的Plucker光线P^t,通过相机内参和外参计算而来,并且通过一个线性层得到目标视图的每一个patch的Plucker射线嵌入。

                                                                q_t=Linear_t(P_t^j)

        经过一个full-transformer来计算LVSM的输出。

                                                                y_i=M(q_i|x_i)

        之后通过线性层加unpatchify来恢复输出空间结构的新视角生成\hat{I}^t

                                                \hat{I}_j^t=Sigmoid(Linear_{out}(y_t))

2、encoder-decoder

特殊字母含义:

        x:输入图像token序列

        x':编码器处理后的输入token序列

        y:最终合成目标视图

        z:编码器处理后的中间潜在表示

        z':解码器更新后的潜在表示

        e:用于聚合输入token信息的可学习的潜在token,是人为给定的

        q:目标视图中的plucker射线嵌入

        对于encoder-decoder模型是需要潜在表示存在的,而decoder-only不再需要潜在token序列。

        

3、decoder-only  

4、Loss

        损失函数由两部分组成:MSE和\lambda权重的光感损失

参考项目:LVSM: A Large View Synthesis Model with Minimal 3D Inductive Bias 

相关文章:

LVSM: A LARGE VIEW SYNTHESIS MODEL WITH MINIMAL 3D INDUCTIVE BIAS 论文解读

目录 一、概述 二、相关工作 1、新视角合成 2、优化3D表示 3、可泛化的前馈方法 三、LVSM 1、总体结构 2、encoder-decoder 3、decoder-only 4、Loss 一、概述 该论文提出大视角合成模型LVSM,基于Transformer方法,用于场景中或对象级层次从稀…...

7.《双指针篇》---⑦三数之和(中等偏难)

题目传送门 方法一:双指针 1.新建一个顺序表用来返回结果。并排序数组。 2.for循环 i 从第一个数组元素遍历到倒数第三个数。 3.如果遍历过程中有值大于0的则break; 4.定义左右指针,以及target。int left i 1, right n - 1; int target -nums[i];…...

鸿蒙ArkTS中的布局容器组件(Scroll、List、Tabs)

1、Scroll组件 Scroll组件是一个可滚动的容器组件,用于在子组件的布局尺寸超过父组件尺寸时提供滚动功能。它允许在其内部容纳超过自身显示区域的内容,并通过滚动机制来查看全部内容。这对于显示大量信息(如长列表、长篇文本或大型图像等&…...

mybatis连接PGSQL中对于json和jsonb的处理

pgsql数据库表字段设置了jsonb格式;在java的实体里使用String或者对象转换会一直提示一个错误: Caused by: org.postgresql.util.PSQLException: ERROR: column "xx" is of type jsonb but expression is of type character varying 需要加一…...

Redis 权限控制(ACL)|ACL 命令详解、ACL 持久化

官网文档地址:https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/ 使用版本:Redis7.4.1 什么是 ACL? ACL(Access Control List),权限控制列表,是 Redis 提供的一种…...

内网学习一:windows基础

工作组介绍 按照不同的计算机功能或工作部门将计算机列入不同的工作组。要是想访问某一个工作组的资源 只需要双击该部门的工作组,就可以看到该组内的所有计算机。 目的:在大型网络中,方便管理员去管理设备 加入工作组 右击计算机图标---…...

编译工具与文件学习(一)-YAML、repos、vcstoolcolcon

YAML YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化格式,常用于配置文件、数据交换和存储结构化数据。YAML 的设计目标是简洁、易读,并且能够表示复杂的数据结构。 YAML 文件的基本语法 基本结构: Y…...

使用 HuggingFace 提供的 Elasticsearch 托管交叉编码器进行重新排名

作者:来自 Elastic Jeff Vestal 了解如何使用 Hugging Face 的模型在 Elasticsearch 中托管和执行语义重新排序。 在这篇简短的博文中,我将向你展示如何使用 Hugging Face 中的模型在搜索时在你自己的 Elasticsearch 集群中执行语义重新排序。我们将使用…...

CKA认证 | Day1 k8s核心概念与集群搭建

第一章 Kubernetes 核心概念 1、主流的容器集群管理系统 容器编排系统: KubernetesSwarmMesos Marathon 2、Kubernetes介绍 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8s。 Kubernetes用于容器化应用程序的部署&#x…...

[极客大挑战 2019]PHP 1

[极客大挑战 2019]PHP 1 审题 猜测备份在www.zip中,输入下载文件。 知识点 反序列化 解题 查看代码 看到index.php中包含了class.php,直接看class.php中的代码 查看条件 当usernameadmin,password100时输出flag 构造反序列化 输入select中&#…...

【c++丨STL】vector模拟实现

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:C、STL 目录 前言 一、vector底层刨析 二、模拟实现 1. 属性、迭代器以及函数声明 2. 功能实现 交换两个容器的内容 构造函数 拷贝构造 赋值重载 析构…...

SQLAlchemy 介绍与实践

postgresql 实践 pydantic 实践 1. SQLAlchemy 介绍 SQLAlchemy 是一个 ORM 框架。SQLAlchemy 是一个用于 Python 的 SQL 工具和对象关系映射(ORM)库。它允许你通过 Python 代码来与关系型数据库交互,而不必直接编写SQL语句。 简单介绍一下…...

docker进行SRS直播服务器搭建

docker进行SRS直播服务器搭建 docker构建参考地址: 地址: https://github.com/ossrs/srs https://ossrs.net/lts/zh-cn/docs/v5/doc/getting-started docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \-p 8000:8000/udp -p 10080:10080/udp ossrs/sr…...

windows server2019下载docker拉取redis等镜像并运行项目

一、基本概念 1、windows server 指由微软公司开发的“Windows”系列中的“服务器”版本。这意味着它是基于Windows操作系统的,但专门设计用于服务器环境,而不是普通的桌面或个人用户使用。主要用途包括服务器功能、用户和资源管理、虚拟化等 2、dock…...

数据结构(8.7_2)——败者树

多路平衡归并带来的问题 什么是败者树 败者树的构造 败者树的使用 败者树在多路平衡归并中的应用 败者树的实现思路 总结...

设计模式-七个基本原则之一-里氏替换原则

里氏替换原则(LSP)面向对象六个基本原则之一 子类与父类的替代性:子类应当能够替代父类出现的任何地方,且表现出相同的行为。行为的一致性:子类的行为必须与父类保持一致,包括输入和输出、异常处理等。接口…...

k8s中基于overlay网络和underlay网络的网络插件分别有哪些

在 Kubernetes 中,不同的网络插件会使用 overlay 或 underlay 网络来连接 Pod 和节点。以下是基于 overlay 网络和 underlay 网络的常见 Kubernetes 网络插件: 1. 基于 Overlay 网络的插件 这些插件通过隧道封装技术(如 VXLAN、GRE 等&#…...

一文详解java的数据类型

1. 题记 Java是一门对数据类型敏感的语言,本博文主要总结介绍java语言的数据类型。 2. java的数据类型 Java 的数据类型分为基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。 2.1 基本数…...

Flink API 的层次结构

Apache Flink 提供了多层 API,每层 API 针对不同的抽象层次和用途,使得开发者可以根据具体需求选择合适的 API 层次。以下是 Flink API 的层次结构及其简要说明:...

lua入门教程:math

在Lua中,math库是一个非常重要的内置库,它提供了许多用于数学计算的函数。这些函数可以处理各种数学运算,包括基本的算术运算、三角函数、对数函数、随机数生成等。结合你之前提到的Lua中的数字遵循IEEE 754双精度浮点标准,我们可…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...