面向无人机自主飞行的无监督单目视觉深度估计 下载: 1264次
1 引言
随着人工智能、云计算、大数据的迅速发展,无人驾驶汽车、无人机、智能机器人等产品不断出现在人们的生活中。这些产品在工作中需要对周围环境进行实时三维(3D)感知,以便做出正确的决策。深度估计是实现3D环境感知的基础[1]。目前,深度估计常用的方法有两种:一是利用硬件设备直接获取,比如微软的Kinect相机、激光测距仪、双目相机等,但是其价格比较昂贵;二是基于视觉的深度估计[2-3],视觉深度估计根据拍摄图像所用摄像头的多少,分为单目深度估计和多目深度估计(常用的是双目相机)。双目深度估计通过双目相机获取同一场景的左右视图,然后利用三角形测量法将左右视图之间的匹配信息转换为视差信息,进而根据双目相机的焦距和左右摄像头基线距离推出深度图[4-5],目前该研究主要集中在提高精度上。单目深度估计则是通过一张图像获取3D场景,由于一张图具有无穷多个3D场景,因此对于计算机视觉系统通过单目进行深度估计仍然是一个具有挑战性的任务[6-7],单目深度估计具有很大的研究价值和提升空间。
此前,针对单目深度估计这个问题,国内外已进行大量研究,并取得可观的效果。最早单目深度估计比较经典的算法有,从运动中恢复形状(SFM)[8]、从阴影中恢复形状[9](SFS)和从对焦或离焦中获取深度[10-11](DFF/DFD)等,但因其受所需设备比较昂贵、拍摄要求高、结果易受遮挡和对应关系匹配等因素的影响,上述方法均未被大量使用。随着计算机性能的不断提高,机器学习被广泛应用在各个领域,目前,对于单目深度估计这一问题,机器学习主要采用监督学习的方法进行解决,即:以每一张图像和其对应的深度图作为输入;然后构建像素与深度关系的马尔可夫随机场(MRF)或条件随机场(CRF)等模型,将其深度估计问题转换为参数优化问题;紧接着通过大量数据学习输入映射到输出的规律;最后对新输入的图像进行深度预测。但该方法很难找到图像像素与深度之间的模型,导致深度估计精度较低、计算量大、耗时高,因而此方法很难在实际中应用。近几年,随着深度学习理论的不断成熟,深度学习被广泛应用于单目视觉深度估计中,目前基于深度学习的单目视觉深度估计常用的方法如下。1)仅依靠深度学习理论和网络构架进行深度估计,2014年Eigen等[12]提出采用多尺度卷积神经网络(CNN)进行单目深度估计;2016年许路等[13]提出基于深度卷积神经网络实现单目红外图像的深度估计。2)依靠深度信息本身的性质进行单目深度估计,深度信息的本质就是一个由远到近一层一层的分类,2018年Cao等[14]提出采用全连接残差神经网络通过分类方式实现单目视觉深度估计。3)基于随机场模型与深度学习结合进行单目深度估计,2015年Liu等[15]提出采用CRF与CNN融合实现单目视觉深度估计,其原理为利用CRF的一阶项和二阶项综合训练一阶项CNN和二阶项CNN,两个CNN通过CRF能量函数统一于一个训练框架中。4)基于无监督学的单目视觉深度估计,2016年Chen等[16]与Mayer等[17]提出采用单张图像进行深度估计,其原理为以双目相机拍摄的左右两张图像为约束,基于自编码神经网络重构图像,然后不断优化视差图得到深度图;2017年Godard等[18]针对Chen等[16]与Mayer等[17]单目深度估计误差大的问题,提出将左右视差图一致性函数作为无监督模型的训练损失函数,来进行单目无监督深度估计;2017年Zhou等[19]基于无监督学习理论提出采用单目视频序列,实现深度与姿态估计;2018年Wang等[20]受直接里程计(DVO)的影响,提出采用直接方法实现无监督单目深度估计。
针对监督学习的单目深度估计需要大量深度数据及无监督学习深度估计准确度低、实时性差等问题,以现有无监督学习深度估计方法为基础,本文提出一种面向无人机自主飞行的无监督单目视觉深度估计模型。本文模型首先为实现多特征提取,将输入图片进行金字塔化处理;其次提出一种ResNet-50自编码神经网络进行特征提取,该网络可以基于预设的视差图重构图像;最后基于双目成像原理得出图像的视差图,同时将结构相似性(SSIM)引入图像重构损失函数和视差图一致性损失函数中,将视差图平滑性损失、图像重构损失、视差图一致性损失作为训练的总损失。
2 单目深度估计原理
借鉴双目深度估计的原理,如
式中:d表示视差。本模型将单目深度估计问题转换为图像重构问题,然后基于重构的左右视图,依据双目深度估计原理得出图像深度。本模型的具体实现过程为
1) 输入双目相机左右摄像头拍摄的一对图像Il和Ir;
2) 将Il传入
3) 依据双目成像原理,基于左视图Il和重构的右视图
3 无监督单目深度估计模型
针对单个图像输入容易导致小目标丢失而影响深度估计精度的问题,将输入图像进行金字塔处理;针对特征提取网络层数过多易出现退化的问题,引入残差块的ResNet-50进行特征提取;为提高单目深度估计的精度,在训练中提出一种新的损失函数,该损失函数主要包括视差平滑度损失、图像重构损失、视差图一致性损失。基于此,设计一种无监督深度估计模型,如
3.1 图像重构网络
基于左视图或右视图重构出相应的右视图或左视图是本模型进行单目深度估计的核心。本文借鉴自编码神经网络进行图像重构的思想,同时考虑到网络层数过多会导致梯度消失和梯度爆炸的问题,提出一种基于ResNet-50进行特征提取、基于反向卷积神经网络进行图像重构的网络模型。本模型结构如
ResNet-50由于引入残差块,能有效解决传统网络因层数过多而产生梯度消失和退化的问题。本模型采用基于三层恒等残差块的ResNet-50对输入的金字塔图像进行特征提取,三层恒等残差块的数学表达式为
式中:al表示第l层的输出;al+3表示第l+3层的输出;R表示ReLU激活函数,该激活函数能使学习周期大大缩短;C表示卷积函数;n表示输出层大小;fi表示滤波器的大小,i=1,2,3;s表示步长,本模型中f1=1,s1=1,f2=3,s2=2,f3=1,s3=1。基于ResNet-50进行粗特征提取的具体过程为:首先对输入图像x采用金字塔原理处理成256×512、128×256、64×128、32×64四种尺度;然后将输入图像进行C(x,64,7,2,R)卷积操作输出原图像1/2尺寸的Conv1,对Conv1进行最大池化 (maxpool) 操作输出原图像1/4尺寸的Pool1,对Pool1进行Resblock(Pool1,64,3)卷积操作输出原图像1/8尺寸的Conv2 ,其中64代表输出卷积层数目,3代表采用3个(5)式所示的残差块,对Conv2进行Resblock(Conv2,128,4)卷积操作输出原图像1/16的Conv3,对Conv3进行Resblock(Conv3,256,6)卷积操作输出原图像1/32尺寸的Conv4;最后对Conv4进行Resblock(Conv4,512,3)卷积操作输出原图像1/64尺寸的Conv5。经过以上基于ResNet-50进行特征提取后,输出特征图变为输入图像的1/64。
仅通过ResNet-50进行粗特征提取无法实现精确的图像重构,本模型借鉴自编码神经图像重构的思想,采用反向卷积神经网络进行图像重构(见
式中:Upsample表示上采样操作;Scale表示图像变化比例;s表示卷积函数的步长,在本模型中s=1,将(7)式的反卷积操作简写为al+1=
式中:yDisp表示近似视差图;α表示视差比例系数;S表示Sigmoid激活函数,在本模型中,视差生成函数α=0.3,n=2,f=1,s=1。反卷积神经网络进行图像重构的步骤为:1)将ResNet-50特征提取得到的Conv5利用 (7)式进行
3.2 训练损失函数
为提高单目深度估计的精度,提出一种新的训练损失函数,该损失函数主要包括4种不同分辨率左右视图的重构损失函数、视差图平滑性损失函数、基于双目原理生成视差图一致性损失函数。函数表达式为
式中:Capl表示左视图重构损失;Capr表示右视图重构损失;Cdsl表示左视图产生视差图的平滑性损失;Cdsr表示右视图产生视差图的平滑性损失;Clr表示左视图重构右视图产生视差与右视图重构左视图产生视差的一致性损失;ααp、αds、αlr分别表示图像重构损失函数、视差图平滑性损失函数、双目原理生成视差图一致性损失函数所占的比例。
视差图平滑性损失函数主要是降低通过卷积神经网络生成近似视差图的平滑性对图像重构的影响。为提高视差图的平滑性,提出对视差图的x、y进行梯度求导,该函数的数学表达式为
式中:∂xdijl表示视差图在x方向上的梯度;∂ydijl表示视差图在y方向上的梯度;Iijl表示输入的金字塔图像;
在训练中本模型通过输入一张左视图或右视图,根据与其对应的视差图生成相对应的右视图或者左视图,借鉴文献[ 20-21]在图像重构中将结构相似性(SSIM)引入图像重构损失函数的影响,提出在训练中采用生成图像与原图像之差绝对值和SSIM联合作为图像重构损失函数,该函数的数学表达式为
式中:
双目原理生成视差图一致性损失函数主要是确保左视图重构右视图产生的视差图与右视图重构左视图产生的视差图一致,本损失函数借鉴(13)式,将SSIM引入双目原理生成视差图一致性损失函数中,联合左右视差之差绝对值、左右SSIM作为双目原理生成视差图一致性损失函数,该损失函数学表达式为
式中:dijl表示通过左视图重构右视图产生的视差图;dijr表示通过右视图重构左视图产生的视差图。
4 实验过程与结果分析
4.1 实验设置
本实验训练无监督单目深度估计模型的硬件和软件配置为:处理器选用Intel(R)Core(TM)i7-7700K CPU 4.20 GHz;显卡采用NVIDIA GeForce GTX 1080 8 GB;内存为16 GB;训练系统为Ubuntu16.04;深度学习框架为谷歌开源的Tensorflow。训练数据集采用KITTI,将该数据集划分为280000对训练集、1600对验证集。本文定义的最大训练步长为182000次,batchsize为8,epoch为50;训练中每100步保存一次训练损失、每10000次保存一次训练权重;训练初始学习率为0.0001,并在训练总步长的60%时将学习率衰减至原来的50%,在训练总步长的80%时将学习率衰减至原来的25%;在训练中损失函数的系数ααp=1,αds=0.85,αlr=1。
4.2 模型训练
本模型采用Adam Optimizer对网络权重不断优化,整个训练总共用了35.5 h,每张图片大约0.05 s,训练具体结果如
图 4. 训练过程中各部分损失函数。(a)重构图像与原图的结构相似性损失;(b)重构图像与原图之差绝对值损失;(c)总的图像重构损失;(d)视差图平滑性损失;(e)左右视差图一致性损失;(f)本模型的总损失
Fig. 4. Loss function of each part of training process. (a) Structural similarity loss of reconstructed image and original image; (b) absolute value loss of difference between reconstructed image and original image; (c) total image reconstruction loss; (d) loss of disparity smoothness; (e) loss of consistency in left and right disparity maps; (f) total loss of our model
4.3 无人机实验平台
针对目前市场上无人机因其技术封装性不利于二次开发的问题,选用开源的Pixhawk飞控以及相关无人机组件组装无人机,如
图 5. 无人机实验平台。(a)无人机;(b) NVIDIA Jeston TX2与Pixhawk连接
Fig. 5. Platform of drone experiment. (a) Drone; (b) connection of NVIDIA Jeston TX2 and Pixhawk
4.4 实验结果及分析
为验证本文基于无监督单目深度估计模型在无人机上的准确性和实时性,将训练好的模型移植到无人机上的NVIDIA Jeston TX2进行实验验证;为验证本模型的泛化能力,将本模型与比较经典的深度估计方法在KITTI、Make3D上进行比较,并且在真实室外环境下进行模型测试。以经常采用的评价指标作为参考,评价指标主要包括平均相对误差(REL)、方均根误差(RMSE)、对数空间平均误差、阈值δth。前三者的表达式分别为
式中:
如
为测试本模型深度估计的检测效果,
表 1. KITTI数据集上实验结果对比
Table 1. Comparison of experimental results on KITTI dataset
|
图 6. KITTI数据集上预测深度图实例。(a)输入的图片;(b)真实深度图;(c)文献[ 15]预测的深度图;(d)文献[ 20]预测的深度; (e) 本模型基于VGG-16预测的深度;(f)本模型基于ResNet-50预测的深度
Fig. 6. Examples of depth map predicted on KITTI dataset. (a) Input image; (b) ground truth depth map; (c) depth map predicted by Ref. [15] ; (d) depth map predicted in Ref. [20]; (e) depth map predicted by our model based on VGG-16; (f) depth map predicted by our model based on ResNet-50
为验证本模型的泛化能力,将本模型与其他深度估计方法在Make3D上进行实验验证,实验结果如
此外,为更好体现本模型的泛化能力,采用真实的室外场景进行实验验证,
表 2. Make3D数据集上实验结果对比
Table 2. Comparisonof experimental results on Make3D dataset
|
图 7. 真实室外场景上预测深度图实例。(a)输入的图片;(b)真实深度图
Fig. 7. Examples of depth map predicted in real outdoor scenes. (a) Input images; (b) ground truth depth maps
5 结论
针对目前单目深度估计需要大量深度图进行训练以及双目深度估计体积大、成本高的问题,为实现无人机自主飞行过程中的三维实时环境感知,提出一种基于无监督学习的单目深度估计模型。本模型借鉴双目深度估计和基于自编码神经网络进行图像重构的原理,将无监督单目深度估计问题转换为图像重构问题。为避免网络层数过多而导致梯度消失和退化问题,该模型基于ResNet-50进行特征提取;为实现对小目标的检测,将输入的图像进行金字塔化处理;为提高模型的训练效果,提出联合视差图平滑性损失、图像重构损失、视差图一致性损失作为训练的总损失,并且将结构相似性原理引入到图像损失函数、视差图一致性损失函数中。基于KITTI数据集、Make3D数据集以及真实室外场景进行实验,实验验证与一些经典的基于监督学习的单目深度估计、基于无监督学习的单目深度估计方法相比,本文方法显示出了有效性和优越性,满足无人机自主飞行中实时深度估计准确性和实时性的要求。
[1] 李耀宇, 王宏民, 张一帆, 等. 基于结构化深度学习的单目图像深度估计[J]. 机器人, 2017, 39(6): 812-819.
Li Y Y, Wang H M, Zhang Y F, et al. Structured deep learning based depth estimation from a monocular image[J]. Robot, 2017, 39(6): 812-819.
[2] 鲍振强, 李艾华, 崔智高, 等. 深度学习在视觉定位与三维结构恢复中的研究进展[J]. 激光与光电子学进展, 2018, 55(5): 050007.
[3] 廖斌, 李浩文. 基于多孔卷积神经网络的图像深度估计模型[J]. 计算机应用, 2019, 39(1): 267-274.
Liao B, Li H W. Image depth estimation model based on atrous convolutional neural network[J]. Journal of Computer Applications, 2019, 39(1): 267-274.
[4] 毕天腾, 刘越, 翁冬冬, 等. 基于监督学习的单幅图像深度估计综述[J]. 计算机辅助设计与图形学学报, 2018, 30(8): 1383-1393.
Bi T T, Liu Y, Weng D D, et al. Survey on supervised learning based depth estimation from a single image[J]. Journal of Computer-Aided Design & Computer Graphics, 2018, 30(8): 1383-1393.
[5] 何通能, 尤加庚, 陈德富. 基于DenseNet的单目图像深度估计[J]. 计算机测量与控制, 2019, 27(2): 233-236.
He T N, You J G, Chen D F. Depth estimation from single monocular images based on DenseNet[J]. Computer Measurement & Control, 2019, 27(2): 233-236.
[6] 顾婷婷, 赵海涛, 孙韶媛. 基于金字塔型残差神经网络的红外图像深度估计[J]. 红外技术, 2018, 40(5): 417-423.
[7] 袁建中, 周武杰, 潘婷, 等. 基于深度卷积神经网络的道路场景深度估计[J]. 激光与光电子学进展, 2019, 56(8): 081501.
[8] SnavelyN, Seitz SM, SzeliskiR. Skeletal graphs for efficient structure from motion[C]∥2008 IEEE Conference on Computer Vision and Pattern Recognition, June 23-28, 2008, Anchorage, AK, USA. New York: IEEE, 2008: 10139983.
[9] Zhang R, Tsai P S, Cryer J E, et al. Shape-from-shading: a survey[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1999, 21(8): 690-706.
[10] Nayar S K, Nakagawa Y. Shape from focus[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1994, 16(8): 824-831.
[11] Favaro P, Soatto S. A geometric approach to shape from defocus[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2005, 27(3): 406-417.
[12] EigenD, PuhrschC, FergusR. Depth map prediction from a single image using a multi-scale deep network[C]∥Proceedings of the 27th International Conference on Neural Information Processing Systems, December 8-13, 2014, Montreal, Canada.USA: MIT Press, 2014: 2366- 2374.
[13] 许路, 赵海涛, 孙韶媛. 基于深层卷积神经网络的单目红外图像深度估计[J]. 光学学报, 2016, 36(7): 0715002.
[14] Cao Y, Wu Z F, Shen C H. Estimating depth from monocular images as classification using deep fully convolutional residual networks[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2018, 28(11): 3174-3182.
[15] Liu FY, Shen CH, Lin GS. Deep convolutional neural fields for depth estimation from a single image[C]∥2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 7-12, 2015, Boston, MA, USA. New York: IEEE, 2015: 5162- 5170.
[16] Chen WF, FuZ, Yang DW, et al. Single-image depth perception in the wild[C]∥Advances in Neural Information Processing Systems 29 (NIPS 2016), December 5-10, 2016, Barcelona, Spain. Canada: NIPS, 2016: 730- 738.
[17] MayerN, IlgE, HausserP, et al. A large dataset to train convolutional networks for disparity, optical flow, and scene flow estimation[C]∥2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 27-30, 2016, Las Vegas, NV, USA. New York: IEEE, 2016: 4040- 4048.
[18] GodardC, Aodha OM, Brostow GJ. Unsupervised monocular depth estimation with left-right consistency[C]∥2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), July 21-26, 2017, Honolulu, HI, USA. New York: IEEE, 2017: 6602- 6611.
[19] Zhou TH, BrownM, SnavelyN, et al. Unsupervised learning of depth and ego-motion from video[C]∥2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), July 21-26, 2017, Honolulu, HI, USA. New York: IEEE, 2017: 6612- 6621.
[20] Wang CY, Buenaposada JM, ZhuR, et al. Learning depth from monocular videos using direct methods[C]∥2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition, June 18-23, 2018, Salt Lake City, UT, USA. New York: IEEE, 2018: 2022- 2030.
[21] JaderbergM, SimonyanK, ZissermanA, et al. Spatial transformer networks[C]∥Advances in Neural Information Processing System 28 (NIPS 2015), December 7-12, 2015, Montreal, Quebec, Canada. Canada: NIPS, 2015: 2017- 2025.
Article Outline
赵栓峰, 黄涛, 许倩, 耿龙龙. 面向无人机自主飞行的无监督单目视觉深度估计[J]. 激光与光电子学进展, 2020, 57(2): 021012. Zhao Shuanfeng, Huang Tao, Xu Qian, Geng Longlong. Unsupervised Monocular Depth Estimation for Autonomous Flight of Drones[J]. Laser & Optoelectronics Progress, 2020, 57(2): 021012.