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

READ: Large-Scale Neural Scene Rendering for Autonomous Driving

READ: Large-Scale Neural Scene Rendering for Autonomous Driving :面向自动驾驶的大规模神经场景绘制
门卷积

https://www.jianshu.com/p/09fc8490104d
https://blog.csdn.net/weixin_44996354/article/details/117409438

摘要:论文提出了一种大规模神经绘制自动驾驶场景合成方法,使得在PC机上通过多种采样方案合成大规模驾驶场景成为可能。为了表示驾驶场景,提出了一个𝜔−𝑛𝑒𝑡渲染网络,用于从稀疏点云中学习神经描述符。该模型不仅可以合成真实感驾驶场景,而且可以对驾驶场景进行拼接和编辑。
介绍:
基于神经辐射场(NeRF)的方法在多视点真实感场景合成中取得了很好的效果,NeRFW 利用潜在优化编码和分割动态来合成野外场景。与纯粹依赖于每场景拟合的基于NeRF的方法不同,NPBG 从原始点云数据中学习神经描述符,对局部几何和外观进行编码,避免了经典点云在空场景空间中的采样光线,反映了真实的世界场景的几何特征。基于点的神经绘制方法通过三维点云信息初始化场景,可以用较少的捕获图像合成较大的场景。
主要工作:
论文提出了神经场景绘制方法,通过高效的蒙特卡罗采样、大规模点云筛选和patch sampling,实现了大规模驾驶场景的合成。为了从稀疏点云合成真实感驾驶场景,提出了一种𝜔−𝑛𝑒𝑡网络,通过基本门模块过滤神经元描述符,并采用不同策略融合相同尺度和不同尺度的特征。通过𝜔−𝑛𝑒𝑡,我们的模型不仅可以合成真实感场景,还可以通过神经描述子编辑和拼接场景。此外,我们还能够更新特定区域,并将它们与原始场景缝合在一起。场景编辑可用于合成来自不同视角的各种驾驶场景数据,甚至用于交通紧急情况。

1、Overview

输入一组输入图像和点云𝑃= {𝑝1,𝑝2,,,𝑝N}以及相机参数,得到模拟场景,可以拼接编辑。主要分为三部分:光栅化、稀疏点云采样,𝜔−𝑛𝑒𝑡渲染网络。pipeline如下图
在这里插入图片描述
首先对输入图像进行配准,然后通过特征点匹配和稠密构造得到场景的点云。我们以几种分辨率光栅化点。给定点云𝑃、可学习的神经描述符𝐷和摄像机参数𝐶,我们提出𝜔-𝑛𝑒𝑡渲染网络通过过滤从数据中学习的神经描述符并融合相同尺度和不同尺度的特征来合成真实的驾驶场景。

稀疏3D点云𝑃𝑖可以通过经典的sfm和MVS pipeline获得,每个点pi有一个神经描述符编码场景内容(与NPBG相同)。点云P中的每个点有位置信息:𝑝𝑖= {𝑥𝑖,𝑦𝑖,𝑧𝑖},外观特征通过图像像素的RGB值映射到对应的三维空间得到的,神经描述符从输入点云计算,即表示局部几何形状和光度特性的本征矢量。
通过将梯度传播到输入端来更新这些特征,从而使神经描述符的特征能够从数据中自动学习。给定摄像机的内外参数,可以通过设计8维神经描述符来表示RGB值,从而从不同的角度观察场景。在光栅化阶段,针孔摄像机𝐶采集𝑊×𝐻的图像,构造一个由光栅化图像组成的金字塔,{𝑆𝑡}(t=1~4),空间尺寸为W/2t ×H/2t该金字塔是由通过深度测试的点的神经描述符分配给每个像素而形成的。然后,在摄像机的全投影变换下将其投影到像素上。
本质上,渲染网络表示了一个局部3D功能𝑓,它输出在点𝑥具体的神经场景描述𝑓(𝑖, 𝑥) , 由其局部框架中的神经点建模。

