VDAS中基于单目红外图像的深度估计方法

2021-05-06 10:12魏东辉吴晓舟曹云峰
系统工程与电子技术 2021年5期
关键词:能见度投影红外

李 旭, 丁 萌, 魏东辉, 吴晓舟, 曹云峰

(1. 南京航空航天大学民航学院, 江苏 南京 211106; 2. 北京机电工程研究所复杂系统控制与智能协同技术重点实验室, 北京 100074; 3. 南京航空航天大学航天学院, 江苏 南京 211106)

0 引 言

随着计算机视觉技术的发展以及硬件设备算力的提高,计算机从图像获取复杂场景信息的能力不断增强,因此在自动驾驶领域,视觉辅助驾驶系统(vision-based driving assistance system, VDAS)逐渐受到关注。获得车辆的前视场景深度信息是VDAS的重要任务之一,对于实现目标识别、距离测算、障碍规避等具有重大意义[1-2]。但是目前绝大多数先进的视觉深度估计的方法仅适用于天气良好的可见光情况,对于道路出现的雨雾天、夜间等低能见度场景往往束手无策。

由于红外线具备穿透能力强,不受夜间影响的特点,因此热红外技术是低能见度环境下的最佳视觉感知方案。但是,红外图像又具有色彩单一、纹理信息弱的缺点,特征提取相对可见光要困难。本文提出了一种低能见度情况下,利用单目红外图像做车辆前视深度估计的方法,采用端对端的深度学习策略,能由单帧红外图像直接得到逐像素对应的稠密深度图,提高了VDAS在低能见度环境下的场景感知能力。

传统的视觉深度估计方法主要利用空间几何约束,结合针孔相机投影模型来进行深度推断与优化,如运动恢复结构(structure from motion,SfM)[3]方法。但是SfM本质上是一种离线算法,需要一次性获得所有图像信息,无法满足自动驾驶的实时性要求。机器人领域的视觉实时定位与地图构建(visual simultaneous localization and mapping,VSLAM)方法能满足实时性要求,但对于阴影等弱纹理区域的效果不佳,尤其不适用于红外图像,而且只能得到稀疏的点云[4],不能较好地做全局稠密深度感知。随着人工智能技术的发展与硬件算力的增强,以卷积神经网络(convolutional neural network, CNN)为代表的深度学习方法正广泛应用于计算机视觉领域[5],由于深度学习强大的图像特征提取能力远胜于传统方法,因此越来越多学者也将深度学习方法视为深度估计任务的首选。

早期深度估计任务以端对端的监督学习为主[6-7],如整体深度与局部深度结合的Coarse-Fine方法[6]以及后续发展的CNN结合条件随机场方法[8]。监督学习带来的一大弊端就是真实深度数据需要采用昂贵的激光雷达来获取,训练集制作成本高;其次使用激光雷达获得的稀疏深度标签做监督信号,最终输出深度图往往边缘信息模糊,不利于实际道路场景使用。

如今深度估计聚焦于采用多张图片输入来构建自监督学习模型,而且实验数据表明,自监督学习效果要优于监督学习[4]。自监督学习模型根据训练时输入图片对的采集来源,分为双目左右帧与单目前后帧模型。前者以双目相机采集的图像视差做立体几何约束,构建自监督信号,由Garg等首次提出这种思想[9],这种双目模型后来也发展出基于半监督学习的深度估计等方法。后者以单目相机采集的前后帧图像对作为输入,首先由姿态估计网络来估算两帧之间的姿态变化,以两帧间的重投影光度误差构建自监督信号,先后发展出了经典的SfM Leaner方法[10]。上述方法在KITTI[11]、Make3D[12]等可见光数据集上取得了良好的效果,但是红外图像色彩单一、纹理细节弱,上述方法并不能很好地直接提取红外特征。

由于本文的红外图像应用背景,本身红外相机价格昂贵,且双目图像采集过程中需要经过精密配准,因此双目左右帧方法的训练数据获取代价远大于单目前后帧方法,故本文提出了一种基于单目前后帧红外图像的自监督深度估计方法,该方法的主要贡献如下:① 针对红外图像特征提取难的问题,使神经网络的特征提取器先在可见光数据集上做预训练,再迁移到红外数据集上,避免了特征提取器陷入局部最优解;② 采用了最小像素重投影误差思想,避免了单目视频序列中遮挡像素的影响;③ 结合实际需求,构建了真实夜间场景下的红外绝对深度感知实验,并进行了定性与定量评估。

