IBRNet:基于IBR的NeRF

news2024/11/18 15:49:52

IBRNet: Learning Multi-View Image-Based Rendering

针对问题:使NeRF具有泛化能力

如何做:主要还是针对颜色和密度的预测进行改进(三维重建部分),和NeRF一样,使用的是volume rendering(渲染部分)。

原始NeRF:
在这里插入图片描述

IBRNet:
在这里插入图片描述

密度和颜色的预测
在这里插入图片描述

成果:

  1. Unlike neural scene representation work that optimizes per-scene functions for rendering, we learn a generic view interpolation function that generalizes to novel scenes. 原始NeRF针对每个scene都需要优化(重头训练),而本文方法学习一个通用的view插值函数能够泛化到新的scenes。
  2. Experiments show that our method outperforms recent novel view synthesis methods that also seek to generalize to novel scenes. Further, if fine-tuned on each scene, our method is competitive with state-of-the-art single-scene neural rendering methods. 实验表明,在寻求泛化到新scenes时,我们的方法比其它好。更进一步,如果fine-tuned每一个scene,可以实现和目前SOTA的NVS任务相当的表现。

主要:

  1. 还是使用volume rendering。即通过网络预测出颜色和密度,再通过体渲染。
  2. 在Volume density prediction时,将每条ray上的多个sampled point视为一个序列,然后使用自注意力机制预测最终的density(Ray Transformer)。好处:可以利用long-range contextual information。Ray Transformer的输入是density features序列(density features可以认为是PE的结果,类比)
  3. 用source views预测target view的颜色时,不是使用source views的绝对方向,而是与target view的差值,即Δd,源于这样的事实:d 和 di 之间较小差异通常意味着目标视图处的颜色与视图 i 处的相应颜色相似的可能性更大,反之亦然。所以使用Δd。

steps:

  1. 对于一个target view,会找到与其在空间上最邻近的N个source views(在一个大的source views pool中随机选取N个);

    同时,通过ResUNet网络得出source views的特征Fi∈(Hi,Wi,d)

  2. target view的每一个像素发出一条射线r(t)=o+td,且在射线上有一些采样点

  3. 对于每个query point,计算出其在N个source views上的投影点,并通过双线性插值【因为投影到source views时可能没在一个完整的像素点,可能在相邻点的中间,这时就需要用插值的方法得出投影点的Ci和fi】计算出投影点的颜色Ci和特征fi,fi∈Fi,i=1-N。

  4. 计算fi的均值和方差,拼接后(1x3d)输入到MLP中得到fi‘和wi。注:此处是为了check consistency,论文中的Multi-view feature aggregation这一小节有说到。

  5. fi’和wi输入到MLP得到fδ,通过Ray transformer预测得到density δ

    fi’和Δdi拼接后输入到MLP中预测Ci的权重w_i^c,Ci和W_ic的加权得出query point的最终颜色

  6. 利用volume density,渲染得到该ray对应的像素颜色。

网络结构:

ResUNet用于提取Fi

IBRNet用于预测density δ和color c。(IBRNet包括一个Ray transformer)

在这里插入图片描述

原始NeRF对每个scene都需要重新优化建模,即一个scene对应一个模型,没有泛化能力,该篇论文提出的IBRNet就是解决NeRF的泛化问题,实现在一些训练集上训练得到的模型,能够直接应用到其它scene上。并且还可以通过fine-tuned实现更好的结果。

原始NeRF可大致分为2个步骤:三维重建(2D-3D的建模过程,用MLP隐式表达scene),渲染(3D-2D,volume rendering)

原始NeRF为什么不具泛化性:个人认为是在三维重建时没有充分利用信息(渲染view时,都是孤立的点,且与其它view没有联系),直接从5D到颜色和透明度的映射。

IBRNet的工作主要针对三维重建这一步,即5D映射到颜色和透明度这一步。

渲染target view时,

  1. 会基于与自己相邻的N个source views,
  2. 充分利用信息,包括image color,view direction,image feature
  3. 相邻view在scene表面更光滑,所以使用Δd作为view direction
  4. 预测density时,不是孤立的点,而是将ray上的所有sampled point视为一个序列,使用transformer的self-attention预测density,利用空间信息;
  5. 图像特征用UNet提取,骨干网络使用ResNet
  6. 用类似PointNet检验图像特征一致性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77708.html

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

相关文章

Vulkan下多线程渲染设计

1 Vulkan 视角下的多线程渲染 首先我们需要从vulkan api的顶层框架上来看一下,它在哪些地方可以让我们并行。 Vulkan API的基本框架 Vulkan不同于Gles只有一个(不被API暴露出来的)单一链条的cmdbuffer处理,它最大的特点是允许多…

阿里巴巴内部:2022年全技术栈PPT分享(架构篇+算法篇+大数据)

我只截图不说话,PPT大全,氛围研发篇、算法篇、大数据、Java后端架构!除了大家熟悉的交易、支付场景外,支撑起阿里双十一交易1682亿元的“超级工程”其实包括以下但不限于客服、搜索、推荐、广告、库存、物流、云计算等。 Java核心…

Linux中裸机串口通信的基本方法

