深度估计是计算机视觉系统理解场景中元素之间几何关系的关键技术,视觉系统能够根据深度估计得到的深度信息推断场景的有用属性,如消失点和物体间遮挡关系等.这些属性对于自动驾驶[1-2]和三维重建[3]等实际应用至关重要.这些应用通常利用双目立体视觉[4]、多帧图像匹配[5]和深度传感器等方法进行深度估计,但这些方法存在计算复杂、相机校准困难和成本较高等问题.因此,一些研究者利用单相机拍摄的单目图像进行深度估计,由于其具有成本低廉、实现简单等优点成为了目前计算机视觉领域的研究热点.然而,从单目图像估计对应三维场景的深度信息相当困难,因为三维场景当投影到成像平面时会丢失大量空间信息,所以单目图像深度估计(MDE)一直被视作难以准确求解的问题.最近随着深度学习领域的飞速发展,卷积神经网络(CNN)的图像理解能力越来越强大,CNN也逐渐被用来解决MDE问题.文献[6]首先使用CNN从单目图像中估计场景深度,尽管所提出的多尺度网络输出的深度图比较模糊,但是仍显示了CNN应用于单目图像深度估计的可能性.此后,单目图像深度估计的有监督方法[7-11]发展出了各种编码器-解码器架构,用于更准确地推断图像特征和场景深度值之间的关系.该架构使用编码器将输入图像转换为不同尺度的特征表达,然后由解码器预测深度图.随着编码器网络越来越深,其中重复的卷积和池化操作降低了特征图的分辨率,因此须要解码器恢复分辨率.但目前解码方案效率低下,没有充分利用编码器提取到的特征,难以兼顾不同尺度对象的深度估计.另一方面,由于有监督方法所需的真实深度信息采集困难、代价较高,因此一些研究者提出用于单目图像深度估计的无监督[12-13]或自监督[14-15]方法.虽然这两类方法降低了对数据集的要求、提升了模型的泛化性能,但是其性能与有监督方法仍有一定差距.本研究在前人工作基础上提出一种基于密集连接的单目图像深度估计方法.该方法通过引入EfficientNet-B5[16]作为编码器主干网络,解码器设计为密集连接的上采样特征金字塔结构,使得单目图像中的全局和局部特征可以被充分利用,并设计了一种全分辨率多尺度损失函数用于网络训练,进一步提升了深度估计精度,为后续的机器视觉任务提供良好的数据支撑.1 深度估计网络结构1.1 相关工作一些研究者将单目图像深度估计问题描述为图像回归问题,即使用CNN根据输入的单目图像生成相同尺寸的灰度图,灰度图中每个像素的灰度值表示场景中对应点到成像平面的距离,该灰度图也称为深度图.通过对训练集中大量单目图像和对应真实深度图的训练,CNN可以拟合出两者间的映射关系,根据输入的单目图像预测对应的深度图.该映射关系可以表示为D*=f(I),(1)式中:I为单目图像;D*为I对应的真实深度图;f为从I到D*的非线性映射.因此,包含N对单目图像和对应真实深度图的训练集T可表示为T={(In,Dn*)|1≤n≤N},(2)式中n为单目图像和对应真实深度图的序号.单目图像深度估计中的编码器-解码器架构最早应用于图像语义分割,包括FCN[17]和U-Net[18]等.U-Net的基本网络结构如图1所示,其在编码器和解码器间加上跳层连接,将两者相同尺寸的特征图进行通道级联(concat)实现特征融合,解决了浅层特征不能很好表达的问题.目前常用的解码器采用反卷积、上池化和双线性插值等上采样方法将输入的低分辨率特征图恢复到高分辨率.近些年,空洞空间金字塔池化(ASPP)模块[19]被用于图像语义分割,它由多个以不同速率并行扩张的卷积核组成,因此能够捕获不同尺度的局部和全局图像特征.10.13245/j.hust.229472.F001图1U-Net基本网络结构1.2 研究现状用于单目图像深度估计的编码器-解码器网络一般使用预训练好的编码器主干网络,再进行微调以适应深度估计任务.近年来,新的编码器主干网络层出不穷,如文献[6]中的AlexNet[20]、文献[21]中的VGG[22]、文献[7]中的ResNet[23]、文献[9]中的DenseNet[24]和文献[10]中的ResNext[25]等.编码器输出的低分辨率特征图包含重要的全局上下文特征,但解码器重复简单的上采样操作使得这些特征在恢复到高分辨率过程中逐渐退化.另外,在编解码阶段,全局和局部深度特征难以进行交互,从而导致输出深度图存在轮廓模糊等问题.因此,如何加强上采样过程中全局特征的表达,如何有效交互全局和局部深度特征,是该领域的热点问题.1.3 本研究方法针对上述问题,本研究设计了一种基于编码器-解码器架构的单目图像深度估计网络模型,总体网络结构如图2所示,图中的S,S/2,…,S/32表示其相对于输入图像的分辨率,分别对应为全尺度(scale)、1/2尺度、…、1/32尺度,全尺度分辨率的特征图又叫做全分辨率深度图.其中编码器采用EfficientNet-B5对输入图像进行特征提取,得到多个尺度的特征图.解码器将编码器的输出特征图先通过更密集的ASPP模块(Dense ASPP[26])以交互不同尺度的深度特征.另外,受到DenseNet中密集连接的启发,不仅在编解码器间加上跳层连接E1~E4,而且将解码器中前三个尺度(1/16,1/8和1/4尺度)的低分辨率特征图单独上采样,得到的全分辨率深度图和最后的全尺度层直接连接,充分利用了全局上下文特征,再通过一个卷积层得到最终输出的深度图.另外,对输出深度图和前三个尺度的10.13245/j.hust.229472.F002图2本研究方法总体网络结构全分辨率深度图(dout1,dout2,dout3和dout4)一起计算网络训练损失(Ldata),进一步引导解码器学习和表达全局特征.1.3.1 编码器随着用于MDE的编码器主干网络结构越来越复杂,网络特征提取能力有所提升,但推理速度也逐渐变慢.为了充分均衡编码器的特征提取能力和推理速度,本研究采用EfficientNet模型作为编码器主干.该模型采用高效计算的MBConv块,使用逐通道卷积层和逐点卷积层共同组成了深度可分离卷积,相比普通卷积(Conv)的计算量大大减少.通过堆叠MBConv块,从基础模型EfficientNet-B0扩展到EfficientNet(B1~B7).相较于其他主干网络,它在推理性能相近的情况下,参数数量大幅减少,推理速度明显加快.作为国内最先使用EfficientNet进行单目图像深度估计的方法之一,本研究将EfficientNet-B5进行调整以适应深度估计任务.首先为了适应任意尺寸的输入图像,移除了该网络的全连接层,直接将最后池化层(Pooling)得到的特征图输入到解码器中.另外,编码器使用在ILSVRC数据集上的预训练模型进行参数初始化,为了利用预训练模型强大的局部特征提取能力,在训练中将前两个卷积层及批归一化(BN)参数固定为预训练值.调整后的网络结构参数如表1所示,表中:第一列表示网络总共分为9层,第1层为卷积层(包含BN和激活函数),中间2~8层是在重复堆叠MBConv块,以对输入图像进行高效快速地特征提取,而第9层由卷积层和池化层组成;第二列表示输入该层的特征图相对于原始图像的分辨率;第三列表示该层输出特征图的通道数;最后一列表示该层重复堆叠MBConv块的数量.10.13245/j.hust.229472.T001表1编码器网络结构参数层分辨率通道数层数Conv3×3S481MBConv1,3×3S/2243MBConv6,3×3S/2205MBConv6,5×5S/4645MBConv6,3×3S/81287MBConv6,5×5S/161767MBConv6,5×5S/163049MBConv6,3×3S/325123Conv1×1&PoolingS/322 04811.3.2 解码器本研究的解码器网络由1个Dense ASPP模块、5个上采样模块、5个卷积层和密集连接结构组成,以与输入图像相同的空间分辨率生成深度图预测.其中,Dense ASPP作为上下文信息提取器,具有各种扩张率r∈{3,6,12,18,24},能以更多尺度捕获图像上下文信息.为了高效快速地恢复图像分辨率,在解码器中重复堆叠上采样模块和卷积层.令每个上采样模块输入和输出的特征图为Finu(i)和Foutu(i),每个卷积层输入和输出的特征图为Finc(i)和Foutc(i),其中,i为5个上采样模块从前往后对应的序号,5个卷积层也按相同方式排序.每个上采样模块的采样因子为2,具体操作可以写为Finu(i)=din (i=1),Foutc(i-1) (i=2,3,4,5); (3)Foutu(i)=δ[Finu(i)],(4)式中:din为通过Dense ASPP输入解码器的特征图;δ[∙]表示上采样模块将输入的特征图先双线性插值再进行3×3卷积的操作.为了将通道级联的特征图降维并进行跨通道的信息交互,在concat操作后添加卷积层.通过卷积层的特征图通道数大幅减少,具体操作可以写为Foutc(i)=Conv3×3[Finc(i)],(5)式中:Conv3×3表示对输入特征图进行3×3卷积;Finc(i)的表达式为Finc(i)=Ei⊗Foutu(i) (i=1),Ei⊗Foutu(i)⊗φFoutc(i-1) (i=2,3,4), φ4[Foutc(i-4)]⊗φ3[Foutc(i-3)]⊗φ2[Foutc(i-2)]⊗Foutu(i) (i=5), (6)其中,Ei为编解码器间的跳层连接,φ[∙]表示上采样单元将输入的特征图先进行1×1卷积再双线性插值的操作,其右上角标的数字表示重复操作的次数.为了实现全局低分辨率和局部高分辨率深度特征的交互,采用多个采样因子为2的上采样单元组成密集连接结构.上采样单元中的1×1卷积可以减少通道数,同时保留大部分上下文信息.重复该单元可以将前三个尺度的特征图恢复到全分辨率.如图2所示,这三个尺度的全分辨率深度图和输出深度图可以表示为:douts=Foutc(5) (s=1);φsFoutc(5-s) (s=2,3,4). (7)由上述各模块组成的上采样特征金字塔能够将低分辨率特征图包含的全局特征转移到更高分辨率,从而改善全局特征逐渐退化的问题.2 损失函数设计为了优化网络中的可训练参数,本研究设计了一种全分辨率多尺度损失函数.分别对解码器中前三个尺度得到的全分辨率深度图和输出深度图计算损失,总损失是这四个深度图的损失之和,有效保证了每个尺度的深度图朝着相同的目标优化,尽可能准确输出全分辨率的深度图像.在有监督的MDE方法中,常用的损失函数有最小平方误差(L2)损失、文献[6]提出的尺度不变损失和文献[27]提出的Berhu损失.文献[27]的研究表明:在单目图像深度估计问题中,Berhu损失比L2损失和尺度不变损失更好.这是因为L2损失和尺度不变损失不能较好地减小低残差像素的预测误差,而Berhu损失可以有效减小不同残差大小的像素预测误差.Berhu损失函数的表达式为B(yi-yi*)=|yi-yi*| (|yi-yi*|≤c);(yi-yi*)2+c22c (|yi-yi*|c), (8)式中:yi和yi*分别为第i个像素点的深度预测值和真实值;i为训练过程中每一批次所有图像上像素的索引值;c为阈值.由式(8)可以看出:当预测值与真实值差值的绝对值小于阈值时,Berhu损失表现为L1损失,反向传播的梯度为常数1;反之,Berhu损失表现为L2损失,反向传播的梯度与误差成正比.一般设置c=0.2maxi (|yi-yi*|).本研究以Berhu损失作为基本单元设计了全分辨率多尺度损失函数,其表达式为Ls(y,y*)=1Ns∑i=1Ns|yi-yi*| (|yi-yi*|≤c); 12Nsc∑i=1Ns[(yi-yi*)2+c2](|yi-yi*|c), (9)式中:Ls为四个全分辨率深度图对应的损失;Ns为对应深度图的像素个数;s∈{1,2,3,4}.训练中总的损失函数表达式为Ldata=λ∑s=14Ls,(10)式中:Ldata为总的损失函数,先对四个全分辨率深度图的损失求和,再对其进行缩放;λ为缩放系数.通过适当地缩放损失函数可以加速收敛和提升最终训练结果[9],本研究设置λ=10.3 实验及结果分析3.1 实验设置本研究所提出的网络结构使用Pytorch框架实现,实验硬件配置为32 GiB内存的i7-7800X处理器和两块11 GiB显存的NVIDIA GeForce GTX 1080Ti显卡.训练阶段批尺寸设置为8;使用Adam优化器,β1=0.9,β2=0.999,ε=1×10-8,初始学习率大小设置为1×10-4,以0.9的衰减因子进行多项式衰减.在参数初始化后对整个模型进行端到端训练,NYU Depth V2数据集上的训练总耗时约30 h,KITTI数据集上的训练总耗时约35 h.在训练阶段,本研究使用数据增强技术扩充训练集以减少模型过拟合,数据增强方法包括:随机水平翻转,将图像以50%的概率左右翻转;随机颜色变换,将图像RGB各通道随机乘以比例因子,比例因子在[0.8,1.2]范围内;随机旋转,对NYU Depth V2数据集使用旋转角度范围为[-2.5°,2.5°]的随机旋转,对KITTI数据集使用旋转角度范围为[-1°,1°]的随机旋转.3.2 数据集3.2.1 NYU Depth V2NYU Depth V2数据集是最常用的室内场景深度数据集,它通过Kinect相机从464个室内场景中获取彩色图和对应深度图,包含249个训练场景和215个测试场景.本研究从中选取了2 387对图像作为训练集,654对图像作为测试集.按照3.1所述方法数据增强后训练集共含有36 500对图像.3.2.2 KITTIKITTI数据集是计算机视觉中最大、最常用的数据集之一,包含从61个室外场景中获取的立体图像和激光扫描数据.本研究采用了文献[6]的数据集分割方法,将来自32个场景的2.348 8×104对图像作为训练集,剩余29个场景的697对图像作为测试集.3.3 评价指标为了定量评价不同MDE方法的深度估计效果,通常采用以下评价指标.绝对值相对误差为R=1N∑i=1N|yi-yi*|yi*,(11)均方根误差为S=1N∑i=1N|yi-yi*|2,(12)对数均方根误差为Slog=1N∑i=1N|lgyi-lgyi*|2,(13)精确度为A=1N∑i=1Nmaxyiyi*,yi*yit,(14)式中:N为总的像素个数;t为精确度阈值,分别取1.25,1.252和1.253.上述前三个指标的值越小表示深度估计的效果越好,而精确度的值越大表示深度估计的效果越好.3.4 结果分析3.4.1 NYU Depth V2数据集结果将本方法在按照3.2.1节所述的训练集和测试集上进行实验,与当前一些先进的MDE方法进行定量比较,实验结果如表2所示(指标数值均来自原文献,表中空白处表示该文献未计算对应评价指标).结合表2中各项指标来看:本方法获得了最低的均方根误差S=0.384,与文献[7]相比下降了24.6%.虽然文献[9]的指标R比本方法更好,但是整体比较来看,本方法在大部分评价指标上优于其他方法.10.13245/j.hust.229472.T002表2NYU Depth V2数据集上的评价指标方法误差精确度RSSlogt=1.25t=1.252t=1.253文献[21]0.1580.6410.2140.7690.9500.988文献[27]0.1270.5730.1950.8110.9530.988文献[7]0.1150.5090.8280.9650.992文献[9]0.1100.3920.1420.8850.9780.994本研究0.1120.3840.1390.8860.9780.994将本研究方法与表2中两种表现较好的方法进行定性比较,各方法的深度估计效果如图3所示.从图3可以看出:文献[7,9]预测的深度图中椅子、书架和浴缸等形状复杂物体的深度边缘模糊,有较多的细节丢失.而本方法得到的深度图物体边缘清晰锐利,可以准确地估计细小物体的深度,甚至可以预测出窗户等较远物体的轮廓.另外,深度图中物体边界较为完整,与真实深度图更为接近.由表2和图3可知:本方法预测的深度图误差更小、精度更高,物体边缘区域的深度细节更加丰富准确.10.13245/j.hust.229472.F003图3NYU Depth V2数据集上得到的深度图3.4.2 KITTI数据集结果将本研究方法在按照3.2.2节所述的训练集和测试集上进行实验,与当前一些先进的MDE方法进行定量比较,实验结果如表3所示.结合表3中各项指标来看,本方法在S和Slog两个指标上获得了最优结果,其中S=2.443,与文献[7]相比下降了10.4%;Slog=0.090,与文献[13]相比下降了56.3%.在其余指标上和文献[10]基本持平,并且本方法参数量仅为3.58×107,远远少于文献[10]方法的7.35×107.10.13245/j.hust.229472.T003表3KITTI数据集上的评价指标方法误差精确度RSSlogt=1.25t=1.252t=1.253文献[6]0.1907.1560.2700.6920.8990.967文献[13]0.1144.9350.2060.8610.9490.976文献[7]0.0722.7270.1200.9320.9840.994文献[10]0.0592.4460.0910.9620.9940.999本研究0.0602.4430.0900.9600.9930.999将本方法与表3中两种表现较好的方法进行定性比较,各方法的深度估计效果如图4所示.从图4可以看出:文献[7]方法得到的深度图对于树木、行人和交通灯等细物体的边界估计模糊,而本方法得到的物体边界清晰准确,但在深度值较大的区域比文献[10]方法表现略差.这是因为KITTI数据集的真实深度十分稀疏,尤其是在大深度值区域几乎没有可用数据来监督学习.文献[10]通过深度残差的多级叠加有效地缓解了该问题,但该方法倾向于在大深度值区域产生过分平滑的过渡,如在图4中第一行第四列图像的左上角,远处的楼房丢失了部分轮廓信息.由表3和图4可以发现:本方法得到的深度图细节丰富完整,在大幅减少参数数量的同10.13245/j.hust.229472.F004图4KITTI数据集上得到的深度图时达到了良好的深度估计准确性.3.4.3 消融实验为了验证所提出方法中各个模块的有效性,设置以下消融实验来对比分析各个模块的性能.首先搭建一个基础网络,其编码器主干选取DenseNet-161(其参数量和EfficientNet-B5相同),解码器由一系列重复的卷积层(包含BN和激活函数)和双线性插值上采样层组成,只使用Berhu损失函数对最终输出的深度图计算损失.从基础网络开始,不断增加核心模块,从跳层连接到Dense ASPP模块,再到密集连接结构,最后是全分辨率多尺度损失函数.在NYU Depth V2数据集上对不同网络变体进行实验测试,实验结果如表4所示,表中:B表示基础网络;S表示编解码器间的跳层连接;D表示Dense ASPP模块;C表示设计的密集连接结构;L表示使用全分辨率多尺度损失函数训练网络.10.13245/j.hust.229472.T004表4NYU Depth V2数据集上的消融实验结果网络变体误差精确度RSSlogt=1.25t=1.252t=1.253B0.1430.5940.1700.8130.9550.989B+S0.1410.5780.1660.8250.9610.992B+S+D0.1370.5620.1630.8360.9640.992B+S+D+C0.1220.4820.1510.8580.9710.993B+S+D+C+L0.1170.4510.1460.8660.9740.994本研究0.1120.3840.1390.8860.9780.994从表4可以看出:随着核心模块的增加,网络性能也在逐步提升,而且性能最大的提升是通过添加密集连接结构和将EfficientNet-B5作为编码器主干得到,证明所设计模块可以有效实现图像全局和局部深度特征的交互,使得网络的深度估计效果有了稳步提升.4 结语本研究提出一种单目图像深度估计方法,该方法中以性能优良的网络模型为基础设计的编码器可以高效地提取图像全局上下文特征,解码器设计为密集连接的上采样特征金字塔结构,实现了全局上下文特征从低分辨率到高分辨率的转移.另外,引入了一种全分辨率多尺度损失函数,进一步优化物体边缘的深度估计效果.在NYU Depth V2和KITTI两个数据集上的实验结果表明:所提方法可以有效地从单个彩色图像中预测准确的深度图,且较其他方法精度更高,物体边缘更为清晰,参数数量明显减少,有效解决了解码过程中简单上采样导致物体边缘模糊的问题,进一步加快了MDE在自动驾驶等领域的实际应用.
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览