立体匹配是三维场景重建的主要方法, 在虚拟现实、无人驾驶汽车等领域得到广泛应用[1].然而, 双目相机在设置时存在标定误差和同步问题, 因此单目相机在实际应用场景中更受青睐.理论上, 用单张图片构建三维场景的思路是一个不适定、几何意义模糊的问题, 因为传统的单目深度估计方法很难在单个图像中直接获取几何三维线索[2].与几何正确性的立体匹配方法相比, 当前最先进的基于深度学习的单目视觉方法存在一定的问题:①该方法几乎完全依赖于高级语义信息, 直接利用输入图像和与其对应的真实深度图之间的关系构建预测模型; 由于对其需要逼近的函数没有任何先验知识, 因此学习语义信息是很困难的[3]; ②即使有效地学习, 该方法也需要大量昂贵且高质量的相匹配的真实深度图作为监督标签[4].为了解决这些问题, Luo等[5]首次证明了单目深度估计问题可以被重新表述为两个子问题, 即视图合成问题和立体匹配问题, 并取得了精确的估计结果.然而, 该方法中的立体匹配效率, 很大程度上取决于视图合成过程的精度, 因此, 本文将视图合成作为文章的研究重点.当前有许多文献对图像重构方法做了研究, Flynn等[6]首次通过卷积深度网络从其他视图中获取像素来重构不可见视图.Zhou等[7]利用卷积神经网络学习相同实例的不同视角的相关性来预测外观流.Xie等[8]提出基于Deep3D网络从左视图中产生相匹配的右视图来解决当前2D电影转变成3D电影的问题.Luo等[5]在Deep3D网络基础上通过改变网络结构提出了视图合成模型.
然而, 上述方法对于视图合成的效率和精度都有一定的局限性, 影响立体匹配方法的预测结果.为了能够提高重构视图的效率, 本文基于当前的视图重建方法, 提出一种新的基于改进全卷积神经网络的视图合成模型.并且设计了一种加权局部对比归一化(LCN)约束条件, 并采用结构相似性成本(SSIM)与L1成本相结合的损失优化函数对模型进行优化, 使网络对于遮挡更具鲁棒性且不受亮度和低纹理影响.
1 视图重建方法这一部分描述了本文视图重建方法及网络模型和损失函数.本文在现有网络模型的基础上进行了创新, 引入新的加权局部对比归一化损失来实现视图重建.
1.1 视图重建方法分析本文视图合成方法是在Deep3D[8]方法的基础上改进的, 图 1为视图重建过程.
从图 1中可以看出左视图Il被改进的Deep3D网络模型处理后生成重构后的右视图Îr, 然后通过重构的右视图与原始右视图之间的成本函数来优化网络模型.从图 2的网络架构中可以看出视图重建方法的详细过程:从不同的中间层对特征图进行向上采样, 以获得相同的分辨率, 以便将低层次的特性合并到最终的使用中; 然后对这些特征进行汇总, 进一步生成不同视差值的概率视差图D; 最后将该概率视差图D和左视图Il提供给选择层, 经过选择层处理后, 输出重构后的右视图.该过程通常用公式描述为
(1) |
式中,(i, j)分别指的是左视图Il或视差图D的行和列.该过程是网络模型的前馈过程,神经网络是个迭代优化的模型,因此需要后反馈过程来优化权重值; 然而,式(1)对于概率视差图D是不可导的,因此不能用通常的梯度下降法来训练深度神经网络.为了使式(1)可微,对选择模块采用概率求和方式,该网络通过预测在每个像素位置的一个可能的视差值d的概率分布Di, jd,获得一个约束公式:
(2) |
图 2为视图重建网络模型.为了更好地提取图片特征, 该网络编码部分的基准网络采用VGG19网络架构; 然而在VGG网络中, 最后的三个全连接层占用了大量参数, 导致训练占用内存过大, 训练速度较慢.受文献[9]的启发, 模型采用三层卷积网络代替全连接层, 整个编码结构采用全卷积神经网络作为编码网络, 从而节省了训练时间和内存成本.除此之外, 根据文献[10]实验结果 得出的相关结论:最大池化层的引入没有增加模型的性能, 反而使该操作引入了非线性过程, 因此将该模型中VGG19网络的池化层用步长为2的卷积层和RELU激活层代替.本文仍然采用反卷积双线性插值法作为上采样层, 即当上采样系数为S时, 反卷积层的核为2S×2S, 步长为S, 边缘填充为S/2.核权重W初始化:
(3) |
其中,
(4) |
为了能够将最终的预测与低层级特征的信息相结合, 本文在每个卷积模块后增加一个跳跃层, 然后对该分支进行批量归一化加上3×3的卷积层, 接下来初始化成双线性上采样的反卷积层.其中反卷积的参数由该层的深度决定.每一层得到的特征图都会放大成与原始图像相同的大小.实验结果表明, 改进后的模型在性能和精度上与Deep3D模型和文献[5]模型相比都有所提高.
1.3 损失函数作为一种图像重构的深度学习模型, 通常的损失函数采用原始右视图与重构右视图之间每个像素的光度误差作为损失函数L(θ):
(5) |
然而, 根据文献[11]可知, 光度损失对于图像重建问题并不是一个很好的选择.因此本文采用局部对比归一化(LCN)方法, 该方法不仅能够消除强度和时差的依赖, 而且可以为被遮挡区域提供更好的残差, 并且对于左右视图的亮度变化具有不变性.对于每一个像素, 以该像素为中心的邻域为9×9的小像素块中的均值μ和标准差σ来归一化当前像素亮度:
(6) |
式中:I为待归一化视图; η为一个小常数.但是LCN方法在标准差接近0的弱纹理区域表现不好.为了解决该问题, 本文采用局部标准差加权的方法来计算损失函数:
(7) |
式中:ILCNr和ÎLCNr分别为原始和重构右视图归一化; σij为局部像素标准差.
受文献[12]的启发, 采用L1成本和结构相似性(SSIM)成本的组合作为模型的光度图像重建损失函数.
(8) |
式中α=0.85.
2 实验过程及结果分析 2.1 实验过程为了更好地训练模型, 在实验平台上(E5-2620v4处理器, 32GB RAM和两个11GB RAM NVIDIA GTX 1080TI GPU)用pytorch框架实现了网络架构.使用流行的KITTI 2015数据集来训练和评估本文方法.选择VGG19作为基线网络, 并使用ImageNet预训练模型初始化其权值, 所有其他权值通过标准差为0.01的正态分布进行初始化.为了适应KITTI数据集, 网络模型的输入分辨率设置成512×256.为了获取精确的视差结果, 本文设置193通道概率图,表示从0到192可能的视差范围,作为最终的特征.模型设置批处理大小为8, 训练轮数为50次, 并经过1.8×105的迭代训练.为了更好地训练网络, 模型设置了动态变化的学习率:初始学习速率设置为0.002, 在前30个训练轮次中保持不变, 然后, 每10个训练轮次将其减少2倍, 直到最后.算法1是该方法的实现过程.图 3描述了该算法在训练过程中训练损失和迭代次数之间的关系.
算法1:一种基于深度网络的视图重建方法
输入:左视图数据集X1={x11, x12, …, x1n}, 右视图数据集Xr={xr1, xr2, …, xrn}; 网络参数θ; 网络模型Yr=f(θ, X1).
① 用预训练模型和正态分布方法初始化网络参数θ,并设置网络超参数,包括学习率和迭代次数;
② 用改进的Deep3D模型按式(8)来计算损失函数L(θ);
③ 用批量梯度下降法优化参数θ;
④
输出:
为了定量地对比改进模型与现有模型之间的性能, 本文建立了重构视图的评价公式, 计算了重构视图与原始视图的峰值信噪比(PSNR)和结构相似性指数(SSIM):
(9) |
(10) |
式中:N是图像的像素个数; i, j指图像中像素的横纵坐标; n是每个像素的比特数,通常是8.
(11) |
式中:μI, μÎ分别是原始视图I和重构视图Îr的均值; σI2, σÎ2分别是原始视图I和重构视图Îr的方差; σIÎ原始视图I和重构视图Îr的协方差; C1=k1L12, C2=k2L22是保持稳定的常数,L1,L2是像素值的动态范围,k1=0.01, k2=0.03.
2.2.2 结果分析表 1给出了本文视图重建方法与当前的视图合成方法在PSNR和SSIM两个指标上的量化比较结果.本文从数据集中获取了200张原始图像作为测试集, 该数值是取这200张图像评价标准的平均值.表中为通过各个模型转换出来的200张图片与其真正的右图像对比的各个参数的平均值.
根据表 1的数据可以得知, 原始的Deep3D方法采用VGG16网络结构和L1损失函数来优化深度模型, 其PSNR和SSIM指标是最低的; 文献[5]对原始Deep3D进行了改进, 增加了可能的视差范围, 并修改了部分网络结构; 本文的Deep3D-VGG19模型较原始Deep3D模型和文献[5]在PSNR和SSIM两个指标上都有所提高.表 1中的最终模型与文献[5]模型相比, 在PSNR标准上提高了2.755 dB, 在SSIM标准上提高了0.21.图 4在视差图、重构错误和重构右视图上定性地展示了不同方法的视图重建效果.为了更直观地展示对比结果, 将重建误差增加了50倍.从图中的视差图上可以看到, 本文方法能够更加清晰地展示出物体之间的边缘, 重建误差优于原始的Deep3D方法和文献[5]的改进方法.
提出了一种基于神经网络的视图重建方法, 能够在只有单目视图的情况下重构出右视图, 实现立体匹配算法.本文改进当前的Deep3D网络模型和相关损失函数, 并在公开数据集KITTI 2015上验证了本文方法, 取得了较为理想的效果.然而, 虽然本文方法能够在一定程度上满足立体匹配方法中对于右视图的要求, 但要进一步提高立体匹配的精度, 需要获取更加精确的右视图.今后将尝试结合传统的视图重构方法和约束条件, 进一步改进深度学习网络, 以获取更加精确的右视图.
[1] |
Eigen D, Puhrsch C, Fergus R.Depth map prediction from a single image using a multi-scale deep network[C/OL]//Advances in Neural Information Processing Systems 27 (NIPS2014).Kuching, Malaysia, 2014[2019-12-15].https://www.researchgate.net/publication/262974294_Depth_Map_Prediction_from_a_Single_Image_using_a_Multi-Scale_Deep_Network.
|
[2] |
Saxena A, Sun M, Ng A Y.Learning 3-D scene structure from a single still image[C]//2007 IEEE 11th International Conference on Computer Vision.New York: IEEE, 2007: 1-8.
|
[3] |
Garg R, Kumar V, Carneiro G, et al.Unsupervised CNN for single view depth estimation: geometry to the rescue[C]//European Conference on Computer Vision.Amsterdam, 2016: 740-756.
|
[4] |
Godard C, Mac Aodha O, Brostow G J.Unsupervised monocular depth estimation with left-right consistency[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.New York: IEEE, 2017: 270-279.
|
[5] |
Luo Y, Ren J, Lin M, et al.Single view stereo matching[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.New York: IEEE, 2018: 155-163.
|
[6] |
Flynn J, Neulander I, Philbin J, et al.DeepStereo: learning to predict new views from the world's imagery[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.New York: IEEE, 2016: 5515-5524.
|
[7] |
Zhou T, Tulsiani S, Sun W, et al.View synthesis by appearance flow[C]//European Conference on Computer Vision.Amsterdam, 2016: 286-301.
|
[8] |
Xie J, Girshick R, Farhadi A.Deep3D: fully automatic 2D-to-3D video conversion with deep convolutional neural networks[C]//European Conference on Computer Vision.Amsterdam, 2016: 842-857.
|
[9] |
Long J, Shelhamer E, Darrell T.Fully convolutional networks for semantic segmentation[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.New York: IEEE, 2015: 3431-3440.
|
[10] |
Springenberg J T, Dosovitskiy A, Brox T, et al.Striving for simplicity: the all convolutional net[C/OL]//International Conference on Learning Representations.San Diego, 2015[2019-12-15].http://arxiv.org/pdf/1412.6806.pdf.
|
[11] |
Zhang Y, Khamis S, Rhemann C, et al.Activestereonet: end-to-end self-supervised learning for active stereo systems[C]//Proceedings of the European Conference on Computer Vision (ECCV).Munich, 2018: 784-801.
|
[12] |
Zhao H, Gallo O, Frosio I, et al. Loss functions for image restoration with neural networks[J]. IEEE Transactions on Computational Imaging, 2016, 3(1): 47-57. |