NeRF从入门到放弃4: NeuRAD-针对自动驾驶场景的优化

NeuRAD: Neural Rendering for Autonomous Driving

非常值得学习的一篇文章,几乎把自动驾驶场景下所有的优化都加上了,并且也开源了。

和Unisim做了对比,指出Unisim使用lidar指导采样的问题是lidar的垂直FOV有限,高处的东西打不到,使得lidar FOV外的效果不好。

1 整体框架

在这里插入图片描述

2 各项优化

在这里插入图片描述

  1. CNN decoder

    该方法最先是Unisim中提到的,主要优点是减少计算量,另外对于外插比较好。从该图消融实验的Scen. gen.为FID,表示新视角的和原视角的相似性,可以看出确实CNN对外插的影响最大。

    采样时是基于patch的采样,假设一个pacht的大小是32x32个像素,降采样是。随机采样一个像素点作为中心点,以该点为中心采样96x32个像素,渲染得到的feature,经过反卷积上采样为原来的3倍,即96x96。

    推理时,先把图片大小resize为原来的1/3,渲染得到1/3大小的feature,经过反卷积得到原图。

  2. Rolling shutter

    这是自动驾驶场景特殊的地方。

    对相机和ldiar的扫描时间建模。相机的第一行和最后一行不是一个时间,lidar也是如此。相机高速运动的时候,一幅图里的每行像素的时间是不一样的,其相机原点也不一样。但是我们建模的时候,却认为一张图片里所有的像素都是同一个时间,也就是这一帧的位姿和时间戳。

    所以作者为每条射线都额外加了时间t的预测,对每条Ray加入一个t,根据ego_motion,调整它们的原点。动态元素的位姿插值到每条ray的时间。

    此处可看issue,需要注意,相机扫描也分为横向和纵向。

  3. Apperance embedding

    最早是在NeRF in wild里提到的,因为不同相机的曝光程度不同,每个相机通过一个mlp获得一个embeding。每个sensor学习一个embedding,渲染新视角时使用这些embedding

  4. ray drop probability and intensity using

    返回点云是否击中的概率,以此来丢弃这束光线,如打到天空、玻璃上的,没有返回值。

  5. SDF

    SDF的方法最早是在NeuS被应用。什么是SDF,sign distance field,它可以刻画一个表面。他的好处是什么?

    其用法是NeRF的MLP原本是预测每个点的density的,现在不直接预测density了,而是预测一个该点的sdf,然后通过一个计算公式转换成不透明度α,这里的β就是预测的该点的SDF值,初始值设成20,它是一个可学习的参数。

在这里插入图片描述

3 对比Unisim新视角下的效果

使用FID作为量化指标

在这里插入图片描述

4 其他

  1. 采样分为三种,背景、Acotr和天空。

​ 在静态场末端和3公里外之间的视差(到传感器原点的距离上的一个)中对这些进行线性采样。也就是说原本每条射线采样32个点,最后一个点(也是最远的一个点)扩展到3000m,实际代码中这个距离是20000m

  1. 位姿优化:

​ 加了位姿优化后psnr等值变低,这是因为位姿优化后位姿发生了变化,和ground truth的pose已经不一样,但是还要跟ground truth的图像做对比。本来就不是一个时刻的图片了,也就自然没有了可比性。

  1. 挑战性的场景:
    1. 夜晚。夜晚产生炫光,这些本不代表真正的geometroy。
    2. 刹车灯,信号灯,这些是随时间变化的,Nerf可能可以学习出这个关联关系。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue: Module “vue“ has no exported member xxx

这个问题让我困扰了好一会儿,我询问了 chatgpt 和各种网站社区,尝试了切换依赖的版本,清除缓存等等,依然没有解决 不过算是有心栽花花不开,无心插柳柳成荫,碰巧解决了,也不知道是不是这个原因&a…

java收徒 java辅导 java试用期辅导 java零基础学习

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末报名辅导🌟 感兴趣的可以先收藏起来,还有大家…

WinMerge v2 (开源的文件比较/合并工具)

前言 WinMerge 是一款运行于Windows系统下的免费开源的文件比较/合并工具,使用它可以非常方便地比较多个文档内容甚至是文件夹与文件夹之间的文件差异。适合程序员或者经常需要撰写文稿的朋友使用。 一、下载地址 下载链接:http://dygod/source 点击搜…

微信小程序-伪类选择器

一.伪类选择器 结构伪类常见书写方式: 第一类:找第几个孩子 1. :first-child 找第一个孩子2. :last-child 找最后一个孩子3. :nth-child(),正着找数字:写数字几就是找第几个孩子,2n或者even:找偶数2n1或者o…

python数据分析案例-信用卡违约预测分析

一、研究背景和意义 信用卡已经成为现代社会中人们日常生活中不可或缺的支付工具,它不仅为消费者提供了便利,还为商家提供了更广泛的销售渠道。然而,随着信用卡的普及和使用量的增加,信用卡违约问题逐渐成为金融机构面临的重要挑…

Java基础的重点知识-03-方法与数组