2、Sampling with Sparse Point Cloud

为了减少内存使用提高训练效率,利用稀疏采样策略,从原始可用像素的1/4生成稀疏点云,从而只得到训练点云总数的25%。

筛选出被遮挡的点云

为了避免更新被遮挡点的描述符,近似每个点的可见性。通过构造一个Z缓冲区来使用最近的光栅化方案,仅保留像素位置处具有最低Z值的点。神经描述符避开远离当前帧的相机的点以更好地合成场景。从而减少了计算遮挡点云的计算量,大大提高了训练效率。类似于NPBG的操作。

蒙特卡罗抽样

由于场景中点云的分布不同,区域点云丰富的地方,具有明显的特征。对于天空或动态物体的区域,由于缺乏明显的特征或特征点较少,相应的区域点云较少。为了有效地训练,提出了动态训练策略,利用蒙特卡洛方法对大量驾驶场景数据进行采样。对于图像集𝑆𝑒 在训练阶段𝑒,
在这里插入图片描述
𝑄(𝐼𝑒)是图像𝐼𝑒的综合质量,是通过感知损失来计算的。采用每个阶段性能最差的Top 𝑛 个样本作为训练数据。该模型通过动态采样的训练策略,加强了对点云稀疏区域的学习,减少了整体训练时间。

Patch sampling

通过一种采样策略将整幅图像随机划分为多个patch(图像块),该策略可以根据GPU可用内存大小选择大小为𝑤×ℎ的随机patch。patch中像素的比例𝑤 × ℎ,占整个图像𝑊×𝐻的比例小于15%。给定如下的内参K
在这里插入图片描述
𝑓𝑥和𝑓𝑦分别表示𝑥和𝑦轴的焦距。(𝑐𝑥,𝑐𝑦)是主点相对于图像平面的位置。图像坐标系(Ox-y)与像素坐标系(Ou-v)(仿射变换)的转换矩阵
对于在Se中的每张图像I,patch集合 Sp通过以下策略获取,以确保场景中的所有区域都可以训练
在这里插入图片描述
其中𝛼是缩放比。它移动patch(𝑥Δ,𝑦Δ)以增强来自不同视图的场景的合成质量。

3、𝜔 − 𝑛𝑒𝑡

点云,尤其是外部重建方法,通常具有降低渲染质量的孔和异常值。受MIMOUNet 的启发,提出了𝜔-𝑛𝑒𝑡,一种基于稀疏点云合成新视图的绘制网络,它由三部分组成。
给定稀疏点云𝑃,绘制网络的目的是学习可靠的神经描述符来表示场景。然而,从点云学习的神经描述符仍然存在漏洞。为了解决这个问题,设计了一个基本的门模块来过滤不同尺度的神经描述符。
如下图所示。考虑到计算效率,首先采用3 × 3卷积层𝐶𝑂𝑁𝑉来提取神经元描述子的特征𝐷𝑖。通过sigmoid函数学习掩码以过滤神经描述符中的无效值。输出是(0,1)的取值范围,它表示特征在神经描述符中的重要性。为了提高学习效率,使用ELU激活函数。⊗ 表示元素乘法。将初始特征与过滤后的特征连接(©)为新特征。最后,使用一个额外的1 × 1卷积层来进一步细化级联特征。此外,引入门卷积以重新过滤融合的特征。
在这里插入图片描述
上图是基本门模块。从稀疏点云中学习的神经描述子可以有效地筛选出无效值。

Fusing features at different scales.

