APP下载

双目视觉感知下的公路限高实时预警算法

2023-12-12李宝军刘泽阳王小超肖志鹏

重庆理工大学学报(自然科学) 2023年11期
关键词:视差双目测距

李宝军,薛 炯,刘泽阳,王小超,肖志鹏

(1.大连理工大学 汽车工程学院, 辽宁 大连 116024;2.天津工业大学 数学科学学院, 天津 300387;3.北京中科慧眼科技有限公司, 北京 100023)

0 引言

国内公路限高设施分布广泛,通常架设在各个城市市区入口、高速路出入口、桥梁隧道前、火车道和港口附近,起到保护隧道和桥梁的作用。目前国内的限高设施没有统一的国标规范,各地政府设置的限高设施在外观、标识和限高高度等方面千差万别,给大型车辆的正常通行带来了诸多困扰。房车、大型货车、大型客车等,由于车身尺寸大、造价高,在公路限高场景中一旦发生限高事故,会造成公共财产和个人财产的重大损失,同时也会给驾驶员和乘客生命安全带来极大威胁。由于国内公路限高场景复杂,限高设施外造型非标、多样,为限高目标监测领域相关研究带来了巨大的挑战。

车辆在行驶工况下,存在着车速变化非均匀、路面不平激励输入和车身震动等多种不确定性因素,增加了中远距离传感器测距测高的难度,造成了输出结果不稳定的问题。目前自动驾驶路面感知系统中常见的传感器包括毫米波雷达、激光雷达和光学相机。研究表明[1],毫米波雷达可以探测到100~150 m范围内的行人,除了容易受到金属物体的影响外,只能提供距离和角度信息,物体的高度信息缺失;使用激光雷达[2]在100 m的范围内测距精度可以达到±3 cm,但高线束的激光雷达使用成本太高。Shu等[3]提出的featdepth单目无监督深度估计算法尽管在深度估计精度上接近单目有监督的深度估计算法,但依然存在着尺度恢复困难和测距精度低的问题,难以满足公路限高预警中实时测距测高的需求。

随着智能汽车的大规模量产,尽管双目相机测距精度低于激光雷达,但是成本优势十分明显,同时还具有丰富的图像纹理信息,有利于限高检测。原培新等[4]将双目视觉应用于列车把手位置并计算把手距离相机的物理距离,为机器人自动摘钩提供数据基础;王洪伟等[5]采用2个不同视角的CCD摄像头对道路前侧的红绿灯进行测距,50 m测距范围误差可以控制在6%以内;王昊等[6]提出基于双目视觉的车辆跟驰系统,实现了在60 m车间距测量范围内,使用25 mm焦距的双目相机的平均相对误差为2.66%;刘诗婷等[7]提出了一种基于双目变焦的超分辨率成像测距算法,实现了在相同距离下具有更小的测距相对误差,在相同的测距相对误差下具有更大的测距范围;刘志强等[8]提出了摄像头和毫米波雷达多传感器融合的算法,在晴天、雨天、夜晚和阴天4种不同天气条件下对目标的平均检测率达到88.3%。双目相机的缺点是分辨率有限,测距和测高精度对视差的依赖性较高,获取到的视差数据存在着噪声多、误差大、特征不明晰和难分离等多方面的问题。

针对上述问题,本文提出了一种基于深度学习的双目公路限高设施自动监测算法,对中远距离的限高设施进行检测和实时测距测高。通过目标检测和目标跟踪算法得到限高设施的二维检测框,结合获取的视差数据对检测框内的视差进行多步多尺度滤波,计算限高目标的距离和高度信息。最后,对计算得到的距离和高度信息进行鲁棒性输出并预警,实现输出高精度、实时性和鲁棒性的目标。

1 公路限高设施及场景分析

设置公路限高的目的是限制大型载重车辆通行,起到延长公路使用寿命、保护立交桥梁或隧道等跨越物安全的作用。但是如果设置不当,在限高事故中会对驾驶员和乘客的生命安全造成威胁。国内常见的公路限高设施主要包含限高杆、天桥、隧道、牌坊,考虑到桥梁和隧道的限高主体部分均无纹理,将其合并为桥洞类,故本文主要研究的限高对象为限高杆、桥洞、牌坊3大类。

