作者丨黄浴

来源丨 计算机视觉深度学习和自动驾驶

arXiv上2022年2月10日上传的论文“Block-NeRF: Scalable Large Scene Neural View Synthesis“。

Block-NeRF,一种可以代表大规模环境的Neural Radiance FieldsNeRF)变型。具体来说,规模化的NeRF渲染跨越多个块(blocks)的城市规模场景时,将场景分解为单独训练的NeRF。这种分解将渲染时间与场景大小分解,使渲染能够扩展到任意大的环境,并允许对环境进行逐块更新。

采用几项架构更改,NeRF中应用数月采集的数据对不同环境条件具有鲁棒性。其中每个单独的NeRF添加外观嵌入、学习的姿势细化和可控的曝光,并引入一个程序对齐相邻NeRF之间的外观,以便无缝结合。从280万幅图像构建一个Block-NeRFs的网格,是目前为止最大的神经场景表征方法,渲染整个旧金山邻域。

在推理时,Block-NeRF把给定区域相关NeRF的渲染无缝地结合在一起。如图所示:3个月收集的数据重建旧金山的阿拉莫广场社区。Block NeRF可以更新环境中的各个块,而无需对整个场景进行再训练,如右侧所示。

视频结果可在公司项目网站找到:com/research/block-nerf。

作者在Mip-NeRF(“Mip-NeRF: A multiscale representation for anti-aliasing neural radiance fields“. ICCV‘21)的基础上构建block-NeRF实现,改善输入图像从许多不同距离观察场景影响NeRF性能的混叠问题。

同时采用NeRF-in the Wild(“Nerf in the wild: Neural radiance fields for unconstrained photo collections”. CVPR‘21)的技术,为每幅训练图像添加了一个潜代码,以便NeRF应用于Photo Tourism数据集的地标时处理不一致的场景外观。NeRF-in the Wild从数千张图像为每个地标创建一个单独NeRF,而本文方法结合许多NeRF,从数百万张图像中重建一个合条理的大环境。该模型还包含一个学习的相机姿势细化,借鉴于别人之前的工作。

Neural Radiance Fields(NeRF)是一种基于坐标的神经场景表示,通过不同的渲染损失进行优化,从已知摄像头姿势再现一组输入图像的外观。优化后,可以使用NeRF模型渲染以前未出现的视点。

NeRF场景表示是一对多层感知器(MLP)。第一个MLP fσ接收3-D位置x,并输出体积密度σ和特征向量。该特征向量与2-D观察方向d连接,并输入第二个MLP fc,后者输出RGB颜色c。该架构确保从不同角度观察时,输出颜色可以不同,允许NeRF代表反射和光泽材料,但由σ表示的基本几何结构只是位置的函数。

图像中的每个像素对应于穿过3D空间的光线 r(t) = o + td。为了计算r的颜色,NeRF沿射线随机采样距离{ti}Ni=0,并通过其MLP传递点r(ti)和2-D方向d,计算σi和ci如下:

为了让NeRF的MLP代表更高频率细节,输入的3-D位置x和2-D观察方向d分别通过逐个分量正弦位置编码γPE进行预处理:

NeRF的MLP采用单个3D点作为输入。然而,这忽略沿包含该点光线相应图像像素的相关联足迹(footprint)以及沿包含该点光线的时间间隔长度,在渲染新摄像头轨迹时会产生锯齿畸变(aliasing artifacts)。Mip-NeRF用投影的像素足迹沿光线(而不是间隔)采样圆锥截体(conical frustums)来解决这个问题。为了将这些截体馈入到MLP中,Mip- NeRF将每个截体近似为高斯分布,并用其在输入高斯分布的期望替换其位置编码:

相当于一个集成位置编码。


当试图表现像城市这样规模的场景时,训练一个单一NeRF是不合适的。相反,将环境拆分为一组block-NeRF,这些block-NeRF可以并行独立训练,并在推理过程合成。这种独立性能够通过额外block-NeRF或更新块来扩展环境,而无需重新训练整个环境。

动态地选择相关的block-NeRF进行渲染,然后在遍历场景时以平滑的方式进行合成。为了辅助这种合成,该方法优化外观码以匹配照明条件,并用基于每个block-NeRF到新视图的距离,计算插值权重。