点云中缺少拓扑信息会导致 holes and bleeding。给定𝐹𝑎带有孔洞的神经描述符的𝐷𝑖特征,如下图中的红框所示。虽然𝐷𝑖具有更高的分辨率和精细的细节,但它仍然遭受更大的表面bleeding。对于没有值的特征块𝐹𝑎,可以在平均合并之后获得粗略值。𝐷𝑖+1的分辨率较低,但能够减少表面bleeding。
对于稀疏点云,在两种不同的尺度下融合特征仍然不能完全填充该孔。因此,提出了建议𝜔-𝑛𝑒𝑡融合多尺度特征。使用了四个尺度的神经描述符,以达到效率和准确性之间的折衷。该模型通过融合不同尺度下的特征,从数据中学习稀疏点云中缺失的点,从而合成出真实感的天空、远处物体等新视图。在上采样阶段,采用双线性插值代替转置卷积。这是因为转置卷积基本上是可学习的上采样,并且可学习的参数招致额外的计算。
在这里插入图片描述

Fusing features at the same scale

神经描述符𝐷𝑖+𝑖 的特征𝐹𝑏,来自𝐷𝑖 通过平均池化操作。神经描述符𝐷𝑖+𝑖的 下采样特征𝐹𝑑 ,将其自身与最后一个1×1层特征连接,用于细节增强以保留丢失的信息。同时, 大小为𝐻/2 ×𝑊/2的特征𝐹𝑐,由使用门卷积的门模块的神经描述符𝐷𝑖获得的。融合相同尺度的𝐹𝑐 和𝐹𝑑 特征可以利用特征之间的互补信息,其中融合特征是𝐹𝑓𝑢𝑠𝑖𝑜𝑛 = 𝐹𝑐 + 𝐹𝑑 ⊗ 𝐹𝑐 , 如图上的红圈所示。

4、Scene Editing and Stitching

由于我们提出的模型从点云中学习神经描述符来表示场景,因此可以通过改变训练好的神经描述符来编辑场景。

相关文章:

READ: Large-Scale Neural Scene Rendering for Autonomous Driving

READ: Large-Scale Neural Scene Rendering for Autonomous Driving :面向自动驾驶的大规模神经场景绘制 门卷积 https://www.jianshu.com/p/09fc8490104d https://blog.csdn.net/weixin_44996354/article/details/117409438摘要:论文提出了一种大规模神…...

Linux环境C语言开发基础

C语言是一门面向过程的计算机编程语言,与C、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言诞生于美国的贝尔实验室,由丹…...

string类(上)

