为什么NeRF里可以仅凭位置和角度信息经过MLP预测出某点的rgb颜色？
最近在看NeRF，不太理解为什么输入仅为位置和角度，经过mlp网络就可以预测出不透明度和颜色，感觉他们之间并没有什么关联呀。另外输入中的xyz是怎么来的呢，是以什么为坐标的空间位置呢？
这个问题很好，说明你在理解公示背后的意义，所以这个回答也写的比较intuitive。NeRF本质上是一种隐式的（implicit），容积的（volumetric）三维场景表示方法。不太理解为什么输入仅为位置和角度，经过mlp网络就可以预测出不透明度和颜色，感觉他们之间并没有什么关联呀首先回答第一个问题，确实这两者没什么关联。但是这句话看出来有一个理解的偏差：普通的NeRF不是预测（predict/inference），而是记忆（memorize/fitting）。也就是说，NeRF本身确实不能根据position和viewdirection来推断出该点的信息，而是直接去过拟合训练数据对应的场景。另外输入中的xyz是怎么来的呢，是以什么为坐标的空间位置呢？要理解这个问题，看看经典的方法是怎么做的。不知道你对GeometryRepresentation了解多少，我们要表示一个场景，可以对空间进行网格化（Grid）来表示。即将空间离散划分为多个小网格，每个网格储存这个点对应的密度（density）或占据概率（occupancy），这就是显式的（explicit）、容积的（volumetric）三维场景表示。具体而言，就是一个3dtensor。给定xyz，可以得到该点的密度。这个xyz的坐标系，取决于你如何定义，比如原点位于场景中心的、z轴朝上的右手系。这样做有一个问题，就是如果这个网格的分辨率很低，那么场景就会很粗糙，而不断增大分辨率又使得空间占用太大。另外一种办法是，我们找到一个函数，给定xyz，直接用函数计算该点的密度。可是怎样找到这个函数呢，我们自然想到用神经网络这个“万能”拟合器，来通过数据学习这个场景，也就是NeRF的思路。当然NeRF以前也有很多工作来隐式表达场景，如DeepSDF、ConvOccupancyNet等等。至此，不知道是否回答清楚了这个问题。当然一些题外话，NeRF是不是真的只能过拟合单个场景呢？也不是，这两年有很多工作如IBRNet、MVSNeRF等等，可以泛化到任意场景，这里的mlp，便是利用了一些额外信息（图像特征、深度信息），来真正实现“预测”。