光场学习小结

转自:https://www.vincentqin.tech/posts/light-field-depth-estimation/

光场参数化表示

参数化表示要解决的问题包括:1. 计算高效;2. 光线可控;3. 光线均匀采样。目前比较常用的表示方式是双平面法(2PP)3,利用双平面法可以将光场表示为:L(u,v,s,t)。其中(u,v)为第一个平面,(s,t)是第二个平面。那么一条有方向的直线可以表示为连接uv以及st平面上任意两点确定的线,如下图所示

光场是光线在空间传播中四维的概念,光场是空间中同时包含位置和方向信息的四维光辐射场的参数化表示,是空间中所有光线光辐射函数的总体。在空间内任意的角度、任意的位置都以获得整个空间环境的真实信息,用光场获得的图像信息更全面,品质更好。uv表示角度分辨率,xy表示空间分辨率,即L(u,v,x,y)

光束L传播中携带二维位置信息(u,v),二维方向信息(x,y)来进行传递

传统相机成像是光线穿过镜头,而后传播到成像平面上;光场成像原理差异在于在传感器平面前增加了一个微透镜阵列,在于将穿过主镜头的光线再次穿过每个微透镜,从而收获到光线的方向与位置信息,使成像结果在后期更加可调节,达到先拍照,后聚焦的效果。

学习的方法

目前而言,将深度学习应用于从双目或者单目中恢复深度已经不再新鲜,我在之前的博文1&博文2中有过对这类算法的介绍。但是将其应用于光场领域进行深度估计的算法还真是寥寥无几。不过总有一些勇敢的践行者去探索如何将二者结合,以下列举几种基于学习的深度估计算法18 19 25 27 28 29 30

Learning-based Approach Main Feature
Johannsen et al. 18 25 Sparse coding
Heber et al. 19 27 28 CNN-based
Jeon et al. 29 SAD, SGD, ZNCC, CT, Random Forests
Shin et al. 30 4-Directions EPIs & CNN-based

在此,我将对截止目前(2018年5月29日)而言,在HCI新数据集上表现最好的EPINET: A Fully-Convolutional Neural Network Using Epipolar Geometry for Depth from Light Field Images30算法进行介绍,下图为该算法在各个指标上的表现情况。

算法摘要:光场相机能够同时采集空间光线的空域以及角度域信息,因此可以根据这种特性恢复出空间场景的涉深度。在本文中,作者提出了一种基于CNN的快速准确的光场深度估计算法。作者在设计网络时将光场的几何结构加入考虑,同时提出了一种新的数据增强算法以克服训练数据不足的缺陷。作者提出的算法能够在HCI 4D-LFB上在多个指标上取得Top1的成绩。作者指出,光场相机存在优势的同时也有诸多缺点,例如:基线超级短且空间&角度分辨率有一定的权衡关系。目前已有很多工作去克服这些问题,这样一来,深度图像的精度提升了,但是带来的后果就是计算量超级大,无法快速地估计出深度。因此作者为了解决精度以及速度之间权衡关系设计了该算法(感觉很有意义吧)。

光场图像几何特征

由于光场图像可以等效成多个视角图像的集合,这里的视角数目通常要比传统的立体匹配算法需要的视角数目多得多。所以,如果利用全部的视角做深度估计将会相当耗时,所以在实际情况下并不需要用到全部的视角。作者的思路就是想办法尽量减少实际要使用的视角数目,所以作者探究了不同角度域方向光场图像的特征。中心视角图像与其余视角的关系可以表示成如下公式:

L(x,y,0,0)=L(x+d(x,y)∗u,y+d(x,y)∗v,u,v),(25)

其中d(x,y)d(x,y)表示中心视角到其相应相邻视角之间的视差(disparity)。令角度方向为θθ(tanθ=v/utan⁡θ=v/u),我们可以将上式改写成如下公式:

L(x,y,0,0)=L(x+d(x,y)∗u,y+d(x,y)∗utanθ,u,utanθ).(26)

作者选择了四个方向θθ: 0o,45o,90o,135o,同时假设光场图像总视角数为(2N+1)×(2N+1)

网络设计

如本节开始的图所示的网络结构,该网络的开始为多路编码网络(类似于Flownet以及Efficient Deep Learning for Stereo Matching32),其输入为4个不同方向视角图像集合,每个方向对应于一路网络,每一路都可以对其对应方向上图像进行编码提取特征。每一路网络都由3个全卷积模块组成,因为全卷积层对逐点稠密预测问题卓有成效,所以作者将每一个全卷积模块定义为这样的卷积层的集合:Conv-ReLU-Conv-BN-ReLU,这样的话就可以在局部块中预逐点预测视差。为了解决基线短的问题,作者设计了非常小的卷积核:2×22×2,同时stride = 1,这样的话就可以测量±4±4的视差。为了验证这种多路网络的有效性,作者同单路的网络做了对比试验,其结果如下表所示,可见多路网络相对于单路网络有10%的误差降低。

在完成多路编码之后,网络将这些特征串联起来组成更维度更高的特征。后面的融合网络包含8个卷积块,其目的是寻找经多路编码之后特征之间的相关性。注意除了最后一个卷积块之外,其余的卷积块全部相同。为了推断得到亚像素精度的视差图,作者将最后一个卷积块设计为Conv-ReLU-Conv结构。

最后,图像增强方式包括视角偏移(从9*9视角中选7*7,可扩展3*3倍数据),图像旋转(90o,180o,270o),图像缩放([0.25,1]),色彩值域变化([0.5,2]),随机灰度变化,gamma变换([0.8,1.2])以及翻转,最终扩充了288倍。

以下为其各个指标上的性能表现:

以上介绍了目前已有的深度估计算法不同类别中具有代表性的算法,它们不一定是最优的,但绝对是最容易理解其精髓的。到目前为止,光场领域已经有一大波人做深度估计的工作,利用传统的方式其精度很难再往上提高。随着深度学习的大热,已经有一批先驱开始用深度学习做深度估计,虽然在仿真数据上可以表现得很好,但实际场景千变万化,即使是深度学习的策略也不敢保证对所有的场景都有效。路漫漫其修远兮,深度估计道路阻且长。我认为以后的趋势应该是从EPI图像下手,然后利用CNN提feature(或者响应);此时可供选择的工具有KITTI Stereo/HCI新数据集算法比较/Middlebury Stereo中较好的几种算法,我们需要总结其算法优势并迁移到光场领域中来。GPU这个Powerful的计算工具一定要用到光场领域中来,发挥出多线程的优势。否则传统的CPU对于动辄上百兆的数据有心无力。这样一来,深度图像不仅仅可以从精度上得以提高,而且深度估计的速度也会更快。至此,本文介绍到此结束。

猜你喜欢

转载自blog.csdn.net/zhuimengshaonian66/article/details/81179323