随着自动驾驶、AR & VR 等技术的发展,3D 视觉的研究正方兴未艾。目前 3D 视觉的两个主要问题是:
目前 3D 视觉表示主要有 555 种方法:深度图(Depth Map)、体素(Voxel Grid)、隐表面(Implicit Surface)、点云(Point Cloud)、网格(Mesh)。
深度图(Depth Map)表示是指在原来的 2D 图像基础上,再增加一个深度图信息。
一种直接的方式是测量 2D 图像中每个点到相机的距离作为深度图,也即:
然而这种方式其实不是完全的 3D,因此我上文写的是 2.5D。因为这样表示的深度图缺乏尺度信息,因而会对实际的深度产生歧义:
针对这个问题,Eigen 等人[1]提出了一种 scale-invariant MSE 损失,来训练其提出的深度图预测网络。scale-invariant MSE 损失的主要思想如下:
其中,y, y^* 分别表示网络预测的深度图和 ground truth。
当 y为y^* 的尺度缩放时,即y = C y^* 时,有d = \log{C},代入(1) 可计算得 D(y, y^*) = 0。因此,该损失函数即为 scale-invariant 的。
Eigen 等人提出的神经网络结构如下:
另一种类似表示 3D 视觉信息的方法是对 RGB 图像中的每个像素,给出其所在物体表面的法向量,也用 333 个通道进行表示,即 Surface Normal。这样也能在一定程度上表示 3D 物体的空间结构信息。
Eigen 等人[2]在第二年又提出了从 RGB 图像预测 Depth Map、Surface Normal 和 Semantic Label 的统一神经网络模型,其结构如下图所示:
在这篇文章[2:1]中,Eigen 等人分别针对 Depth Map、Surface Normal 和 Semantic Label 给出了不同的损失函数:
其中,N 和 N^* 分别表示网络预测的 Surface Normal 和 groud truth,N_i 和 N_i^* 都是 3 维的单位法向量,(\cdot) 为向量间的点积。 两个单位法向量之间的点积其实就是二都的角度余弦,当二者重合时值最大,当二者反向时值最小,故损失函数加了一个负号。
其中,C_i 是网络最后一层经过 Softmax 给出的预测标签,C_i^* 为 ground truth。