1 本文提出的算法

1.1 单目自监督模型的基本原理

假设三维空间中某点在相机两个位置拍摄了In和In-1两张图像,两个位置的空间转换关系为Tn→n-1,空间中某点在两张图像上的投影坐标分别为pn和pn-1,如图1所示。图1中,如果相机在两个位置拍摄同一目标点p,且位姿转换矩阵T与某个点的深度已知,则可以构建出两个点的重投影关系。根据立体几何约束,pn和pn-1将有如下关系:

pn-1~KTn→n-1Dn(pn)K-1pn

(1)

图1 相机不同位置拍摄示意图

1.2 网络整体架构与抗遮挡细节

本文同时训练两个网络,即深度估计网络和姿态估计网络,网络架构如图2所示。

图2 网络架构

主体上为一个深度估计网络和一个姿态估计网络,通过重投影关系将两个网络的输出进行损失函数计算,再反向传播以调整参数。深度估计网络采用标准的U-Net[13]编码器-解码器结构,编码器用于提取红外图像特征,解码器用于将红外特征转化为深度值。姿态估计网络接受两帧红外图像作为输入,输出六自由度的姿态转化信息。采用单目视频序列估计深度,会不可避免地遇到前后帧像素遮挡问题,目标帧做重投影时,如果某些区域在前一帧或后一帧被遮挡,将会造成很大的重投影误差,影响反向传播。

(2)

1.3 损失函数

本文网络的损失函数由两部分组成,分别为重投影损失和边缘平滑损失。

(1) 重投影损失Lv s:为了从整体结构与像素细节来衡量重投影误差,重投影损失由两部分组成,分别为结构相似性度量(structural similarity index measurement,SSIM)[14]和L1损失函数:

(3)

SSIM的表达式为

(4)

一般常数α取0.85,μx和μy为图像x和y的像素均值,σx和σy为像素值的标准差,σxy为图像的协方差。SSIM的取值范围为0到1,两幅图像越相似,则SSIM越靠近1。

(5)

式中,p为图像中任意像素点;N为总像素数。

事实上,在计算重投影损失时,有着刚性场景的假设,如果场景中有明显运动的物体,或者重投影点超出了图像边界,则会对反向传播造成消极影响。本方法在重投影损失的基础上,参考了Vijayanarasimhan等人提出的方法[16],构建了一个由0和1组成的二值掩膜M,用于屏蔽这些像素的反向传播。所以总的损失函数为

L=μMLvs+λLsmooth

(6)

由于损失函数组成相似,平衡常数的设置参考Casser等提出的Struct2depth[17],取μ=1,λ=0.04。

1.4 多尺度上采样损失计算

第1.3节介绍的损失函数是在单一尺度上的损失计算,实际上,为了提高深度估计的准确率,会使编码器依次将图像下采样到1,1/2,1/4,1/8共4个尺度,与解码器对应的4个尺度依次进行重投影损失及边缘平滑损失计算,再将4个尺度的损失值相加。然而,红外图像具备边缘、纹理信息弱的特点,较低尺度下外观会更加模糊,深度图中极易产生孔洞效应,影响深度估计的准确性。

为此,本文将解码器产生的1/8,1/4,1/2共3个尺度深度图统一上采样到原图尺寸,然后在原图尺寸下进行重投影并计算损失。这样每一个尺度的深度图都可以以原图尺寸进行重投影,更能对场景深度进行精准的高分辨率重建,改善孔洞效应,如图3所示。

图3 多尺度上采样计算

1.5 单目绝对深度感知

以上是本文提出自监督网络的训练过程,深度估计网络和姿态估计网络是耦合的,但在测试时,使用单张红外图像序列作为输入,不必使用姿态估计网络,直接通过深度估计网络即可得到对应的深度图。但是深度图是经过神经网络中sigmoid函数归一化后的相对深度,将相对深度转化为绝对深度需要经过解归一化后再乘一个尺度因子ratio,算法流程如下。获得绝对深度后,即可进行算法的实际应用场景评估工作。