各类限高设施缺乏统一的标准,其外形特征具有多样性、复杂性,因此对不同类型的限高设施根据不同的外形特征对其进行进一步分类,限高设施分类示意图如图1所示。

图1 限高设施分类示意图

限高杆杆体除了常见的黄黑相间的纹理外,还有红白相间的纹理和纯色无纹理的类型;限高横杆主体除了单根类型外,还有前后并排双根、上下平行双根、上下平行多根、底层悬挂式杆体和异形限高杆等多种类型;部分限高杆上有限高标识牌,但限高标识牌悬挂的位置不固定,字体存在模糊不清的情况。对于桥洞类限高设施,其限高主体无纹理,与墙体的区别在于以桥洞限高主体下沿作为分界线,下方无实体。按照限高主体的造型可以分为水平型桥洞、拱门型桥洞、梯形桥洞3大类,与限高杆设备类似,部分桥洞悬挂限高标识牌。对于牌坊设施,常见于村镇公路和景区门口,虽然纹理各不相同但其外形特征较为统一,均不悬挂限高标识,故牌坊不做分类。

对场景分类完成后采用基于深度学习的限高目标自动检测算法,为了保证模型训练的准确性,对不同场景的限高数据标注进行以下统一规范:1) 使用最小外接矩形框将限高设施主体完全包被;2) 对于有限高标识牌的限高设施,则将限高标识牌作为限高设施特征的一部分合并标注;3) 对于限高设施水平主体和两侧垂直固定区域连接处的2个直角特征,需要完整的被标注框包被;4) 对于桥洞类水平主体无纹理的限高设施,需要在最小外接矩形框高度的基础上在其下方增加矩形框高度的20%的标注空间,用来与普通无纹理的墙体做区分。部分场景的标注效果如图2所示,从左到右分别为双横梁限高杆、桥洞+限高杆、牌坊场景。

图2 不同的限高设施标注效果图

2 算法流程

本文采集的限高数据对应的天气情况主要分为晴朗天气和阴天2种。双目视觉公路限高实时预警算法的流程如图3所示:首先,将双目相机采集的限高场景的左目图像作为输入,利用目标检测网络Yolov5[9]对限高目标进行特征检测,获取限高目标的二维检测框信息;然后,对二维检测框内的视差数据进行多步多尺度滤波[10]算法后根据双目视觉原理[11]计算限高目标距离相机的初步距离计算值和限高设施的初步高度计算值;最后,采用基于局部和全局的距离差分算法对初步计算的距离值、高度值进行有效性和合理性判定,准确且实时、稳定地输出限高目标的测距、测高和预警信息。

图3 双目视觉公路限高实时预警算法流程

3 限高目标提取和视差精确估计

为了实现公路限高目标检测的自动化,首先要进行限高目标的自动定位和提取[12]。为了获取精度较高的视差数据,需要对立体匹配得到的视差数据进行多步多尺度滤波。

3.1 限高目标提取

本文研究的公路限高场景繁杂且限高设施外造型多样化,使用双目相机的左目图像作为目标检测的输入,为了保证在复杂场景中限高目标的自动检测,本文采用YOLOv5s目标检测算法,为了降低限高目标检测过程中的漏检率,在YOLOv5s目标检测算法中加入ByteTrack[13]跟踪算法,得到限高目标的二维检测框。

本文使用的视差数据是通过双目相机内部封装的立体匹配[14]算法获取,利用限高目标检测得到的二维检测框对获取到的视差数据进行截取,得到连续帧图像目标区域内的视差数据。

3.2 视差的精确估计

当双目相机距离限高目标较远时,通过对检测框区域内的视差数据进行可视化分析发现,限高目标的视差数据中存在高度非均匀、离群点复杂、频繁出现山谷分布以及包含不明强噪声等问题,影响目标区域视差计算的精度。远距离视差噪声分布的可视化效果如图4所示。