大家好, 今天主要和大家聊一聊,如何使用串口进行通信的方法。 目录 第一:串口的基本简介 第二:UART的特点 ​第三:UART的配置步骤 第一:串口的基本简介 串口又叫做串行接口,通常叫做COM接…

农业灌区量测水流量在线监测系统解决方案-灌区信息化管理系统-灌区水网智慧化

平升电子农业灌区量测水流量在线监测系统解决方案/灌区信息化管理系统/灌区水网智慧化,对灌区的渠道水位、流量、水雨情、土壤墒情、气象等信息进行监测,同时对泵站、闸门进行远程控制,对重点区域进行视频监控,实现了信息的采集、…

Docker系统性入门(五)

文章目录Podman安装&基操pod多架构CI/CD容器安全监控Podman Podman 是 Red Hat 在2018年推出的,源代码开放是一个基于 Linux 系统的 daemon-less 的容器引擎;可以运行在root或者非root用户模式最近总听到这个要代替docker什么的,可以参考…

甲骨文蟾蜍 Toad for Oracle 16.2 注册版

使您的 Oracle 数据库操作现代化以实现业务敏捷性。 Toad for Oracle 是唯一一款可帮助您简化工作流程、减少代码缺陷并提高代码质量和性能同时支持团队协作的开发人员工具。自动化管理任务并主动管理您的数据库,同时实现性能优化和风险缓解。快速轻松地定义、搜索…

硬核干货,带你一文掌握 MySQL 的binlog 、redo log、undo log

​hello,大家好。 在MySQL 中我们经常会接触到三个核心日志,它们分别是:binlog 、redo log、undo log。 好多同学对于它们可能并不陌生,但是具体区分起来各自的功能用途以及实现原理,那可能认知就会比较模糊了&#x…

Web前端开发技术课程大作业_ 关于美食的HTML网页设计——HTML+CSS+JavaScript在线美食订餐网站html模板源码30个页面_

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

Git基础|配置Git账号信息,Git存储的原理详解【建议收藏】

Git作为分布式版本管理,就需要对用户进行认证,账号名和邮箱,方便开发者从不同的电脑进行登录。同时,要想真的记住Git的命令,也必须要清楚Git的存储、上传原理。 Git基础2一、用户签名1、打开命令界面2、进入到用户管理…

CleanMyMac2023最新版软件功能及使用心得教程

电脑明明有100G,但是只剩下几个G,明明已经清理了很多,但是还是没有释放出内存,怎么办?可以试试CleanMyMac X,怎么使用呢?来看看吧!CleanMyMac X是一款颇受欢迎的专业清理软件&#x…

【2022.12.10】备战春招Day5——每日一题 + 96. 不同的二叉搜索树

【每日一题】1691. 堆叠长方体的最大高度 题目描述 给你 n 个长方体 cuboids ,其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti](下标从 0 开始)。请你从 cuboids 选出一个 子集 ,并将它们堆叠起来。 如…

​创新不是公司的救命良药

阅读本文大概需要1.06 分钟。之前问说当整个大环境都差的时候,公司还有项目可做就不错了,不要觉得只能赚点小钱就看不上,现在已经从伸手抓钱,变成弯腰捡钱的时代了。 开始赚的钱是不多,但能验证方向,先把跑…

web前端期末大作业 基于HTML+CSS+JavaScript学生宿舍管理系统

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

SSM+Mysql实现的仿网盘系统(功能包含注册登录,文件上传、所有文件、分类资源查看、用户管理、分享资源等)

博客目录SSMMysql实现的仿网盘系统实现功能截图系统功能使用技术代码完整源码SSMMysql实现的仿网盘系统 本系统是一个模拟百度网盘的系统,通过实现了图片/文本文件/视频等资源上传,并且分类管理、资源分享,实现了资源的在线管理。 (文末查看…

Vue2.0开发之——Vue组件-组件属性(34)

一 概述 为Count组件添加自定义属性为自定义属性添加v-bind自定义属性props是只读的自定义属性default默认值自定义属性type值类型自定义属性required必填值 二 为Count组件添加自定义属性 2.1 组件的props props 是组件的自定义属性,在封装通用组件的时候&#…

【Vue核心】6.数据代理

1.回顾Object.defineProperty方法 Object.defineproperty Object.defineproperty 的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性。Object.defineproperty方法需要传递3个参数,1.属性所在的对象 2.属性的名字 3.一个描述符对象…

Wireshark TS | PMTU 问题实例

前言 PMTU,说到网络上的 PMTU 所能实现的功能,网工对它的原理自然是如数家珍,不熟悉的可能就感觉高大上了,觉得路径 MTU 能自动发现了,自然端到端数据包传输就能避免数据包分片了。可是理想很丰满,现实很骨…

防火墙NAT综合实验——nat控制,豁免,远程,DMZ区域(带命令)

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.实验 实验要求 实验命令 前言 本章将会进行NAT的综合配置…

编程零基础转行Python,往这个方向走,绝对没有错

近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多。一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学习路线图。 对于一个零基础的想学习python的朋友来说…

对造轮子Say NO!如何移植并使用Linux内核的通用链表?(附源代码)

1. 什么是链表 链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。 相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配…