string类(上)1.标准库中的string类2.string类对象的常见构造①string()②string(const char* s)③string(size_t n,char c)④string(const string&s)⑤string(const string& str,size_t pos,size_t lennpos)⑥string(const char* s,s…...

ElasticSearch快速入门详解(亲测好用,强烈推荐收藏)

3.快速入门 接下来快速看下elasticsearch的使用 3.1.概念 Elasticsearch虽然是一种NoSql库,但最终的目的是存储数据、检索数据。因此很多概念与MySQL类似的。 ES中的概念数据库概念说明索引库(indices)数据库(Database)ES中可…...

出入了解——Vue.js

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…...

MySQL8 双主(主主)架构部署实战

前言 大家好,我是 沐风晓月 本文收录于《数据库入门到精通系列》专栏, 更多内容可以关注我的csdn博客。 本文主要讲解MySQL主主架构实战,在开始之前需要根据下面的提示来配置环境: Linux基础命令不熟参考: 《linux基本功-基础…...

【数据结构】第三站:单链表

目录 一、顺序表的缺陷 二、链表 1.链表的概念以及结构 2.链表的分类 3.单链表的逻辑结构与物理结构 三、单链表的实现 1.单链表的定义 2.单链表的接口定义 3.单链表的接口实现 四、单链表的实现完整代码 一、顺序表的缺陷 在上一篇文章中,我们了解了顺序…...

【蓝桥杯2020】七段码

【题目描述】 七段码 HUSTOJ 题目导出文件 [蓝桥杯2020] 第十一届蓝桥杯第二次省赛—填空题E题 七段码 小蓝要用七段码数码管来表示一种特殊的文字。 上图给出了七段码数码管的一个图示,数码管中一共有 7 段可以发光的二 极管,分别标记为 a, b, c,…...

Spark读取JDBC调优

Spark读取JDBC调优,如何调参一、场景构建二、参数设置1.灵活运用分区列实际问题:工作中需要读取一个存放了三四年历史数据的pg数仓表(缺少主键id),需要将数据同步到阿里云 MC中,Spark在使用JDBC读取关系型数…...

【文心一言】什么是文心一言,如何获得内测和使用方法。

文心一言什么是文心一言怎么获得内测资格接下来就给大家展示一下文学创作商业文案创作数理逻辑推算中文理解多模态生成用python写一个九九乘法表写古诗前言: 🏠个人主页:以山河作礼。 📝​📝:本文章是帮助大家了解文心…...

CentOS8服务篇10:FTP服务器配置与管理

一、安装与启动FTP服务器 1、安装VSFTP服务器所需要的安装包 #yum -y install vsftpd 2、查看配置文件参数 Vim /etc/vsftpd/vsftpd.conf (1)是否允许匿名登录 anonymous_enableYES 该行用于控制是否允许匿名用户登录。 (2&…...

笔试强训3.14

一、选择题 1.以下说法错误的是(C) A.数组是一个对象 B.数组不是一种原生类 C.数组的大小可以任意改变 D.在Java中,数组存储在堆中连续内存空间里 ​ 相关知识点:原生/内置数组是那八个,其他的都是引用的,借…...

elasticsearch 环境搭建和基本操作

参考资料 适合后端编程人员的elasticsearch快速实战教程 ElasticSearch最新实战教程 ElasticSearch配套笔记 自制搜索引擎 https://www.elastic.co/guide/en/elasticsearch/reference/7.17/setup.html restful风格的api REST 设计风格 例如以下springboot示例 RestContr…...

IDEA操作:Springboot项目打包为jar包并运行

在IDEA环境下对Springboot项目打包为jar包且在terminal运行操作 1、 2、 3、注意:在项目目录里创建一个用来存放jar包的文件夹(res),该路径不能使用IDEA设置的默认路径,必须手动创建。 4、 5、点击ok后加载运行包 (8…...

原理底层计划---JVM

二、JVM对空间大小怎么配置?各区域怎么划? 新生代:短时间生成,可以马上回收 老生代:少部分对象会存在很久,回收策略应不同 三、JVM哪些内存区域会发生内存溢出(程序计数器不会) …...

CSDN-猜年龄、纸牌三角形、排他平方数

猜年龄 原题链接:https://edu.csdn.net/skill/practice/algorithm-a413078fb6e74644b8c9f6e28896e377/2258 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议&#xf…...

【Linux】软件包管理器 yum

什么是软件包和软件包管理器 在 Linux 下需要安装软件时, 最原始的办法就是下载到程序的源代码, 进行编译得到可执行程序。但是这样太麻烦了,所以有些人就把一些常用的软件提前编译好, 做成软件包 ( 就相当于windows上的软件安装程序)放在服…...

一天吃透TCP面试八股文

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...

zzu天梯赛选拔

C. NANA去上课 — 简单数学 需要记录上一步处在哪个位置 然后判断如果是同一侧移动距离就是abs&#xff08;x1 - x2&#xff09; 如果不同就是x1 x2 #include <iostream> #include <cmath> using namespace std; #define int long long signed main() {int n; c…...

【C语言】一篇让你彻底吃透(结构体与结构体位段)

本章重点 主要讲解结构体和位移动的使用和定义与声明&#xff0c;并且结构体和位段在内存中是如何存储的。 文章目录结构体结构体类型的声明结构体特殊的声明结构体变量的定义和初始化结构体成员的访问结构的自引用结构体内存对齐结构体传参位段什么是位段位段的内存分配位段的…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...