针对视差存在的问题,本文采用粗粒度滤波策略和多步多尺度的细粒度滤波策略对限高目标的视差数据进行清洗。

记ρ为每行视差数据中非零视差值所占的比率,2个清洗阈值分别为ρ1和ρ2,粗粒度滤波实现过程如下。

步骤1:对目标区域内的单行非零项目和单行所有项目分别求均值,若该行中有占比大于ρ的视差数据为0,将该行数据清零。

步骤2:对目标区域内的视差数据逐行进行处理,若当前像素的视差减该行的非零平均视差大于ρ1,将该像素的视差置为0。

步骤3:若当前像素视差小于清洗阈值ρ2,将该像素的视差值用非零均值填充。

经过粗粒度滤波后,视差数据中的大幅噪声和近零视差均被滤除,替换为动态非零均值,接下来将对视差数据进行多步多尺度的细粒度滤波。假设限高设施处于水平状态,细粒度滤波的目标是将粗粒度滤波得到的视差数据进行更精细的过滤,在目标区域内准确地定位限高目标的上沿和下沿。

细粒度滤波实现过程:给定细粒度滤波步数ST,细粒度滤波步长SL,动态迭代尺度DM,i∈[1,ST],动态迭代尺度公式为

DM=(ST+1)*SL-i*SL

步骤1:对粗粒度滤波得到的目标区域逐行求视差均值,并将该行中的所有大于视差均值与当前尺度DM之和的视差数据置为零。

步骤2:逐行求非零项目的平均值,将所有非零行中小于当前尺度DM的视差数据替换为该行的视差非零平均值。

步骤3:重复以上步骤直到循环结束,将限高区域内的所有非零视差数据的均值作为该限高目标最终的视差值DS和相机光心与限高目标下沿之间的像素高度值HP输出。

3.3 距离和高度计算

本文的测距[15]和测高均基于3.2节滤波输出后的视差数据DS,相机的安装高度为HC,相机的焦距为f,基线长度为BL,限高目标和相机之间的距离为DT,限高目标下沿与相机光心之间的实际高度为HT,限高目标下沿与相机光心之间的像素高度为HP,限高目标距离地面的高度为H。

4 鲁棒性输出与预警

不同于静止场景的测距测高任务,车辆在行驶过程中,车速存在非均匀变化、地面有不平激励输入、上下坡等多种不确定性因素,均会增加传感器对限高目标测量的难度,同时为测距测高输出带来大量噪声导致最终输出数据波动大且不稳定。本文提出的鲁棒性输出策略对初始输出的距离和高度数据进行处理,输出准确鲁棒的距离信息和高度信息。该策略应遵循以下2条假设:1) 限高设施表面是平整的;2) 速度变化尽可能合理,即输出的距离差分要尽可能均匀。

4.1 距离输出

由于输入距离的不确定性,采用2种策略并行处理。首先,假设条件信号满足高斯噪声,由于视差计算的不确定性,同时距离预测本质上是一维线性信号问题,故利用卡尔曼滤波[16]对距离预测值进行滤波,尽可能降低噪声的影响;其次,根据行车规律,为了达到单调性输出的目标,尽可能遵循采集数据的规律,将距离信息还原。考虑到输入的信号在距离限高设施较远的时候以大幅度随机分布为主,故采用局部邻域的距离差分估计来拟合距离输出。假设车辆以速度v1匀速前进,双目相机帧率为n,从计算模块输出的连续N(N>30)帧对应的计算距离分别为D1,D2,…,DN-1,DN,距离输出的具体步骤如下。

步骤1:根据车速v1和双目相机帧率n计算距离差分阈值α,其中α=v1/n。

步骤2:计算第N帧和第N-1帧的距离差分值αN,当αN<=α时,将距离预测值DN作为最终距离预测值输出,否则执行步骤3,其中αN=DN-DN-1。

步骤3:给定全局控制参数β,局部控制参数θ,以当前帧DN为基准,采用多项式拟合对[DN-β,DN-1]数据进行拟合,得到当前帧的全局距离预测值GD。