单个block-NeRF的布置应集中确保目标环境的完全覆盖。通常在每个交叉口设置一个block-NeRF,将交叉口本身和任何连接的街道覆盖75%,直到它汇入下一个交叉口。这导致连接街区的任何两个相邻block之间有50%的重叠,使外观对齐更容易。遵循此过程意味着block大小是可变的;如有必要,可在交叉口之间引入附加block作为交叉口的连接器。

通过地理(geographical)过滤器,确保每个块的训练数据精确地保持在其预期范围内。这个过程可以自动化,并且只依赖于基本的地图数据,如OpenStreetMap。

请注意,只要整个环境被至少一个block-NeRF覆盖,其他布局启发方式也是可能的。例如,一些实验中沿单个街道以均匀距离放置blocks,并将block的大小定义为围绕block-NeRF原点的球体,如图所示:

注:低可见性的block-NeRF将被丢弃(bottom Block-NeRF),只渲染其余块的颜色输出。然后根据每个block原点到目标视图的距离,合并渲染。

鉴于数据的不同部分可能在不同的环境条件下被捕获,遵循NeRF-in the Wild方法,用Generative Latent Optimization方法(“Optimizing the latent space of generative networks”. arXiv 2017)来优化每幅图像的外观嵌入向量,如图所示:

其模型是mip NeRF所提出模型的扩展。第一个MLP fσ预测3-D空间x位置的密度σ。该网络还输出与2-D观察方向d、曝光水平和外观嵌入相连接的特征向量。这些都输入到第二个MLP fc,该fc输出点的颜色。此外,训练了一个可见性网络fv来预测空间一个点在训练视图是否可见,该网络用于在推理过程中剔除block-NeRF。

这样NeRF可以解释一些外观变化的情况,比如天气和光线的变化。此外,还可以操纵这些外观嵌入,在训练数据中在不同观察条件之间进行插值(例如多云与晴朗的天空,或白天和夜晚)。如图显示不同外观的渲染示例:


虽然假设提供摄像头姿势,但学习正则化姿势的偏移,对进一步对齐是有利的。在以前基于NeRF的模型中已经有姿势细化的相关工作。这些偏移是按驾驶分段学习的,包括平移和旋转分量。与NeRF本身一起来优化这些偏移,在训练的早期阶段显著地调整偏移,这样允许网络在修正姿势估计之前首先学习一个粗结构。

训练图像可以在各种曝光水平下拍摄,如果不加以解释,可能会影响NeRF训练。将摄像头曝光信息输入到模型的外观预测部分,NeRF可以补偿视觉差异。具体来说,曝光信息被处理为γPE(快门速度 × 模拟增益 / t),其中γPE是有4级的正弦位置编码,t是比例因子(实践中取1000)。如图可以找到不同学习曝光的示例:

虽然该方法用外观嵌入来解释外观的变化,但假设场景测量在整个训练数据中是一致的。任何可移动目标(如汽车和行人)通常都会违反这一假设。因此,用一个语义分割模型(“Panoptic-deeplab: A simple, strong, and fast baseline for bottom-up panoptic segmentation“. CVPR‘20)生成常见可移动目标的掩码,并在训练期间忽略掩码区域。虽然这并没有考虑环境中其他静态部分的变化,例如建筑,但它已经考虑最常见的几何不一致类型。

当合并多个block-NeRF时,有一点可能很有用,即了解特定空间区域在训练期间是否对给定NeRF可见。用一个额外的小MLP fv扩展模型,该MLP fv经过训练学习采样点可见性的近似值。对于沿训练光线的每个样本,fv取3-D位置和2-D观察方向,并回归该点的相应透射率(transmittance)。该模型与提供监督的第一个MLP fσ一起训练。

透射率表示一个点在特定输入摄像头的可见度:自由空间的点或第一个相交目标表面上的点,其透射率接近1;第一个可见目标内部的或后面的点,其透射率接近0。如果一个点从某些视点看到,而从其他视点不能看到,则回归后的透射率值将是所有训练摄像头的平均值,介于0和1之间,表明该点被部分观察。这里可见度的预测方法,不是NeRV(”NeRV: Neural reflectance and visibility fields for relighting and view synthesis“. CVPR‘21)方法那样通过为恢复可重照明的NeRF模型采用MLP预测环境照明的可见性,而是直接预测训练光线的可见性。