算法 1 相对深度转化为绝对深度输入: relative-depth map: Drminimum depth: Min_depthmaximum depth: Max_depthscale factor: ratio输出: absolute-depth map: Da1 a=1 / Max_depth2 b=1 / Min_depth3 Da=a+(b-a)Dr4 Da=Da·ratio5 if pixel-depths in DaMax_depth9 pixel-depths in Da=Max_depth10 end if11 returnDa

2 试验结果及评估

2.1 试验平台及训练方案

实验平台的操作系统为Ubuntu 18.04,神经网络的训练和测试模型在Pytorch 1.4架构下搭建。本文提出的网络架构,以实际输入的640像素×320像素图像为例,在训练阶段参数量为35.07×106个,计算量——浮点运算数(floating point operations,FLOPs)为32.29×109个;测试阶段由于不需要姿态估计网络,因此参数量减少为23.38×106个,计算量为14.86×109个FLOPs。本文网络从参数量和计算量来看与一个Resnet-50相当,整体架构不复杂,计算资源耗费相对较少。

训练数据集为FLIR车载红外数据集的连续视频序列部分,根据手册的相机参数计算出内参数矩阵K,在不改变K的条件下加入随机的图像左右翻转、亮度对比度调整等数据集扩充策略;训练过程中采用Adam梯度下降法,初始学习率为0.001,每8个epoch减小一半;除了输出深度的层使用sigmoid激活函数外,其余层均使用RELU激活函数。本实验在单个Nvidia RTX2070 s显卡上训练20个epoch。

因为红外图像本身具备边缘、纹理特征不丰富的特点,CNN对其特征提取难度明显大于可见光图像,如果在训练前对网络权重进行随机初始化,训练过程极易陷入局部最优解,如图4(a)所示。因此,本文采用迁移学习的思想,首先在KITTI车载可见光数据集上做预训练,使网络能预先学习车载场景的特征。在训练红外数据集时,使用可见光预训练权重对网络进行初始化,使神经网络能更好地提取红外特征,避免陷入局部最优解。图4表示控制网络结构及主要参数不变,依次采用两种训练方式的结果比较。

图4 训练策略效果比较

可以看出,如果仅在FLIR数据集上做训练,神经网络已经陷入局部最优解,无法判断出正确的场景远近关系,而通过先KITTI后FLIR的训练策略,可以较好的感知场景深度。

2.2 低能见度条件下本方法的定性比较与评估

为了验证本文方法能够在低能见度条件下为VDAS提供深度感知,本小节选取了FLIR数据集下的若干相同场景下对可见光与红外图像进行测试,红外图像未参与过网络训练。Monodepth2[18]为一种较先进的可见光深度感知方法。本实验低能见度可见光图片使用Monodepth2方法进行深度估计,红外图像使用本文方法进行深度估计,如图5所示。

图5 低能见度条件下两种方案比较

可以看出,在夜间这一典型低能见度条件下,使用可见光图像来感知深度,地面、天空及部分障碍物已经产生了较大偏差,而使用红外图像和本文方法则仍然能较好的感知周围环境。第2.3节也会基于此定性实验,在实际道路拍摄低能见度可见光与红外图片对的情况下,对绝对深度测量进行定量比较与评估。

2.3 真实场景的目标绝对深度获取及定量对比评估

FLIR红外数据集发布之初目的为目标检测,而非深度估计,且目前没有带深度标签的公开数据集供定量分析。因此,为了验证本文方法的实际用途和定量分析,本实验采用真实道路场景,以汽车夜间视觉避障为主要需求,使用激光测距仪采集道路目标物的若干离散深度值,并在相同地点拍摄红外图像。依照第1.4节提出的真实深度获取算法进行目标物的距离感知。定量评估采用如下指标:

(7)

对于目标物的确定,本文使用MaskRCNN[19]来构建掩膜,主要对象为车辆及行人,然后取掩膜内的深度中位数获取对目标绝对深度感知,如图6所示。

图6 对红外图像做目标分割并获得其绝对深度

