融合感知损失的单幅雾霾图像深度估计*
2022-12-22王园宇张文涛
张 蕾,王园宇,张文涛
(1.太原理工大学软件学院,山西 晋中 030600;2.太原理工大学信息与计算机学院,山西 晋中 030600)
1 引言
获取雾霾情况下的图像深度信息对于场景理解、三维立体重建[1]、障碍物检测[2,3]和视觉导航[4,5]等研究领域都具有重要的意义。目前利用激光、结构光等在物体表面的反射获取深度点云,从而完成景物表面建模与场景深度估算的方法,在一些专业场景下的应用已经相当成熟[6,7],然而要获取精确的深度信息通常需要极高的成本,甚至难以实现。此外,在雾霾环境中,悬浮微粒对光线的吸收与散射十分严重,采用上述方法进行测量,精度难以满足要求。传统的方法,如根据视频或多个摄像头进行深度测量的方法[8]、单目图像深度估计方法[9],都没有考虑雾霾造成的影响,而通过图像获取雾霾情况下的场景深度信息具有成本低廉、布置灵活和测量方便等优点。本文在估计图像深度的同时,兼顾了雾霾情况下可见度低的情况,因此具有一定的理论创新性;且雾霾天是一种经常出现的天气现象,相较于清晰图像的深度估计,本文研究内容适用性和普遍性更高,因此也具有很强的实际意义。
由于处理单幅图像的技术具有相对的优势,本文将对雾霾情况下的单幅图像的深度信息进行估计。在现有研究中,对图像进行深度估计主要有2个方向:在无雾霾情况下,对图像进行深度估计,以及在雾霾图像恢复中,计算图像的深度信息。
1.1 无雾霾情况下的单幅图像的深度估计
传统的单幅图像深度估计方法主要依靠手工提取特征,构建预测的概率图形模型,对场景做出几何假设。Saxena等[10]在2005年使用马尔可夫随机场MRF(Markov Random Field)模型从图像中提取局部和全局特征来推断深度,该工作后来被扩展到三维场景重建[11]。其他方法,如结合语义标签,也可以改善深度估计的精度。Liu等[12]将单目深度估计转化为一个离散连续优化问题,但该方法依赖于RGB图像中区域之间的相似性。2014年,Karsch等[13]提出了使用最近邻搜索的方法,通过融合前景和背景信息来获取深度信息,但是该方法需要对数据库中所有数据进行分析,导致计算量大、效率低,且结果依赖数据库的完整性。综上所述,传统方法通常包含多个阶段来估算深度,如特征提取、结构预测和细化。然而,每个阶段都可能存在估计误差,积累的错误必然会降低整体的估计精度。
随着深度学习的发展,得益于神经网络强大的计算能力和学习能力,使用基于卷积神经网络CNN(Convolutional Neural Network)的深度估计方法可以端到端地输出预测深度图,在保证精确度的前提下提高了场景的深度估计质量。2014年,Eigen等[14]利用CNN在双尺度网络结构中预测单幅图像的深度,双尺度网络结构由全局粗尺度网络和局部细尺度网络2部分组成。这项工作后来加入基于VGG(Visual Geometry Group)[16]的模型,使用三尺度网络,以此来预测除场景深度信息以外的法线信息和标签信息。2017年,Jun等[17]在此基础上加入一些跳跃连接,用来加速网络的收敛;并且引入了新的损失函数,以增强网络泛化能力。2016年,Laina等[18]提出了一种包含残差网络的全卷积神经网络结构,同时构造了一种新的损失函数对单目图像的深度图估计进行建模。在这之后,大量研究人员采用这类神经网络结构进行研究均取得了很好的结果[19,20]。Liu等[21]引入了超像素池和超像素反池策略,将CNN架构与超像素分割相结合,进行超像素深度估计。由于每个超像素内的所有像素都具有相同的深度预测,因此预测深度图中常常存在块效应。由于深度具有连续性,可以用条件随机场CRF(Conditional Random Field)模型进行深度估计。Liu等[22]在深度学习模型的基础上加入概率图模型,将CNN与条件随机场结合,端对端地训练并得到了较好的单目图像深度估计结果。Li等[23]将单目深度估计作为一种分类任务,同时使用扩张卷积和分层特征融合来学习尺度感知深度线索。
以上方法都是针对清晰图像的深度估计,由于大多数情况下室外大气条件比较复杂,特别是有雾霾的情况下,光线在传播过程中与大量悬浮颗粒发生交互作用,导致可见度下降,若直接使用上述方法进行深度估计,呈现出来的效果较差。
1.2 雾霾图像恢复中对图像深度的获取
为了改善在雾霾情况下图像的深度估计结果存在的对比度低、细节特征被覆盖、色彩严重失真等问题,在基于图像恢复的方法中,使用去雾算法将雾图还原为清晰图像。考虑到雾霾情况下图像退化的原因,Narasimhan等[24]提出了大气散射模型,模拟雾霾情况下图像的退化过程。在还原清晰图像过程中,通过求解雾霾图像的大致深度信息,反解出无雾图像,改善图像质量,进而得到单幅雾图的清晰图像[25,26]。但在求解过程中,由于雾霾情况下介质干扰引起的图像退化现象较为严重,使得利用传统方法得到的预测深度图与真实深度图存在较大的差距,无法表示精确的深度信息。
综上所述,清晰图像的深度估计模型缺乏普遍性和适用性,不适用于雾霾图像,但神经网络卓越的性能为本文研究提供了思想基础和理论基础;而在基于图像恢复的去雾过程中,场景的深度信息作为去雾算法的中间变量,其精度得不到保证,故无法产生高质量的预测深度图。针对以上研究现状,本文主要进行了如下工作:(1)提出双尺度模型,用于单幅雾霾图像的深度估计。该模型对单幅雾霾图像先进行粗提取,再将其融合到更细致的深度估计中,和现有深度估计模型相比,深度估计精度更高,可以得到更多细节信息。(2)提出多卷积核上采样,在图像上采样阶段使用多个小的卷积核来代替大卷积核,分别与特征图进行运算,将得到的图像再进行融合。小卷积核可以加快运算速度,省略无用零运算,进而加快了网络训练速度,提高了预测深度估计图的质量。(3)为了得到更好的深度估计效果,提出了新的复合损失函数,将像素级的均方误差MSE(Mean Squared Error)损失函数与感知损失函数相结合,使用训练好的网络提取雾霾图像的特征,在视觉上更接近真实深度图,降低了雾霾干扰下图像的噪声,保留更多细节信息的同时提高了深度估计的精度。
Figure 1 Network structure of the proposed method
2 双尺度网络模型
2.1 模型设计
2.1.1 网络模型介绍
受VGG网络启发,本文设计了双尺度网络模型,如图1所示,双尺度网络首先使用尺度1(粗尺度)网络对雾霾图像的深度信息进行粗提取,然后对粗提取特征使用尺度2(细尺度)网络进行细化,提高雾霾图像的深度估计精度。尺度1网络基于VGG16网络设计,连接了13层特征提取层(conv-1~conv-5),每一个卷积层之后都连接批量标准化层(Batch Normalization Layer),卷积层之间使用5个最大池化层(Max Pooling Layer)对特征图进行压缩。VGG16网络采用修正线性单元ReLU(Rectified Linear Unit),而在本文方法中,除全连接层外,其他层均采用指数线性单元ELU(Exponential Linear Unit)函数[27]进行非线性激活。在融合了Sigmoid函数和ReLU函数优点的同时,ELU函数还使得网络在梯度下降过程中在负区间的梯度不为0,有效缓解了梯度消失问题,并在噪声条件下具有更好的鲁棒性。在2个全连接层(第14,15层(fc6、fc7))使用Dropout方法来防止网络模型过拟合。尺度1网络最后在经过全连接层后得到4 800维向量,并重塑为1×60×80的粗略深度图。
尺度1网络对雾霾图像进行全局深度预测后,得到雾霾图像的粗尺度特征,然后将全局粗尺度特征送入尺度2网络进行局部细化。为了进一步提取雾霾图像中的深度信息,尺度2网络融合了尺度1网络在下采样过程中提取到的深度特征,有效地利用了场景的全局信息,使得双尺度网络在获取精细深度信息的同时,保留了更多的场景局部细节特征,在保证精度的前提下获得了良好的预测深度图。如图1所示,尺度2网络将尺度1网络经过第1次卷积(Conv-1)和第2次卷积(Conv-2)后的特征图与尺度2网络经过细尺度卷积后的特征图进行融合,然后使用多卷积核上采样方法将特征图放大为240×320的预测深度图。模型的网络结构和具体参数如表1所示。
2.1.2 多卷积核上采样方法
上采样的主要任务是对网络下采样提取到的高维特征图进行放大,最终得到预测深度图。常用的上采样方法是插值方法,在高维特征图的像素点之间插入新的经过计算的像素,但该方法存在场景物体边界模糊的问题;此外,采用反卷积方式进行上采样得到的结果往往存在较严重的棋盘效应;在深度学习模型中,有一种上采样方法是对高维特征图进行2倍放大,空像素点用0进行填充,再使用7×7的卷积核对插入0像素的特征图进行反卷积。这种方法的缺点是放大后的特征图中含有大量0像素,因此增加了较多无用运算。
Table 1 Network parameters of two-scale neural network
为了解决上述方法中出现的问题,本文将7×7的反卷积核替换为4个较小的卷积核。如图2所示,卷积核大小分别为2×2,2×3,3×2,3×3,将高维特征图与4个不同大小的卷积核分别进行卷积运算,然后将得到的4幅新的特征图在通道维度上进行连接,之后使用激活函数(ELU)、归一化层和卷积层,最终使特征图的大小扩大为原来的2倍。本文的多卷积核上采样方法在降低棋盘效应,保留边缘信息的同时,跳过了多余的0运算,缩短了网络的训练时间。
Figure 2 Multi-convolution kernel upsampling method
Figure 3 Proposed joint loss of cascaded network
2.2 融合感知损失的复合损失函数
深度学习中,损失函数是训练网络模型过程中的重要一环,使用恰当的损失函数可以提高网络的训练速度和深度估计性能,从而保证网络具有良好的训练效果和收敛性。
2.2.1 像素损失
目前常用的损失函数为均方误差函数MSE,用以计算预测深度图与真实深度图之间的像素级误差,以最小化预测结果与真实值逐像素差的欧氏范数平方作为收敛方向,MSE损失函数定义如式(1)所示:
(1)
2.2.2 感知损失
传统的像素损失是逐像素比较预测深度图和真实深度图的差异,重建出的预测深度图存在模糊的问题。最近研究发现[28,29],预训练的VGG16网络所提取的特征可以作为图像合成任务中损失的度量标准,通过比较特征之间的差异来衡量图像的感知相似性。可以在提取场景深度信息的同时保留更多的场景结构信息,提升预测深度图的视觉质量。
为了提高网络的深度估计精度,解决雾霾干扰情况下图像模糊对模型的影响,本文引入感知损失函数,使预测深度图在视觉效果上更加接近于真实深度图。相对于其他网络,VGG16具有更深的网络层数和更小的卷积核,使用预训练的VGG16作为特征提取器,可以在保证感受野的前提下减少模型参数,提取丰富的细节信息。由于感知损失不需要成对的图像训练网络,这使得网络训练时的参数量减小。感知损失将真实深度图与预测深度图输入VGG16网络隐含层,在隐含层提取高级特征信息,经过网络第4层之后计算感知损失,如式(2)所示:
(2)
2.2.3 融合感知损失的复合损失函数
本文提出将像素损失和感知损失结合的复合损失函数,如式(3)所示:
L=WMSELMSE+WPLP
(3)
其中,WMSE和Wp为权重,LMSE为像素损失函数,LP为感知损失函数。本文的复合损失函数的实现过程如图3所示,首先将加雾图像与真实深度图作为双尺度神经网络的输入,使用MSE损失函数逐像素比较预测深度图与真实深度图的不同。然后将预测深度图与真实深度图输入到已训练好的VGG16网络中,并从网络第4层中提取两者的高级特征,定义感知损失函数,与MSE损失函数结合成为复合损失函数。通过最小化复合损失函数继续学习两者差异,使两者在特征感知上更相似,最终生成深度估计图。
3 实验与结果分析
3.1 实验数据及数据预处理
本文实验使用2种不同的数据集,分别是NYU Depth v2室内数据集[30]和Make3D室外数据集[10,11]。
NYU Depth v2数据集由微软Kinect的RGB图像和Depth摄像机记录的各种室内场景的视频序列组成,原始数据集中图像尺寸均为640×480,数据集中包含了1 449对密集标记的RGB图像和深度图像,本文将其中1 000对作为训练集,200对作为测试集,249对作为验证集。
Make3D数据集是Saxena等建立的数据集,该数据集是一个包含不同室外场景真实景深的标准训练数据集,目前已广泛应用于三维重建的研究。Make3D数据集提供400对图像组成训练集,134对图像组成测试集,其户外图像的真实场景深度由激光设备测量得到。
将2个数据集中的图像分别降采样到320×240大小,由于训练集数据量较少,所以本文将图像对进行数据扩充,方法如下所示:(1)左右翻转:将图像水平、左右翻转。(2)尺度变换:RGB图像和深度图分辨率按照等比例缩放,尺度因子s∈[1.1,1.5]。(3)色彩变换:将彩色图的亮度、对比度和饱和度等比例缩放,缩放因子k∈[0.6,1.3]。根据上述方法,在2个数据集上都分别得到了12 000个训练样本。
由于用于深度估计的数据集中大部分都是室内外的清晰图像以及对应的深度图,所以在实验时需要将数据集进行预处理,将清晰的图像人工加雾用于网络模型训练。本文分别从增强后的数据集中获取无雾图像及其真实场景深度图,再结合He等[31]的方法以及PS技术进行加雾,制作成为所需的加雾数据集,得到的部分加雾图像如图4所示。
Figure 4 Adding fog on NYU Depth v2 and Make3D datasets
3.2 实验环境与设置
本文在Ubuntu系统下,基于PyTorch框架进行实验,编程语言为Python 3.6。所有模型均使用2块NVIDIA 2080Ti显卡训练,显存容量为20 GB;CPU型号为Intel(R)Xeon(R)E5-2680 v3,主频为2.50 GHz,内存为64 GB。批尺寸(Batch Size)设置为8,初始学习率为0.001,学习率衰减因子α=0.9。优化器采用随机梯度下降法,动量为0.9。模型训练过程为:首先对尺度1网络进行训练,当尺度1网络收敛至稳定时,固定尺度1网络的参数;然后对尺度2网络进行训练,待尺度2网络的参数收敛后,对2部分网络同时更新至收敛。
3.3 评价指标
本文将与同样在加雾后的数据集上开展的其他研究成果进行对比,采用了常用的衡量指标来评估结果。
(1)准确率。
(2)平均相对误差REL(mean RELative error)。REL计算方法如式(4)所示:
(4)
(3)对数空间平均误差ALE(Mean Log10 Error)。ALE计算方法如式(5)所示:
(5)
(4)均方根误差RMSE(Root Mean Squared Error)。RMSE计算方法如式(6)所示:
(6)
其中,T为测试图像的像素数量总和。
3.4 NYU Depth v2数据集实验结果
将NYU Depth v2数据集按照6∶2∶2的比例划分为训练集、验证集和测试集,使用约7 200对雾图-深度图训练样本对模型进行训练。模型训练损失曲线图如图5所示。从图5中可以看到,随着迭代次数的不断增加,网络模型的精度损失逐渐降低,当达到300次后,模型开始收敛至稳定,表明本文提出的模型可达到预期训练效果。
Figure 5 Loss curvs of training on NYU Depth v2 dataset
为了提高预测深度图中物体的边缘质量,本文提出了多卷积核上采样方法,加快了网络的训练速度。为了证明本文提出的多卷积核上采样方法的有效性,在保持相同实验设置和模型参数的情况下,分别使用7×7卷积核与多卷积核进行上采样,网络的训练时间如图6所示。从图6中可以看出,当网络收敛时,7×7卷积核上采样训练时间约23 h,而多卷积核上采样训练时间约20.2 h,比7×7卷积核直接上采样的训练时间缩短约12%。图7为定性实验结果,从图7中可以看出,相比于使用7×7卷积核上采样方法,多卷积核上采样进一步细化了场景物体边缘轮廓(台灯)。同时,对比图7b和图7c,使用复合函数也使得预测深度图的模糊问题得到改善,在保证深度值精度的前提下提高了预测深度图的视觉质量。
Figure 6 Comparison of training time on NYU Depth v2
Figure 7 Comparison of upsampling on NYU Depth v2 dataset
为了进一步验证本文方法的有效性,将本文方法与文献[14,18,23]等的方法进行比较,结果如图8所示。从图8中可发现,在相同实验条件下,本文方法生成的深度预测图中物体边缘结构(桌椅、墙壁等)更为清晰,深度值识别更为准确。相较于其他对比方法,本文方法的预测深度图在场景的边缘区域(台灯、书架等)具有更好的效果。这是因为本文的双尺度模型融合了2次特征信息,使得网络可以充分地提取雾霾图像的深度信息和结构信息;并且本文在尺度2网络收敛后继续训练双尺度网络,使得网络可以学习到更好的参数,在雾霾干扰下取得良好的深度估计效果。
Figure 8 Comparison of depth predictions on NYU Depth v2 dataset
如图8g所示,基于MSE的损失函数得出的结果对场景深度信息的还原较为平滑,这是因为MSE损失函数在像素空间对预测深度图的深度值做了平均。如图8h所示,使用融合感知损失的复合损失函数后,边缘信息和细节信息保留较充分。相较于只使用MSE损失函数,第2行中台灯的边缘更为清晰;第4行中书架的结构轮廓和细节信息预测更为准确。这是因为感知损失结合了已训练好的神经网络的高级特征信息,提取的细节更为丰富,当融合MSE损失函数后,会得到更好的结果。
在NYU Depth v2室内数据集上,本文方法与其他方法对比的定量实验结果如表2所示。从表2中可以看出,引入了感知损失函数的方法各项评价指标都有较大提高,相比于MSE损失函数,使用复合损失函数得到了较小的误差数据,并且在准确率上也有了较大提升。通过对比可以看到,本文提出的方法在各项指标上都有比较好的表现。
Table 2 Comparison of experimental results on NYU Depth v2 dataset
Figure 9 Loss curves of trianing on Make3D dataset
3.5 Make3D数据集实验结果
将预处理之后的Make3D数据集中的训练集用于模型的训练,约7 200对图像,训练后的loss-Epoch图如图9所示。图9表明随着迭代次数的增加,模型的损失在逐渐降低,在Epoch=300时逐渐收敛至稳定状态,表明复合损失函数对双尺度网络起到了有效的监督,可达预期效果。
如图10所示,在迭代到300次时,使用多卷积核上采样方法(22.4 h)比7×7卷积核(25.5 h)训练时间更短。同时从图11可以看出,使用多尺度卷积核上采样得到的预测深度图中,物体的边缘较为清晰,改善了较大卷积核对图像的影响。
Figure 10 Comparison of training time on Make3D dataset
Figure 11 Comparison of upsampling on Make3D dataset
将本文方法在Make3D数据集上的实验结果与文献[12,13,22]方法的实验结果进行对比,结果如图12所示。从图12中可以看到,本文方法对较远(≫70 m)区域(如第1行与第2行)的边缘信息识别良好。由于添加了复合损失函数,一些边缘信息保留完好,比如第1行中房屋门洞的边缘信息。对近处(<70 m)区域的识别也有很大提升,相较于其他方法,第3行中树木的边缘清晰度,以及树左边的深度估计,都比较逼真地还原了真实深度图。
Figure 12 Comparison of depth map predictions on Make 3D dataset
在Make3D数据集上的对比实验定量评价结果如表3表示,表中C1误差表示计算真实深度值小于70 m的图像区域,C2误差表示全部图像区域都将参与误差的计算。可以看出本文方法在C1和C2误差上均低于其他对比方法。
Table 3 Comparison of experimental results on Make3D dataset
4 结束语
本文提出了双尺度网络模型对单幅雾霾图像进行深度估计,该模型结合感知损失函数与MSE损失函数,并使用多卷积核上采样方法进行优化,能够更加快速地对模型进行训练,准确地对单幅雾霾图进行深度估计。在加雾预处理后的NYU Depth v2和make3D数据集上进行了实验,结果表明本文方法对雾霾图像深度估计有着良好的适应性,提高了雾霾情况下的估算精度,满足实际应用的基本要求。然而,所提网络模型只能处理大小固定的图像,不具有灵活性和普适性,将在下一步工作中,对输入图像尺寸固定这一不足进行改进。