提出的可见性网络(visibility network)很小,可以独立于颜色和密度网络运行。在合并多个NeRF时,这个很有用,有助于确定特定NeRF是否可能在给定位置产生有意义的输出。可见度预测还可用于确定在两个NeRF之间进行外观匹配的位置。


环境可以由任意数量的block-NeRF组成。为了提高效率,用两种滤波机制:1)只渲染给定目标视点的相关blocks;2)只考虑在目标视点设定半径内的block-NeRF。此外,对于每个候选,计算相关的可见性。如果平均可见度低于一个阈值,放弃该block-NeRF。可见性可以快速计算,因为其网络独立于颜色网络,并且不需要按照目标图像分辨率进行渲染。滤波后,通常还有1-3个block-块NeRF需要合并。

每个过滤的block-NeRF渲染彩色图像,并用摄像头原点C和每个block-NeRF的中心xi之间的距离加权,来进行插值。内插在二维图像空间完成,并在block-NeRF之间产生平滑过渡。

在block-NeRF训练后,学习模型的外观可以由外观潜码控制。这些码在训练过程中随机初始化,因此,当输入不同block-NERF时,相同码通常会导致不同的外观。这在合成时是不可取的,可能会导致视图之间的不一致性。给定一个block-NeRFs的目标(target)外观,这里目的是匹配其在其余block的外观。为了实现这一点,首先在相邻block-NeRF对之间选择一个3-D匹配位置。对于两个block-NeRF,该位置的可见度预测应较高。

给定3-D匹配位置,冻结block-NeRF网络权重,只优化目标(target)外观码,减少各自渲染之间的L2损失。这种优化很快,在100次迭代中收敛。虽然不一定会产生完美的对齐,但此过程会对齐场景的大多数全局和低频属性,例如时间、颜色均衡和天气,这是成功合成的先决条件。如图显示的是一个优化示例:其中外观匹配将白天的场景转换为夜间,以匹配相邻的block-NeRF。

优化的外观在场景中迭代传播。从一个根block-NeRF开始,优化相邻的外观,并从那里继续这个过程。如果围绕目标(target)block-NeRF的多个块已经被优化,计算损失时考虑其中的每一个。


实验和传统重建方法COLMAP(开源)比较:


该方法通过分割的掩码在训练过程中将瞬态目标过滤掉。如果目标未得到正确掩码,可能会在生成的渲染中造成瑕疵。例如,即使汽车本身被正确地移除,汽车的阴影也经常保留下来。随着树叶季节性变化和随风移动,植被也打破这种假设,其导致树木和植物的模糊表示。类似地,训练数据中的时间不一致性(如施工作业)也不会自动处理,需要手动重新训练受影响的blocks。

此外,目前无法渲染包含动态目标的场景,限制Block NeRF对机器人技术中闭环仿真任务的适用性。未来这些问题可以通过在优化过程学习瞬态目标或直接建模动态目标来解决。特别是,场景可以由环境的多个block-NeRFs和单个可控目标(object)NeRFs组成。通过使用分割掩码或边框,可以促进分离。

在模型中,场景中远处的目标与附近目标的密度不同,这导致重建更加模糊。这是采样无边界体积表示的一个问题。NeRF++(“Nerf++: Analyzing and improving neural radiance fields“. arXiv, 2020)和Mip NeRF 360(“Mip-nerf 360: Unbounded anti-aliased neural radiance fields“. arXiv, 2021)中提出的技术有可能用于生成更清晰的远距离目标渲染。

在许多应用中,实时渲染是关键,但NeRFs渲染的计算成本很高(每幅图像高达数秒)。几种NeRF缓存技术或稀疏体素网格(sparse voxel grid)可用于实现实时block-NeRF渲染。类似地,有多个并行工作已经展示将NeRF表征的训练速度提高多个数量级的技术。

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

