赞
踩
本人最近粗略看了一些基于NeRF的工作,原本学习的是SLAM方向,发现有一些NeRF和SLAM结合的工作,并且由于NeRF的地图效果实在给人较好的可视感受,故想要研究一番,并且上研后组内的方向有想向Active SLAM方面做,故也有所涉及。
* 以下观点都是我个人的见解,不正确指出望能批评指正,也是一个获得反馈学习的过程
首先在分析主流工作之前先简述一下NeRF、SLAM的概念。
SLAM
SLAM(Simultaneous Localization And Mapping,同时定位与地图构建),正如字面意思,能够同时完成自身定位和地图构建,这里我们主语可以选用机器人,就是一个机器人如何在未知的环境中通过传感器的输入完成定位、建图,并且两者是相辅相成的,精确的定位能够保证地图的优良性,而反之地图的完美又能够使得传感器数据的匹配更加准确从而获得更加精确的定位。
在我刚上本科的时候好像还是一个比较小众的方向,但是最近几年乘着自动驾驶的快车已经飞速开卷了,但实际上大家还是在卷精度,真正落地的应用,可能还是扫地机器人、餐厅送餐等,总体来说在实现真正的自动驾驶、取代外卖物流等工作还有很长一段路要走,倒是矿厂自动驾驶挖掘机落地还比较快(主要是日常生活环境太复杂了,主要是人)。
NeRF
NeRF(Neural Radiance Field,神经辐射场)是一种以基于光场理论的环境隐式表达。
density
记
σ
\sigma
σ,它也有自己的颜色color
记
c
=
(
r
,
g
,
b
)
c=(r,g,b)
c=(r,g,b)。density
color
,进行积分(离散就是累加)得到像素的值,从而生成一张完整的图像,而通过对密度值density
进行积分(求和)就可以得到深度图了。不搞个视频我怕你们不学了
接下来是我在从零了解NeRF过程中收集的一些学习资料,希望能够给大家带来一些帮助,我也刚开始了解这个方向几个星期,希望不要误人子弟,哈哈哈
NeRF的诞生就是ECCV 2020的一篇Paper吧。
地址:Medium(不登录反而能看)
个人记录针对上面教程的记录:
marching cubes是一个生成3D mesh的算法,从NeRF网络恢复3D模型所用的方法
3D数据的表达形式:从3D voxels到点云到SDF
传统三维构建的共同缺点:
相机:耗时和需要大量数据
雷达:昂贵
人工建模
对于高反射物体、“网状”物体,如灌木丛和链状栅栏,或透明物体,都不适合大规模扫描。
影响模型精度:stair-stepping effects and driff
光场,其用不同方向观测角度下的光线扫描三维空间中的每个点,分别有五个变量 x = ( x , y , z ) x =(x,y,z) x=(x,y,z)、 d = ( θ , ϕ ) d=(\theta ,\phi) d=(θ,ϕ)(分别是空间中点的三维坐标和光线的角度)
为什么只有两个变量,因为在空间中一个点定下来之后,就是经纬度的问题了,不像是描述位姿。
NeRF基于光场(light/radiance fields)。NeRF则是构建从光场的5D空间描述,到4D空间的映射(颜色,强度density), c = ( R , G , B ) , σ c=(R,G,B),\sigma c=(R,G,B),σ。density可以理解为光线在五维空间中被截断的likehood,比如遮挡。
NeRF的标准范式: F : ( x , d ) → ( c , σ ) F:(x,d) \rightarrow (c,\sigma) F:(x,d)→(c,σ)
在生成式场景重建课题(generalized scene reconstruction)中,给定相机位姿和图像,还有许多SFM系列算法: COLMAP, Agisoft Metashape, Reality Capture, or Meshroom
通过给定位姿和图像,构建射线,通过对射线进行采样生成数据点,采用Coarse-to-fine的方式,先均匀分段,然后对每个段进行随机采样,这样就用 r = o + t d r = o + td r=o+td 来表示每一个采样点,就是 r = ( x , y , z ) r = (x,y,z) r=(x,y,z),其中方向 d = ( θ , ϕ ) d=(\theta ,\phi) d=(θ,ϕ) 就是每个相机坐标的原点和 v c = [ 0 , 0 , − 1 ] v_c=[0,0,-1] vc=[0,0,−1] 经过 T w c T_{wc} Twc 转到世界坐标下,注意这里不需要加上 v o v_o vo ,因为只是代表一个朝向
Axes3D.quiver(X,Y,Z,U,V,W,/,length=1,…)
X,Y,Z是箭头的起点坐标,U,V,V是箭头的方向组成
注意OpenGL和COLMAP数据之间的坐标系问题
https://blog.csdn.net/OrdinaryMatthew/article/details/126670351
是对每个均分的bin
区间通过均匀分布的形式进行采样,这里好像还可以通过逆深度进行表示,主要是在射线中,near
到far
进行分段
通过采样获得初始数据后,就利用NeRF来构建5D到4D的映射,网络架构如下:
注意这里的PositionEncoder不仅仅是60,还会包含原来的3各个维度,即
L
=
10
L=10
L=10的时候(cos,sin),编码后维度:3*20+3
○ PositionEncoding:
● 直接数据驱动
● 场景的连续表达
● 隐式考虑物体特性:specularity高光,roughness粗糙度
● 隐式表达光感
不同类型的NeRF工作
A litany of papers have since sought to expand the functionality of the original with features such as few-shot and one-shot learning[2, 3], support for dynamic scenes[4, 5], generalizing the light field into feature fields[6], learning from uncalibrated image collections from the web[7], combining with LiDAR data[8], large-scale scene representation[9], learning without a neural network[10], and many more. For some great overviews of NeRF research, see this great overview from 2020 and another overview from 2021 both by Frank Dellaert.
SLAM学术界的泰斗,Frank Dallaert(https://dellaert.github.io/),gtsam的作者,也开始转行研究NeRF,可见NeRF的价值和对视觉SLAM的意义。Frank大佬写了一系列NeRF相关文章的综述。
● https://link.zhihu.com/?target=https%3A//dellaert.github.io/NeRF/
● https://link.zhihu.com/?target=https%3A//dellaert.github.io/NeRF21/
● https://link.zhihu.com/?target=https%3A//dellaert.github.io/NeRF22/
第一次先分享这么多吧,后续还会单独更新一个专栏,分别对NeRF的论文进行归纳整理
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。