点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
作者丨paopaoslam
来源丨 泡泡机器人SLAM
标题: AutoRF: Learning 3D Object Radiance Fields from Single View Observations
作者:Norman Muller, Andrea Simonelli, Lorenzo Porzi, Samuel Rota Bulo, Matthias Niener , Peter Kontschieder
来源:CVPR2022
编译:cristin
审核: zhh
摘要
大家好,今天为大家带来的文章NeRFReN: Neural Radiance Fields with Reflections。
我们引入了AutoRF:一种学习神经3D object表示的新方法,其中训练集中的每个对象只通过一个视图观察。这种设置与大多数现有的利用同一对象的多个视图、在训练期间使用显式先验或要求像素完美的注释的工作形成了鲜明地对比。为了解决这个具有挑战性的设置,我们建议学习一个规范化的、以Object为中心的表示,它的嵌入描述和分解形状、外观和Pose。每一种编码都提供了有关Object的通用性、紧凑的信息,这些信息在一次拍摄中被解码为新的目标视图,从而实现了新的视图合成。我们进一步提高重建质量,通过优化形状和外观码在测试时,将表示紧密拟合到输入图像。在一系列实验中,我们表明我们的方法可以很好地推广到看不见的物体,甚至跨越具有挑战性的真实世界街景的不同数据集,如nuScenes、KITTI和Mapillary metropolis。
Github: https://sirwyver.github.io/AutoRF/
主要工作与贡献
综上所述,我们的主要贡献和与现有工作的不同之处是:
1.我们引入了基于3D物体先验的新型视角合成,仅从单视角、in-the-wild 观测中学习,其中物体可能被遮挡,在尺度上有很大的变异性,可能会受到图像质量下降的影响。我们既不利用同一对象的多个视图,也不利用大型CAD模型库,或构建特定的、预先定义的形状;
2.我们成功地利用了机器生成的3Dbox和全景分割掩码,从而为学习隐式对象表示提供了不完善的注释,可以应用于现实世界数据上的新颖视图合成。大多数之前的作品都展示了对合成数据的实验,或者要求感兴趣的对象是非遮挡的,以及图像的主要内容(除了[13]利用[11]的遮罩);
3.我们的方法有效的编码感兴趣的对象的形状和外观属性,我们能够在单个镜头中解码为一个新的视图,并可选地在测试时进一步微调。这使得修正潜在的领域转移,并在不同的数据集上进行归纳,这一点迄今尚未得到证实。
算法流程
1. 问题
给定单个输入图像,我们的目标是将场景中存在的每个 3D 对象编码为一个紧凑的表示,例如,允许将对象有效地存储到数据库中,并在以后从不同的视图/上下文中重新合成它们阶段。虽然这个问题在过去 [15, 41] 中已经得到解决,但在训练这样的编码器时,我们专注于更具挑战性的场景。与在训练此类编码器时假设可以访问同一对象实例的至少第二个视图的绝大多数方法相反,我们专注于解决更具挑战性的设置,即只能从单个视角估计对象3D模型。此外,没有利用关于对象几何形状的其他先验知识(例如 CAD 模型、对称性等)。
图1 AutoRF的概述。我们的模型由一个编码器组成,该编码器从物体的图像中提取形状和外观代码,可以解码为在归一化的物体空间中操作的隐亮度场,并用于新的视图合成。通过利用机器生成的三维物体检测和全景分割,从真实世界的图像中生成物体图像。
2. 方法
为了能够在上述受限场景中训练编码器,我们利用预先训练的实例或全景分割器算法在图像中识别属于同一对象实例的2D像素,以及预先训练的单目3D对象检测器,以获得物体在3D空间中的姿态的先验信息。因此,在训练和测试时,我们假设为每个图像获取一组带有相关2D遮罩的3D边界框,它们代表检测到的对象实例,以及相机校准的信息。
通过利用有关对象 3D 边界框的信息,我们可以将对象表示与实际对象姿势和比例分开。我们获得了一个标准化的、以对象为中心的编码,它被分解为一个形状和一个外观组件。类似于条件 NeRF 模型,形状代码用于调节占用网络,它在归一化对象空间中输出给定 3D 点的密度,外观代码用于调节外观网络,在给定 3D 点的情况下提供 RGB 颜色 和归一化对象空间中的观察方向。这两个网络产生了 3D 对象的隐式表示。
2.1 准备工作
2.11 Images
给定存在多个interiest对象的 2D 图像,我们运行 3D 对象检测器以及全景分割,以便为每个对象实例提取 3D 边界框和实例掩码(见图 2)。边界框和蒙版用于生成检测到的对象实例的蒙版 2D 图像 I,适合固定的输入分辨率。此外,3D 边界框捕获对象在相机空间中的范围、位置和旋转,而分割掩码提供有关可能的遮挡 w.r.t 的每像素信息。场景中的其他物体。图像 I 中像素 u ∈ U 的 RGB 颜色由 Iu ∈ R3 表示,其中 U 表示其像素集。
2.1.2 归一化目标3D坐标空间
每个对象实例都有一个相关的3D边界框β,它在相机空间中识别一个矩形长方体,描述相关对象的姿态和范围。包含在三维包围盒β中的三维点可以通过同构映射到(中心)单位立方体O:=[−1,2]3称为归一化对象坐标空间(NOCS)。事实上,每个3D边界框都可以被转换、旋转和缩放成一个单位立方体。鉴于这一事实,我们将直接使用β来表示上述的异型,因此,将点从相机空间映射到NOCS
2.1.3 对象为中心γ相机
每一个三维场景的图像都有一个相关的相机,用ρ表示。ρ相机将像素u∈u映射到相机空间中的ρu: R+→R3,其中ρu(t)给出了t时刻沿射线的3D点。通过利用给定对象的边界框β,我们可以将每条ρu射线从相机空间映射到NOCS,产生以物体为中心的射线γu。具体来说,γu是一个单位速度重新参数映射射线β◦ρu。我们把γ称为给定对象的以物体为中心的相机
2.1.4 Occupancy Mask Y
我们使用全景分割产生一个与物体图像i相关联的2D占用掩模Y。占用掩模Y为每个像素u∈u提供了一个类标签Yu∈{+ 1,0,1}。前景像素,即属于对象实例掩码的像素,被分配标签+1。背景像素,即没有遮挡感兴趣的对象的像素,被分配标签−1。不能确定是否遮挡对象的像素被分配为标签0。如果一个像素属于不应该遮挡的语义类别,则该像素被分配为背景标签
图2 给定一个带有相应的3D对象边界框和占用掩码的RGB图像,我们的自动编码器学习在单独的代码中编码形状和外观。这些代码使各个解码器为给定的视图重新呈现输入图像。
2.2 网路结构
2.2.1输入
我们的架构将已检测到的对象的图像、NOCS 中的相应相机γ(通过利用有关对象的 3D 边界框的信息导出)和利用全景分割获得的占用掩码作为输入,
2.2.2 形状和外观编码器ΦE
我们通过神经网络ΦE将描述给定感兴趣对象的输入图像I编码为形状码φS和外观码φA;即(φS, φA):= ΦE(I)。该编码器包括CNN特征提取器,该CNN特征提取器输出中间特征,这些中间特征被送入两个平行的头部,负责分别生成形状和外观代码。下面的编码器和解码器的实现细节可以在补充材料中找到。
2.2.3 解码器ΨS形状
将形状码φS送入解码器网络ΨS,该解码器隐式输出占用网络σ;即σ:= ΨS(φS)。占用网络σ: O→R+输出一个给定的3D点x∈O的密度,用NOCS表示。
2.2.4 外观解码器Ψ
与形状译码器不同,外观译码器ΨA同时接受形状码和外观码的输入,隐式输出外观网络ξ,即ξ:= ΨA(φA, φS)。外观网络ξ ξ: O×S2→R3为给定的3D点x∈O输出RGB颜色,并在单位3D球体S2上的观察方向d上输出。
2.2.5 Volume Renderer V
占位网络σ和表象网络ξ组成了一个亮度场,代表了NOCS中的某一对象。我们可以通过使用[26]中提出的方法来渲染以对象为中心的射线γu来计算与u相关的颜色。然而,由于我们只对感兴趣的对象进行建模,所以以对象为中心的光线被限制在与o相交的点上。这产生了以下的体积渲染公式:
2.3 Loss
为了训练我们的架构,我们依赖于两个损失项:光度损失和占用损失。我们为一个给定的训练示例Ω = (I, γ, Y)提供损失,包括图像I,占用掩模Y,以对象为中心的相机γ。此外,我们假定从I出发用编码器ΦE和解码器ΨS和ΨA计算出了物体的辐亮度场(σ, ξ)。最后,我们用Θ表示架构中涉及的所有可学习参数。
2.3.1 光度LRGB损失
2.3.1 占有率LOCC损失。
实验结果
图3 在nuScenes测试数据上专门训练我们的模型后,从nuScenes(上)、KITTI(中)和Mapillary Metropolis(下)的单个未被看到的图像中合成完整场景的新视图。请注意对于不同尺度、宽高比、图像质量的物体所获得的高保真重建结果
图4 NuScenes的定性比较:单一实例的新视角合成实例。
图5 与NerfingMVS[29]进行深度估计的定性比较。NerfingMVS在这种带有严重反射的场景中失败了,表现类似于NeRF。
图6 在SRN-Cars数据集上进行定性比较,对比2视图pixelNeRF基线,说明我们的高保真、单视图重建结果。
图7 场景编辑的例子在nuScenes。从输入视图开始,我们可以改变对象的代码,合成新的场景布局。
点击阅读原文, 即可获取本文下载链接。
本文仅做学术分享,如有侵权,请联系删文。
3D视觉工坊精品课程官网:3dcver.com
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从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~