为了定量分析本文方法的误差,本实验从20 m的位置开始对目标拍摄红外图像,然后相机和激光测距仪向目标移动,每隔1~2 m拍摄一张图像,同时激光测距仪采集相机距离目标物的若干离散点,用于计算真实深度。每隔5 m作为一个评估区间,按照式(7)计算误差率并统计平均误差,得到图7所示结果。

图7 各目标距离短内的平均误差比较

表1和表2统计了不同距离段内,处于该误差区间的图像数目占总图像数目的百分比。从表1中可以看出,目标距离在5 m内本方法取得的效果最好,误差多集中在10%以内;随着距离的增加误差有变高的趋势,当目标距离在15~20 m时,大部分误差会扩散到30%左右;从表2中可以看出,15 m以内的最大误差基本不会超过30%,多集中在20%以内,而超过15 m最大误差呈现急剧扩散趋势,部分已超过30%,而低误差图像占比明显减少。

结合图7不难看出,随着目标距离的增大,本方法的误差在不断增大,在大于15 m之后平均误差会大于20%。而离相机越近的目标,其误差分布也更趋向于更小的区间。在目标距离小于10 m时,绝大部分绝对误差能控制在20%以内,平均误差为11%左右。造成近处精确而远处误差较大的情况应该在于训练过程中重投影坐标采用双边线性插值方法确定,而前后帧之间较远处物体像素位移较微弱,造成不可避免的误差。

表1 不同距离段误差分布区间占比(a)

表2 不同距离段误差分布区间占比(b)

对于正常速度行驶(30 km/h)的汽车,其紧急制动距离一般不大于8 m。而本文方法15 m以内的相对误差为13.2%,绝对误差约为2 m,对突然出现的障碍目标如果从15 m处开始制动,则考虑误差的情况下仍然可以安全避撞。

此外,为了更进一步证实本文方法的理论意义,本文也与代表性的可见光深度距离估计算法——Struct2depth[17]与Monodepth2[18]设置了定量比较实验。在实际低能见度道路采集若干类似图5的可见光图像与红外图像对,如图8所示。在使用激光测距仪标定每一幅图像中若干目标点的深度信息之后,分别输入两种算法与本文算法构建的模型中,依照前文方法获取目标的绝对距离,得到图9所示平均误差比较。

图8 定量比较的实验场景

图9 与其他可见光算法的平均误差比较

从图9可以看出,在低能见度情况下,本文方法在各个距离段内的平均误差都小于两种先进的可见光算法。其中10 m以内3种方法误差相差不大,但是超过10 m后虽然误差都进一步加大,但本文方法的效果远好于另外两种方法,因此本文方法在低能见度背景下具备相当的应用潜力。

3 结束语

针对VDAS对夜间场景深度感知的需求,本文提出了一种基于自监督学习的单目红外深度估计方法。采用最小重投影误差,避免了单目视频训练时的遮挡问题,同时减小同属遮挡的红外噪点影响。通过多尺度统一上采样方法,使训练过程中不同尺寸深度图得以高分辨率重建,从而在反向传播中关注图像细节信息。最后,通过实际定性定量对比实验证明了适用于低能见度下的红外深度感知,经计算能满足突发情况下的避撞需求。

但是本文方法在一些方面仍存在困难,其一在于目前没有带真实深度标签的公开红外数据集,缺少有效的评估手段;其二,训练数据集样本数不多,导致实际拍摄得到深度图不如数据集内测试图片好,模型泛化能力不强。以视觉测量为代表的被动传感器的深度测量精度普遍不如激光雷达等主动传感器高,尤其是第2.3节距离越远本文方法估计效果越差,因此二者需要结合发展,这也是今后需要更深入研究的方向。

猜你喜欢
能见度投影红外
网红外卖
闪亮的中国红外『芯』
解变分不等式的一种二次投影算法
基于最大相关熵的簇稀疏仿射投影算法
2005—2017年白云机场能见度变化特征及其与影响因子关系研究
找投影
找投影
TS系列红外传感器在嵌入式控制系统中的应用
基于快速递推模糊2-划分熵图割的红外图像分割
低能见度下高速公路主动诱导技术的应用