步骤4:若当前帧没有检测到目标,以当前帧DN为基准,利用直线拟合的方式对[DN-θ,DN-1]数据进行拟合得到预测值LD,将LD输出。

步骤6:若未出现当前帧限高检测失败和连续帧检测不到限高目标的情况,给定全局预测权值r和局部预测权值(1-r),将当前帧的全局预测值GD和局部预测值LD加权后输出最终的距离预测值。

4.2 高度输出

高度输出部分由于高度计算与图像中有效高度像素关联较大,其计算精度与距离成正比,同时又受到限高设施是否水平、地面是否有不平激励、是否存在上下坡等多种外部因素的影响,误差范围在近距离表现为高斯分布、椒盐噪声[17]、行车状态和随机噪声,远距离表现为近距离噪声和大幅随机噪声。故本文采用近似于累加贝叶斯估计算法,将局部邻域的有效值进行平均输出,采用有效范围的加权平均估计与小幅值加权均值估计结合,尽可能取小范围进行输出,具体步骤如下。

步骤1:用第N帧和第N-1帧的距离差分值αN和距离差分阈值α判断第N帧的视差值是否有效。若无效,则将[HN-3,HN-1]连续3帧的高度有效预测值的平均值作为当前帧的高度预测值输出;若N<3,则将前一帧高度预测值直接输出;若当前帧视差值有效,则执行步骤2。

步骤2:以当前帧DN为基准,采用多项式拟合的方式对[HN-β,HN-1]数据进行拟合,预测当前帧的全局高度预测值GH。

步骤3:若当前帧没有检测到目标,以当前帧DN为基准,对[HN-θ,HN-1]求均值得到预测值LH。

步骤6:结合相机的安装高度,将当前帧限高目标距离地面的最终预测高度H输出。

4.3 预警策略

将经过鲁棒性输出策略的距离预测值DT和高度预测值H输出,车辆高度为H0,安全高度预警阈值MV,当H-H0>MV时,在输出界面显示可安全通过,不进行预警。否则,在DT∈(2 m,30 m] 时,进行一级预警;在DT∈(30 m,60 m]时,进行二级预警;在DT∈(60 m,100 m]时,进行三级预警。

5 数值实验与结果分析

5.1 构建公路限高数据集

考虑到公路限高场景具有非标性、种类多样性、路况多样性、天气和光照多样性、限高设施方位分布多样性等特点,给公路限高实时检测和测高带来了极大的挑战。数据规模的大小和数据场景的多样性均是影响限高目标检测精度和测高计算精度的关键因素,故本文采用实车搭载双目相机在全国多个城市进行实地采集、在线虚拟采集和网络图像库中人工收集的方式,构建大规模、多场景的公路限高数据集。

对收集的限高数据进行统计,本文构建的公路训练数据集数据类型为单目限高图像,数据规模为26 600幅,覆盖了北京、上海、广州等国内25个城市,包含85个限高杆场景,规模为 14 343;35个桥洞场景,规模为9 857;8个牌坊场景,规模为2 400。各类限高场景的规模分布如图5所示。

图5 数据集中各类限高数据规模分布图

本文构建的公路限高测试集数据类型包括左目相机图像、右目相机图像、视差数据和相机内外参文件,数据规模为6 089。其中正样本数据规模为4 558,负样本数据规模为1 531,正样本数据中包含12个限高杆场景,规模为2 996;6个桥洞场景,规模为1 120;2个牌坊场景,规模为442。公路限高测试集中的左目相机图像数据用来做目标检测实验;左目相机图像、视差数据和相机内外参数据用作目标检测后的测距测高任务。

5.2 实验概况

硬件设备:中科慧眼双目相机焦距为8 mm、基线长度为119.5 mm、相机中心离地高度1 570 mm,分辨率为1 280×720,双目相机与实验车辆之间刚性固定。硬件设备CPU为Intel(R) Core(TM) i7-10700 CPU@2.90 GHz,GPU为NVIDIA GeForce RTX3090,内存为24 GB,实现平台模块为Matlab、Python 3.6、OpenCV等。实验内容主要包括目标检测实验、测高精度实验、输出稳定性实验等。

