对于一个三维物体,它本身存在在那里,人眼的观察从传统上被建模为相机外参+内参,也就是一个降维的矩阵变换。
适合计算机表示的三维模型有Voxel Occlusion,ESDF,TSDF等等,但对于人类大脑,显然不会通过矩阵建模,从三维世界获取二维图像。随着神经网络的流行,学界开始探索隐式的三维表示方法。
NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis (ECCV2020 Best Paper)
Neural RGB-D Surface Reconstruction(arxiv 2021)
所谓渲染,就是利用已经建立好的三维模型,重构出物体的表面点,再根据相机投影关系,生成任意视角的2D图像,也就是模拟人眼对物体的观察过程。
Ray Casting
用于Occlusion(透明度)和TSDF表示,从相机光心沿像素发出光线,这条光线穿过所有的对应三维模型的表示,寻找找表面过零点。
对于正方体Voxel的Occlusion或TSDF表示,找0等值面。对应小正方体的格点视作Voxel的中心(有一个Occlusion和TSDF值)。
等值面的形状只有上述15种(由对称性),具体的形状判断规则已经写好(根据实际情况查找即可),具体的棱和等值面的交点坐标由三线性插值得到。
就是说NeRF在连续空间里面表示三维模型。(隐式表示三维模型,再也没有矩阵和Voxel了)
也就是说从渲染的角度来讲,能进行无限分辨率的渲染。(不用管你Voxel Size)
前传过程
所谓渲染,就是利用已经建立好的三维模型,重构出物体的表面点,再根据相机投影关系,生成任意视角的2D图像,也就是模拟人眼对物体的观察过程。
为什么这么多没用的环节呢?
缩句:你看了一眼三维物体,就知道了它的颜色和质感。
也就是:三维坐标 + 视角 = RGB + 透明度(纹理)
(其实讲到这就讲完了)
也就是说:一个本身就在那的三维点,你从某个角度(2D角度,对应球坐标,构成360°球面就够了,即相机一个轴和scene坐标系一个轴本身方向统一;或者说相机原点和scene坐标系原点一致,都是球坐标原点)看,就能看到一个纹理和RGB。
纹理(Density)是物体本身的属性,所以要求他和方向无关;而RGB要求和方向与xyz都有关。所以这么设计网络。
建立好的三维模型就是这样,下一步要考虑怎么渲染成任意视角的二维图像。
一个像素要表示一条光线上的所有信息,所以积分:
对于一条光线,已知了发出的两个角,每经过一个采样的xyz,可以读一个颜色,颜色要通过透明度加权,再乘权重T(t)。这个权重的意义是:
从最近点出发到深度t中间没有碰到“粒子”的概率。
对于计算机,将他离散化:
很明显,上述渲染过程可微,那么就能直接进行无监督(自监督)的训练。
图片和对应相机位姿——表面点的xyz和方向(深度由均匀采样得到)。eg.一个像素对应的射线采100个点。
前传得到RGB,sigma。
渲染得到对应训练图片位姿的像素值RGB。
构成二范数Loss,反传。
Positional Encoding:
有先前的研究表明神经网络对低频信息比较敏感,容易忽视高频纹理信息——典型的例子是分类过程。
所以,进行了一个类似傅里叶变换的东西,强制给神经网络加一堆高频进去:
采样的Trick——先粗后细,不再赘述。
总之:以有限视角的二维图像训练,生成无限视角的二维图像,实现2D——3D的隐式表示。
NeRF给我们一个思路,就是简单的MLP的权重就能表征场景三维结构,所以有后续工作进行了RGBD表面重建。
粗略位姿输入(用网络优化),网络输入xyz和方向角,预测SDF值和RGB,进行更精细的表面重建。
SDF直接用深度相机输入监督;Color处理与NeRF一致。
1.NeRF泛化性较差,一个网络只能代表一个场景——暂无解决方案
2.要极为精确的相机位姿GT——基于GAN、BA层的
3.训练速度较慢,参数量较大——训练加速
4.主要解决后两个问题的后续工作相当多,第一个问题难以解决
5.有人考虑将其用于游戏行业(元宇宙核心技术)
作者:卡夫卡不爱养猫
|关于深延科技|
深延科技成立于2018年,是深兰科技(DeepBlue)旗下的子公司,以“人工智能赋能企业与行业”为使命,助力合作伙伴降低成本、提升效率并挖掘更多商业机会,进一步开拓市场,服务民生。公司推出四款平台产品——深延智能数据标注平台、深延AI开发平台、深延自动化机器学习平台、深延AI开放平台,涵盖从数据标注及处理,到模型构建,再到行业应用和解决方案的全流程服务,一站式助力企业“AI”化。