谷歌和伯克利分校的新工作:规模化大场景的神经绘制方法Block-NeRF相关推荐

  1. layui table动态选中_NeurIPS 2020 | 伯克利新工作: 基于动态关系推理的多智能体轨迹预测问题...

    公众号:将门创投(thejiangmen)作者:加州大学伯克利分校在读博士生 李家琛卡内基梅隆大学在读硕士生 杨帆 NeurlPS 2020系列论文解读 第·1·期 本文将分享来自UC Berkele ...

  2. 伯克利计算机科学研究生,加州大学伯克利分校

    项目特点 加州大学伯克利分校电气工程与计算机科学系开设有以下学位项目,分别是: 电气工程与计算机科学理学硕士(MS in Electrical Engineering and Computer Sci ...

  3. 伯克利计算机科学录取率,Berkeley的CS「加州大学伯克利分校计算机科学系」

    加州大学伯克利分校电气工程与计算机科学系开设有以下学位项目,分别是: 电气工程与计算机科学理学硕士(MS in Electrical Engineering and Computer Sciences ...

  4. 加州大学伯克利分校是如何培养计算机学生的

    本文共9000多字,预计阅读时间16min 原文链接 加州大学伯克利分校电子工程和计算机科学系(EECS)是世界知名的院系,计算机领域在2020 USNews排名第一.EECS的使命是教育.创新和服务 ...

  5. 加州大学计算机硕士,加州大学伯克利分校计算机科学硕士

    加州大学伯克利分校计算机科学硕士(M.S. in Computer Science):为期1-2年,共计24个学分,要求申请者本科毕业,不限计算机科学专业背景.该项目以授课内容为主,含有一定的研究内容 ...

  6. 加州大学计算机硕士,加州大学伯克利分校cs专业

    加州大学伯克利分校cs专业电气工程与计算机科学申请TOEFL要求90,IELTS要求7.0,GPA要求3.0,GRE要求Required,申请截止日期12月9日. 加州大学伯克利分校电气工程与计算机科 ...

  7. 伯克利计算机科学录取率,加州大学伯克利分校计算机科学

    加州大学伯克利分校计算机科学硕士为期1-2年,共计24个学分,要求申请者本科毕业,不限计算机科学专业背景.该项目以授课内容为主,含有一定的研究内容.分带毕业论文和不带毕业论文两种模式.毕业生可选择就业 ...

  8. 伯克利大学计算机专业课程表,University of California Berkeley Global Access 加州大学伯克利分校学期学分课程.doc...

    University of California Berkeley Global Access 加州大学伯克利分校学期学分课程 项目概览项目名称加州大学伯克利分校学期学分课程 University o ...

  9. 加州大学伯克利分校与NTT合作以加速采用智能技术

    加州伯克利--(美国商业资讯)--加州大学伯克利分校(UC Berkeley)和NTT Corporation (NTT)今天宣布了一项互联校园试点项目.该项目将分析校园内Bancroft Way区的 ...

最新文章

  1. 第十五周学习进度博客
  2. git添加user及repository
  3. java将字符串和字符串数组互相转换方法
  4. Apache的网页和安全优化
  5. Django路由系统
  6. 【结论】棋盘(jzoj 2297)
  7. lambda语法_Java Lambda语法替代
  8. css盒模型中margin很牛逼
  9. vc++ 6.0 堆栈_在C ++中使用链接列表实现堆栈
  10. Java日期操作工具类
  11. 毕啸南专栏 | 对话驭势CEO吴甘沙:无人车结盟竞争是大势所趋
  12. Coinbase是如何在其加密货币交易平台上应对扩展性挑战的
  13. CTU 2019 Open Contest G.Beer Mugs
  14. 数据结构——>顺序存储二叉树
  15. 问题:双击Excel文件提示文件找不到,只打开程序不同时打开文件,但通过打开对话框却能打开文件。
  16. 【win10专业版】ultraiso如何制作光盘启动盘
  17. 西北工业大学软件学院大数据技术实验(二)
  18. Redis配置详解(转)
  19. CSS指北——浮动(Floating)规则详解
  20. 阿里云服务器1核1G1M能放多少个网站 跑多少流量

热门文章

  1. 爱立信与SK电讯等开展5G测试 将加强VR/AR及云服务连接速度
  2. vue2.0 与 bootstrap datetimepicker的结合使用
  3. 关于preg_match() / preg_replace()函数的一点小说明
  4. ElasticSearch+ElasticGeo+Geoserver发布ES地理数据
  5. Jenkins Mac安装更改用户名
  6. Cocos2d中从场景切换到UIViewController视图方法总结
  7. 败了一块7600GS AGP显卡
  8. Java Web开发API Boy如何进阶?
  9. 贝壳一站式大数据开发平台实践
  10. 基于Flink的在线机器学习系统架构探讨