基于神经网络架构搜索的单目深度估计研究与应用
2021-12-31王培彪
王培彪
(青岛大学计算机科学技术学院,山东 青岛 266071)
0 引言
从单幅 RGB图像中估计场景中物体深度的方法称为单目深度估计,近年来机器学习方法在物体识别[1]、自然语言处理及场景理解等领域得到广泛应用。基于传统机器学习的单目深度估计方法一般使用马尔可夫随机场(MRF)或条件随机场(CRF)对场景中的物体深度关系进行估计[2],随着卷积神经网络(CNN)[3]以及深度学习技术日渐成熟,深度学习方法在单目图像深度估计中开始被研究与应用。深度学习方法主要分为有监督型和无监督型两类,本文介绍了有监督型神经网络架构搜索技术(NAS)[4-8]的模型与算法,研究并实现了在目前主流数据集SceneFlow上的算法测试验证结果,探讨了目前研究中存在的难点与不足,在此基础上进行总结并提出优化方案。
1 深度学习在单目深度估计中研究进展
2006年,深度学习的概念最早由Hinton[9]提出,卷积神经网络(CNN)利用卷积核对图像特征进行提取,通过神经网络对特征逐层抽象。基于单目图像的深度学习估计方法,可以分为有监督和无监督两类。
2014年,Eigen[10]等人首次实现将深度学习技术应用于单目深度估计,他们提出使用两种尺度的神经网络结构对单张图片深度进行估计的方法,其中粗尺度的网络用于预测单张图片的全局深度,细尺度的网络用于优化单张图片的局部细节。
2016年,Liu[11]等人把CNN与CRF相结合,通过能量函数计算最大后验概率,估计单幅图像的深度。上述方法在网络的训练阶段都需要图像的真实参考深度图,属于监督型学习。Garg[12]等人提出了无监督框架,通过使用传统的双目立体匹配技术构建目标函数,然后反向训练深度学习网络。
在单目图像深度估计场景中,监督学习方法通过向网络输入真实的参考深度图来训练网络,相比于无监督学习方法,监督学习方法可以获得更高的精度,因此有大量研究人员从网络结构、损失函数、约束条件等角度展开大量研究。
2019年,谷歌和斯坦福大学合作,推出了Auto-DeepLab[13],将神经网络架构搜索技术用于图像分割的领域里。Auto-DeepLab不仅可以参数化Cell,而且可以动态搜索网络层最优化路径。
2 神经网络架构搜索技术原理介绍
神经网络架构搜索(neural architecture search,NAS)技术是一种通过算法自动搜索针对解决给定任务最优神经网络架构的方法,在精度和效率上目前已超过传统依靠专家经验设计的网络模型方式。
Liu等人提出Auto-DeepLab框架将神经网络架构搜索技术应用于图像分割领域,神经网络架构搜索空间分为Network级和Cell级搜索,如图1所示为 Network级搜索路径,横坐标代表网络层序号,纵坐标代表通道数倍数。白色节点代表固定的主干网络层,蓝色节点代表可选的Cell,箭头的方向指示可搜索路径,从左到右搜索到的最优路径为搜索空间Network级最优搜索路径。蓝色节点Cell也是通过搜索得到,比如图中黄色虚线所框选的三个Cell,如图2所示为其Cell级搜索路径,其中分别代表黄色框中左侧、中间、右侧三个蓝色 Cell。黄色箭头的计算值使用αj→i参数关联,右侧Cell的计算结果通过图1灰色箭头方向可知,右侧Cell的最终计算值分别与左上、左侧、左下三个方向的计算值有关,在此分别使用关联。
Auto-DeepLab通过将网络空间 Network和Cell级搜索参数化,Cell结构参数可以表示为:
Network架构参数表示为:
Network架构参数需要满足:
在优化α、β参数时使用可微架构搜索DARTS方法,把数据集分成训练集和验证集,分别轮流训练:
1. 固定架构参数α和β,用训练集训练网络权重参数ω
2. 固定网络权重参数ω,用验证集训练架构参数α和β
Auto-DeepLab框架神经网络架构搜索结果如图3所示。
3 基于神经网络架构搜索单目深度估计
3.1 Cell级架构搜索
基于Auto-Deeplab神经网络架构搜索技术,本节我们对单目深度估计实现中的Cell级架构搜索进行描述。如图4所示,单目深度估计中Cell级架构搜索主要分为:两个输入节点三个中间节点一个输出节点架构参数α。
Cell结构参数可以表示为:
节点是构成Cell的基本元素,每个节点都是一个张量,在Cell级架构搜索过程中,每个节点是通过特定操作得到的多通道图像大小的特征图。我们设置了两种特定操作:1)3×3可分离卷积 2)跳跃连接,如图 4所示,每个α架构参数定义了两种操作的权重值。与Auto-Deeplab神经网络架构搜索技术相同,如图1所示,当前Cell的两个输入节点分别来自于网络中左侧前一个和上一个Cell的输出值。在单目深度估计过程中,我们增加了一个深度值维度,计算量比Auto-Deeplab显著增加,为此我们除了减少特定操作种类之外,对比图2和图4可以发现,中间节点数量减少为3个,这种通过空间换时间的方式,可以明显加快高维数据量的计算速率。
3.2 Net work级架构搜索
在单目深度估计神经网络架构搜索过程中,不仅要通过Feature Net输出多通道图像大小的特征图,还要在特征图基础上添加一维深度信息,通过Matching Net最终输出深度图。
β是网络架构参数,即是通过β参数实现网络架构参数化,获得最优路径。
Network级架构参数表示为:
Feature Net架构搜索路径如图5所示,黄框计算l=4,s=12的Network级架构参数slH,分别对应红、绿、蓝三条路径的权值,三条路径选择是一个离散问题,由于离散问题的搜索空间无法直接使用梯度下降法进行优化,为了使路径选择的搜索空间连续,我们求取各种路径选择权值的softmax值,将离散搜索空间转变为连续搜索空间问题。
Matching Net架构搜索路径如图6所示,将Feature Net输出特征图添加一维深度信息,分别取不同深度值,然后再将左右图像输出值合并,为了更好的获取深度信息,与Feature Net相比网络层数增大一倍变为12层,与Auto-DeepLab处理的数据相比不仅维度增加,特征图面积也增大一倍,二维卷积核变为三维卷积核,计算数据量显著增加,在Cell级架构搜索过程中减少操作数和中间计算节点,可以有效提高Matching Net架构搜索路径效率。
3.3 实验
3.3.1 对比分析效果
在神经网络架构搜索方法中,α、β参数为动态可优化参数,使用可微架构搜索DARTS方法,把数据集分成训练集和验证集,在每次迭代中,首先固定架构参数α和β,用训练集训练网络权重参数ω,然后固定网络权重参数ω,继续用训练集训练架构参数α和β,最后计算每个 epoch总误差。训练集 epoch结束后,使用验证集验证训练模型的平均每次迭代误差值。
在传统固定架构神经网络方法中,α、β参数为固定随机参数,同样使用可微架构搜索DARTS方法,把数据集分成训练集和验证集,在每次迭代中,只用训练集训练网络权重参数ω,最后计算每个epoch总误差。训练集epoch结束后,使用验证集验证训练模型的平均每次迭代误差值。
实验所用显卡为RTX3060,显存12G,数据集选用SceneFlow数据集,实验数据如图7、8所示,神经网络架构搜索方法与传统固定架构神经网络方法相比,训练和验证误差都较小,尽管每次迭代计算量较大,但是损失函数的降低速率更快。
3.3.2 估计测试效果
如图 9所示,左图为神经网络架构搜索技术单目深度估计图,计算时间分别为3.72s和4.11s,图像大小 576×960,神经网络估计的深度值范围为0到192,将深度灰度图转换为RGB图后,其中R值越大代表深度值越小,B值越大代表深度值越大。
4 结论
本文基于Auto-Deeplab的神经网络架构搜索技术,研究并实现了在单目深度估计问题领域应用。通过实验与传统固定架构神经网络方法对比,验证了神经网络架构搜索技术在单目深度估计领域的优越性,并将深度估计图转换为RGB图进行显示,基本能够估计出场景中物体的不同深度。由于数据集的质量在很大程度上决定了模型的鲁棒性和泛化能力,SceneFlow的数据集来自于虚拟场景,如何提高模型的泛化能力是我们以后研究的重要方向。
同时,在 Matching Net架构搜索路径和优化权值过程中,由于处理带有深度信息更高维的数据,计算量显著增加,如何提高算法效率,并得到更精确细致的深度信息也是我们研究的重要方向。