实验工况:实验地点主要在北京和大连,实验路况包括平整公路路面、轻微不平激励输入路面和坡道路面,天气工况仅考虑晴朗天气及阴天,实验车速保持在30~50 km/h之间。

5.3 限高目标检测实验

在本文构建的规模为26 600幅图像的公路限高双目训练集上使用YOLOv5s网络训练目标检测模型,训练1 200个epoch,总耗时136.4 h,训练精度P达到98.8%,召回率R达到99.5%。

使用训练好的模型在规模为4 458的限高测试集上进行测试实验,实验结果如表1所示;在规模为1 531的负样本测试集上进行测试实验,误检率为0.3%,对实验结果进行统计得出本文算法的实际测距范围为(0,100 m),限高检测效果如图6所示。

表1 YOLOv5s在公路限高测试集上的实验结果

注:距离为28 m; 高度为2.25 m; 真值为2.28 m

5.4 测高精度实验

测高精度实验采用测试集中20组不同类型的限高场景,部分场景的测高结果如图7—图10所示。图中所示的绿色基准线为限高设施的真值,绿色区域为高度真值±0.1 m的范围,粉色区域为高度真值±0.2 m的范围。对实验结果进行统计,60 m内的测高平均误差<4%,具有较高的测量精度。

图7 测高精度(按距离分布场景1)

图9 测高精度(按距离分布场景3)

图10 测高精度(按距离分布场景4)

5.5 输出稳定性实验

图11为经过细粒度滤波后直接把测高计算值输出效果与使用鲁棒性输出策略后的高度输出效果对比。在测试场景1中,使用鲁棒性策略输出后的测高曲线整体的波动幅度收窄,测高输出比使用鲁棒性输出策略前精度更高;在测试场景2中,[40 m,80 m]距离范围内的测高精度和波动幅度均低于[8 m,40 m]距离范围内的测高输出,符合距离目标越近,视差精度越高的规律。

图11 鲁棒性输出前后测高稳定性对比图

在中远距离范围内,可以看出鲁棒性输出策略能够有效地屏蔽车辆在行驶过程中由路况和车辆发动机振动产生的不确定性噪声,同时能够增加测高输出的稳定性,平滑高度输出曲线,给驾驶员带来更加舒适的使用体验,能够满足大型车车辆日常公路的限高场景使用要求。

6 结语

1) 针对公路限高设施种类繁多、场景复杂导致限高目标检测难的问题,构建大规模、高场景覆盖度的限高数据集,并在测试集上得到98.77%的检测精度,漏检率为0.87%,误检率为0.36%,帧率为50FPS,可实现实时检测。

2) 采用距离和高度鲁棒性输出策略,大幅提高测距输出的合理性和测高输出的稳定性。

3) 针对双目相机在中远距离下视差噪声多、误差大等问题,采用多步多尺度滤波算法处理视差数据,将60 m范围内的限高目标测高平均误差控制在4%以内,为大型车辆的驾驶员在通过公路限高场景时提供决策依据。

尽管本文算法能够实现公路限高目标的自动检测,以及实时鲁棒地输出测距、测高和预警信息,但面对更加复杂的场景,如有坡度的限高场景,大雾、大雪、大雨等低能见度限高场景还存在一定的局限。在后续工作中将采集复杂光照和复杂坡度的限高场景数据,进一步提高算法在低能见度限高场景和有坡度的限高场景下的测距测高精度。

猜你喜欢

视差双目测距
基于自适应窗的立体相机视差图优化方法研究
类星体的精准测距
基于双目测距的卡尔曼滤波船舶轨迹跟踪
基于梯度域引导滤波的视差精炼迭代算法
浅谈超声波测距
基于分割树的视差图修复算法研究
基于双目视觉图像的长度测量方法
立体视差对瞳孔直径影响的研究
基于PSOC超声测距系统设计
相对差分单项测距△DOR