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

DReg-NeRF: Deep Registration for Neural Radiance Fields论文解读

目录

一、导言

二、NeRF2NeRF

三、相关工作

1、神经辐射场

2、点云配准

3、NeRF配准

四、DReg-NeRF

1、NeRF神经辐射场查询

2、特征提取

3、transformer

4、Decoder

五、损失函数


一、导言

        该论文来自于ICCV2023,主要提到一种DReg-NeRF的配准方法,这也是第一个使用神经辐射场作为输入且没有任何人工标注或初始化的配准模型。(第一个使用NeRF做配准的是NeRF2NeRF)

(1)与以前需要人工标注关键点不同,可以在无人工标注或初始化情况下配准NeRF。

(2)通过自注意力和交叉注意力层的Transformer来学习NeRF之间的关系,而不是依赖传统的方法。

(3)创造了一个NeRF数据集,用于配准多个NeRF,该数据集通过渲染Objaverse数据集中1700多个3D物体而得到的。(伏笔)

二、NeRF2NeRF

        在NeRF2NeRF中第一次提到使用NeRF来进行点云配准,通过引入表面场作为几何表示,而不是NeRF经典的五个参数作为几何表示。通过将NeRF配准问题转换为一个稳健的优化问题,对齐两个场景中的表面场,使配准对照明差异不敏感。

        表面场:表示一个点在空间中位于物体表面的最大表面击中概率,通过计算从相机到该点的光线上的投射概率和该点出的密度概率的乘积定义的。

        表面场计算公式如下,其中o是相机位置,S(t|r)是沿光线r到达位置t处的表面击中概率。

                                      S(x)=max_{o \in O}S(||o-x|| \ |(o,\frac{o-x}{||o-x||}))

        由于在不同的场景中,预训练的NeRF模型可以产生不同的密度函数,从而导致表面场的差异,而通过二值化处理表面场,可以提高表面场的鲁棒性和可靠性。

        另外NeRF2NeRF引入基于Metropolis-Hastings采样方法,用于在神经辐射场优化中提高采样效率,避免对整个空间进行密集采样,而是集中采样在相关区域,大大提高优化效率。

三、相关工作

1、神经辐射场

        对于近期NeRF相关变体如下:

(1)Vanilla NeRF:Vanilla就是基本的意思,代表NeRF那篇工作。见上一篇博客。

(2)NSVF(Neural Sparse Voxel Fields):基于稀疏体素的NeRF的变体,可以有效表示场景的几何,且渲染速度更快。

(3)Plenoctree:基于多分辨率哈希编码的NeRF变体,可以实现更快的推理速度和更小的内存占用,使用多分辨率哈希表来存储场景的几何和辐射信息。

(4)Instant-NGP:同样的隐式编码体素特征到一个多分辨率哈希网格中。

(5)Block-NeRF:可扩展的NeRF变体,处理大型场景,将场景划分为多个块,来独立训练每一个NeRF模型。

(5)Mega-NeRF:可扩展的NeRF变体,处理更大型的场景,使用分层的NeRF模型,可以在不同分辨率下渲染场景,从而提高效率和可扩展性。

2、点云配准

        对于该论文,我们还借助以往的注意力机制,但不依赖于预计算的重叠标签。

3、NeRF配准

        NeRF2NeRF是第一个做NeRF的配准工作的,但是依赖于人造的关键点。

        ZeroNeRF可以不通过重叠来配准NeRF,但也存在需要初始化的配准。

        相比与以往的该工作,该论文考虑不适用人工交互的方式,来配准NeRF块。

四、DReg-NeRF

        DReg-NeRF网络输入源NeRF模型和目标NeRF模型,首先为每个NeRF模型训练多个NeRF块,并将其与一个占用体素网格关联,之后这两个体素网格输入到一个3DFPN中得到特征点云,接下来通过一个Transformer块,学习两个特征的关系,最后用解码器(单层注意力层)得到两者的对应关系和置信度分数,通过加权Kabsch-Umeyama算法,求解相对变换。

对于NeRF的介绍,请参考: NeRF: Representing Scenes asNeural Radiance Fields for View Synthesis 论文解读

1、NeRF神经辐射场查询

        首先从NeRF中建立一个分辨率为[x_{res},y_{res},z_{res}]的三维体素网格,并获取体素中心三维坐标为\left \{ \mathbf{X} \right \}

        定义每一个网格的分辨率为128^3,并定义中心为[0,0,0],之后从占用网格中获取一个二进制占用掩码M_{occ}通过光线追踪判断是否这个网格单元被占用,如果是空白的区域则赋值0,被占用则赋值1。

        由于存在噪声,定义密度掩码M_{df}M_{df}=\sigma > \sigma_t,其中\sigma_t为密度阈值,一般为0.7。

        完整的掩码定义:M=M_{occ} \cap M_{df}

        另外,计算体素颜色C和不透明度α,可以从NeRF定义得到。

        对于3D FPN的输入有体素网格[X,C,\alpha](共7维)和掩码M(1维)。

2、特征提取

        由于将NeRF转换成体素网格形式,所以论文中采用3D结构的backbone来进行特征提取。相比于以往的FPN结构,只采用最后一层输出特征G_f,并使用KPConv中提出的球形降采样解决体素特征网格过大的问题,得到下采样后的体素特征网格\hat{X}

3、transformer

        之后将下采样的体素特征网格输入到transformer中,其中自注意力层中,Q=K=V,使得权重一致。

        Transformer中仍然使用自注意力机制和交叉注意力机制结构。

4、Decoder

        解码器使用单头注意力机制来预测源点云和目标点云的交互点位置和置信分数。

        之后通过Kabsch-Umeyama算法,来预测姿态。

五、损失函数

        损失函数包括置信度损失、表面场损失和对应关系损失三部分。

参考文献:https://arxiv.org/pdf/2308.09386

参考代码:DReg-NeRF/conerf/base at main · AIBluefisher/DReg-NeRF · GitHub


http://www.kler.cn/a/287962.html

相关文章:

  • 如何在 Ubuntu 上安装 Jellyfin 媒体服务器
  • AtCoder Beginner Contest 380(A-F)
  • 移除元素(leetcode 27)
  • 树状数组+概率论,ABC380G - Another Shuffle Window
  • AR眼镜方案_AR智能眼镜阵列/衍射光波导显示方案
  • 帽子矩阵--记录
  • Flask框架 完整实战案例 附代码解读 【3】
  • 【ag-grid】列宽设置不生效探索
  • 基于vue框架的超市管理系统y9992(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • Linux_kernel简介01
  • JavaEE 第21节 UDP数据报结构剖析
  • 【区块链 + 物联网】可信保密的海洋大数据分析平台 | FISCO BCOS应用案例
  • SpringAOPSpring事物管理
  • UE5蓝图 抽卡出货概率
  • 批量替换字符串中的某子串序列为对应的另一子串序列(z3求解器解多元方程时很好用)
  • 【C#】字段
  • 在麒麟系统安装php7.4中遇到的问题
  • uniapp微信小程序3D XR-FRAME
  • 机器学习之监督学习(二)逻辑回归(二元分类问题)
  • 【ESP32】mqtt 发送和接收
  • 半导体是什么?
  • Spark MLlib模型训练—回归算法 Random forest regression
  • 【uniapp重大bug】uni-data-select的localdata改变,也会触发@change方法
  • Unity(2022.3.41LTS) - UI简介,了解
  • 鸿蒙(API 12 Beta3版)【媒体资源使用指导】Media Library Kit媒体文件管理服务
  • PHP高效进销存管理系统智能管理库存销售与采购系统小程序源码