S-NERF: NEURAL RADIANCE FIELDS FOR STREETVIEWS

S-NeRF是一种新的方法,能同时重建大规模静态背景和动态前景,如自动驾驶场景中的移动车辆。作者通过优化相机位姿、使用基于重投影的深度方法去除异常值,以及对移动车辆采用对象中心坐标系来处理动态元素。此外,他们应用Mip-NeRF-360对大场景建模,SoftRasterizer计算车辆深度,并利用NLSPN进行深度补全。通过重投影和几何一致性计算,文章提出了一种深度监督策略,以及可学习的置信度参数。尽管涉及复杂的损失函数设计,S-NeRF在nuscenes和waymo数据集上展示了有效性能。
部署运行你感兴趣的模型镜像

Abstract

作者提出了Street-view NeRF可以同时合成大型的静态背景和动态前景。文章亮点有以下

1. 作者重构了场景表达函数并优化了相机位姿

2. 作者提出了一种基于重投影的深度方法用来剔除depth outliers

3. S-NeRF可以重建动态车辆

4. 在nuscenes 和waymo上做了实验验证

作者把S-NeRF归类为Large-scale NeRF和Depth Supervised NeRF

Method

Camera Pose Processing

Pose Refinement:

作者使用了NeRF--在原有数据集的基础上做了pose的进一步优化(与此相似也可以进行其他的操作,见 GitHub - awesome-NeRF/awesome-NeRF: A curated list d 的pose estimation部分)

Moving Vehicles:

这个地方作者采用object-centric的思想,把坐标系转为vehicle的body坐标系,这样的话,就相当于小汽车没有动,只有相机在动了(水不转山转是吧)。

 

Representation of street scenes

Background Scenes:

说起来自动驾驶的场景往往都挺大的,怎么办呢?Mip-NeRF-360 scene parameterization 安排:

 Moving Vehicles:

首先创个initial mesh:主要是follow Geo Sim这篇文章(这个应该是没开源)

GeoSim: Realistic Video Simulation via Geometry-Aware Composition for Self-Driving | Yun Chen

然后就是Follow Soft Rasterizer的思路求解图像中Moving Vehicles的深度:

Soft rasterizer: A differentiable renderer for image-based 3d reasoning
 

Depth Supervision

作者首先试图补全深度,随后利用重投影置信度以及几何置信度对深度进行评估

深度补全:

将点云累积以后,利用NLSPN对深度进行补全。

NLSPN:

GitHub - zzangjinsun/NLSPN_ECCV20: Park et al., Non-Local Spatial Propagation Network for Depth Completion, ECCV, 2020

Reprojection Confidence

将target image 重投影到source image上:

 计算投影前后的误差:

Geometry Confidence

 根据重投影计算Geometry Consistency:

根据重投影计算Flow Consistency:

作者定义了一组参数\hat{\mathcal{C}}=\sum_i{\omega_i\mathcal{C}_i} , where \sum_i{\omega_i}=1, i \in {rgb,ssim,depth,flow} , 这组参数是learnable 的,可以将模型自动聚焦到正确的confidence上。

Loss设计

 比较难理解的是smooth loss的设计,这个作者是参考MINE这篇文章,这个我下篇文章再做笔记。

参考文献:

Xie, Ziyang, et al. "S-NeRF: Neural Radiance Fields for Street Views." arXiv preprint arXiv:2303.00749 (2023)

 

 


 

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### 实现 Neural Radiance Fields (NeRF) 的 Julia 版本 Neural Radiance Fields 是一种用于从多视角图像合成新视图的技术。该方法通过训练一个连续的场景函数来表示三维环境中的辐射度,从而能够渲染高质量的新视角图像。 在 Julia 中实现 NeRF 需要几个关键组件: 1. **数据准备** 数据集通常由一组不同角度拍摄的对象或场景的照片组成。这些照片需要经过预处理以便于后续模型训练[^1]。 2. **网络架构设计** 使用深度学习库 Flux 或 Knet 来构建一个多层感知器(MLP),这个 MLP 将位置坐标作为输入并预测对应的颜色和体积密度值。为了提高效率,可以采用分层采样策略以及引入空间编码技术如 Positional Encoding[^2]。 3. **损失函数定义** 定义合适的损失函数对于优化至关重要。常见的做法是计算预测像素颜色与真实图片之间的均方误差(MSE)[^3]。 4. **渲染过程模拟** 渲染阶段涉及到沿着射线积分得到最终观察到的颜色。这一步骤可以通过数值积分完成,在实践中常用的方法有反向投影法等[^4]。 下面是一个简单的伪代码框架展示如何用 Julia 和 Flux 库搭建基本版 NeRF: ```julia using Flux, Statistics, Random struct NerfModel model::Chain end function positional_encoding(x, L=10) encoded = [] for i in 0:L-1 push!(encoded, sin.(2^(i)*π*x)) push!(encoded, cos.(2^(i)*π*x)) end vcat(encoded...) end # 初始化神经网络结构 nerf_model = Chain( Dense(63, 256, relu), Dense(256, 256, relu), Dense(256, 256, relu), Dense(256, 4) ) # 训练循环简化版本 for epoch in 1:num_epochs # 获取一批次的数据 batch_data = get_batch() # 前向传播 predictions = nerf_model(positional_encoding(batch_data["points"])) # 计算损失 loss_value = mean((predictions .- batch_data["colors"]) .^ 2) # 反向传播更新参数... end ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值