文章目录 方法数组 方法 定义方法的格式详解 修饰符 返回值类型 方法名(参数列表){//代码省略...return 结果; }修饰符: public static 固定写法返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者参数列表&#xff1…

Pytho字符串的定义与操作

一、字符串的定义 Python 字符串是字符的序列,用于存储文本数据。字符串可以包括字母、数字、符号和空格。在 Python 中,字符串是不可变的,这意味着一旦创建了一个字符串,就不能更改其中的字符。但是,你可以创建新的字…

一文读懂LLM API应用开发基础(万字长文)

前言 Hello,大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,上一篇文章中我们详细介绍了LLM开发的基本概念,包括LLM的模型、特点能力以及应用;😲 在本文中作者将通过&#xff1a…

Flutter ListView详解

文章示例代码 ListView常用构造 ListView 我们可以直接使用ListView 它的实现也是直接返回最简单的列表结构&#xff0c;粗糙没有修饰。 ListView 默认构建 效果 ///默认构建 Widget listViewDefault(List list) { List _list new List(); for (int i 0; i < list.le…

Java学习 - 网络IP协议簇 讲解

IP协议 IP协议全称 Internet Protocol互联网互连协议 IP协议作用 实现数据在网络节点上互相传输 IP协议特点 不面向连接不保证可靠 IP协议数据报结构 组成说明版本目前有IPv4和IPv6两种版本首部长度单位4字节&#xff0c;所以首部长度最大为 15 * 4 60字节区分服务不同…

视觉新纪元:解码LED显示屏的视角、可视角、最佳视角的最终奥秘

在璀璨夺目的LED显示屏世界里&#xff0c;每一个绚烂画面的背后&#xff0c;都离不开三个关键概念&#xff1a;视角、可视角与最佳视角。这些术语不仅是衡量显示效果的重要标尺&#xff0c;也是连接观众与精彩内容的桥梁。让我们一起走进这场视觉盛宴&#xff0c;探索那些让LED…

做Android开发怎么才能不被淘汰?

多学一项技能&#xff0c;可能就会成为你升职加薪的利器。经常混迹于各复杂业务线的人&#xff0c;才能跳出重复工作、不断踩坑的怪圈。而一个成熟的码农在于技术过关后&#xff0c;更突出其他技能对专业技术的附加值。 毋须讳言的是&#xff0c;35岁以后你的一线coding能力一…

使用SPI驱动数码管

代码&#xff1a; 7-seg.c /*《AVR专题精选》随书例程3.通信接口使用技巧项目&#xff1a;改进的延时法实现半双工软件串口文件&#xff1a;7seg.c说明&#xff1a;SPI控制数码管驱动文件作者&#xff1a;邵子扬时间&#xff1a;2012年12月15日*/#include <avr/io.h>ex…

【嵌入式】嵌入式Linux开发实战指南:从交叉编译到触摸屏交互

文章目录 前言&#xff1a;1.简介1.1. 交叉编译工具1.2. 项目开发流程&#xff1a;1.3. ARM开发板的连接方法 2. 开发板连接3. 系统文件 IO4. 设置共享文件夹3.1. 读文件3.2. 写文件3.2. 设置文件偏移量 4. LCD显示屏显示4.1. LCD 显示颜色4.2. 将文件下载到开发板4.2.1. 在CRT…

JDK动态代理

JDK动态代理源码分析 4.1 JDK动态代理的实现 需要动态代理的接口 /**需要动态代理的接口 */ public interface Movie {void player();void speak();需要动态代理的接口的真实实现 /**需要动态代理接口的真实实现 */ public class RealMovie implements Movie {Override publi…

win10 安装openssl并使用openssl创建自签名证书

win10创建自签名证书 下载安装配置openssl 下载地址&#xff1a; https://slproweb.com/download/Win64OpenSSL-3_3_1.exe https://slproweb.com/products/Win32OpenSSL.html 完成后安装&#xff0c;一路next&#xff0c;到达选位置的之后选择安装的位置&#xff0c;我这里选…

一文详解分布式 ID

分布式系统中&#xff0c;我们经常需要对数据、消息等进行唯一标识&#xff0c;这个唯一标识就是分布式 ID&#xff0c;那么我们如何设计它呢&#xff1f;本文将详细讲述分布式 ID 及其生成方案。 一、为什么需要分布式 ID 目前大部分的系统都已是分布式系统&#xff0c;所以在…

如何打造稳定、好用的 Android LayoutInspector?

速度极慢&#xff0c;遇到复杂的布局经常超时 某些情况无法选中指定的 View 本文将围绕 LayoutInspector 的痛点&#xff0c;分析问题并修复&#xff0c;最终将 LayoutInspector 变成一个稳定、好用的插件。 二、加速 Dump View Hierarchy 2.1 问题描述 开发复杂业务的同学…

【STM32-启动文件 startup_stm32f103xe.s】

STM32-启动文件 startup_stm32f103xe.s ■ STM32-启动文件■ STM32-启动文件主要做了以下工作&#xff1a;■ STM32-启动文件指令■ STM32-启动文件代码详解■ 栈空间的开辟■ 栈空间大小 Stack_Size■ .map 文件的详细介绍■ 打开map文件 ■ 堆空间■ PRESERVE8 和 THUMB 指令…

用Java获取键盘输入数的个十百位数

这段Java代码是一个简单的程序&#xff0c;用于接收用户输入的一个三位数&#xff0c;并将其分解为个位、十位和百位数字&#xff0c;然后分别打印出来。下面是代码的详细解释&#xff1a; 导入所需类库: import java.util.Scanner;&#xff1a;导入Scanner类&#xff0c;用于从…