关于challenge:NeRF入门学习资料

68次阅读

共计 2680 个字符,预计需要花费 7 分钟才能阅读完成。

👋本文章次要记录无关 NeRF 和 SLAM 方面的材料。
作者是科研小白,做此文章一方面是学习记录,同时也想可能取得大家的反馈,从而一直地丰盛本人的知识面和方法论,因而心愿大家可能不吝赐教,也心愿大家可能给我提供一些学习交换的圈子!

教程材料

原生 NeRF Paper

http://arxiv.org/abs/2003.08934

【原创】NeRF 三维重建 神经辐射场 建模 算法详解 NeRF 相干我的项目汇总介绍。_哔哩哔哩_bilibili

b 站 up 主讲述 NeRF 原理,视频分辨率比拟低(明明我记得之前是比拟清晰的),然而比拟直白,容易了解一些 NeRF 的一些物理含意。(对于新事物的了解,我感觉最快的办法就是找点具象化的货色看看,了解其存在模式和含意,再去看实践根底)

Nerf-Medium

这个 Medium 上的教程强烈推荐看一下,能够联合论文的公式略微了解一下(间接看 Method 局部就 ok,带着目标看论文比拟容易了解)
留神:Medium 遇到很怪的一个点,不登陆收费,登陆反而免费了

体渲染: https://zhuanlan.zhihu.com/p/32431795

其余 NeRF 的材料

  • 花坛里的猫:【NeRF】入手训练新的三维场景
  • NeRF 代码参数解说
  • 绝对具体的 NeRF 解说资料

Tutorial for NeRF(对下面那个 Medium 的教程做的一些记录)

marching cubes 是一个生成 3D mesh 的算法
3D 数据的表达形式:从 3D voxels 到点云到 SDF
传统三维构建的独特毛病:

  • 相机:耗时和须要大量数据
  • 雷达:低廉
  • 人工建模消耗工夫和精力
  • 对于高反射物体、“网状”物体,如灌木丛和链状栅栏,或通明物体,都不适宜大规模扫描。

影响模型精度:stair-stepping effects and driff

一些综述

来自 Frank Dellaert 大佬整顿的:

  • overview from 2020
  • overview from 2021

NeRF 简略解说

概念

光场,其用不同方向观测角度下的光线扫描三维空间中的每个点,别离有五个变量、(别离是空间中点的三维坐标和光线的角度)

为什么只有两个变量,因为在空间中一个点定下来之后,就是经纬度的问题了,不像是形容位姿。

NeRF 基于光场(light/radiance fields)。NeRF 则是构建从光场的 5D 空间形容,到 4D 空间的映射(色彩,强度 density),\(c=(R,G,B) \),\(\sigma \)。density 能够了解为光线在五维空间中被截断的 likehood,比方遮挡。

NeRF 的规范范式 \(F:(x,d) \rightarrow (c, \sigma) \)

在生成式场景重建课题 (generalized scene reconstruction) 中,给定相机位姿和图像,还有许多 SFM 系列算法:COLMAP, Agisoft Metashape, Reality Capture, or Meshroom

之前为了做一个我的项目用了挺多三维重建的现成库:COLMAP、CMVS、Meshroom、VisualSFM 等,如果须要请在评论留言,我前面再出一篇文章介绍这些工具的应用。

劣势

  • 间接数据驱动
  • 场景的间断表白
  • 隐式思考物体个性:specularity 高光,roughness 粗糙度
  • 隐式表白光感

NeRF 的流程:

  1. 数据处理
    通过给定位姿和图像,构建射线,通过对射线进行采样生成数据点,采纳 coarse-to-fine 的形式,先平均分段,而后对每个段进行随机采样,这样就用 \(r = o + td \) 来示意每一个采样点,就是 \(r = (x,y,z) \),其中方向 \(d=(\theta ,\phi) \) 就是每个相机坐标的原点和 \(v_c=[0,0,-1] \) 通过 \(T_{wc} \) 转到世界坐标下,留神这里不须要加上 \(v_o \),因为只是代表一个朝向

    Axes3D.quiver(X,Y,Z,U,V,W,/,length=1,...)X,Y,Z 是箭头的终点坐标,U,V,W是箭头的方向组成
    留神:OpenGL 和 COLMAP 数据之间的坐标系问题

    NeRF OpenCV OpenGL COLMAP DeepVoxels 坐标系朝向

  1. 分层采样:是对每个均分的 bin 区间通过均匀分布的模式进行采样,这里如同还能够通过逆深度进行示意,次要是在射线中,nearfar 进行分段
  1. 模型构建通过采样取得初始数据后,就利用 NeRF 来构建 5D 到 4D 的映射,网络架构如下:

    留神这里的 PositionEncoder 不仅仅是 60,还会蕴含原来的 3 各个维度,即 L=10 的时候(cos,sin),3*20+3

    PositionEncoding:

  1. 训练:网络输入是 rgb_mapdepth_mapacc_mapweights 损失:\(Loss=MSE(rgb\_map,target\_img) \) 因为该过程是间接可微分的,因而能够求导反向流传

    • Coarse
      首先,须要通过网络输入从新渲染进去一个 rgb_map,他的流程是 Coarse-to-Fine 的,通过一个 Coarse 的 NeRF 输入对应的 \(c=(R,G,B) ,\sigma \),而后进行加权运算,就是体渲染的过程:

      1. 间断积分方程
      1. 离散化

      其中,\(\delta \) 是两个采样点之间的间距,\(\alpha \) 是传统的定义 \(\alpha_i = 1-exp(-\sigma_i \delta_i) \)

    • Fine(Hierarchical Volume sampling)

      通过 Coarse 网络输入的 \(\sigma \) 计算权重 \(w_i \),而后对用权重构建一个 pdf,依据累加失去的 cdf 进行重要性采样,这里其实跟轮盘赌有点相似,这样会产生一些新的节点 \(N_f \),联合 Coarse 阶段的采样点 \(N_c \)一并送入到网络中

      Fine 这里是将 \(N_F、N_c \) 进行了 cat 的

SDF 地图表白

TSDF 是对 SDF 一种截断,即限度栅格地 SDF 值在 -1 到 1 之间。首先是构建一个栅格坐标系:\([0,0,0] \),在实在空间中的表白为 \([x_0,y_0,z_0] \),对于每个体素有长宽高,假如都等于 l,这样空间的一个点 \([x,y,z] \)就能够表白到 TSDF 地图中的一个体素坐标。同样依据这种思维,取得栅格坐标为 \(p = [x_g,y_g,z _g] \),就可能转到世界坐标,进而转到相机坐标,通过联合相机的深度图,就晓得栅格的 TSDF 值:\(SDF(x) = cam_z(x) – dist(p) \)

网格生成之 TSDF 算法学习笔记

光线追踪光线示意:

👏本文参加了 SegmentFault 思否写作挑战赛,欢送正在浏览的你也退出。

正文完
 0