基于单目视觉的车辆前方障碍物测距方法
2022-04-21高维岳陈宇拓
高维岳,陈宇拓+,刘 洋,陈 标
(1.中南林业科技大学 计算机与信息工程学院,湖南 长沙410004;2.湖南汽车工程职业学院 信息工程学院,湖南 株洲412001)
0 引 言
现阶段基于机器视觉的车辆前方障碍物测距研究主要分为两大类:多目视觉测距系统与单目视觉测距系统[1]。多目视觉测距系统利用多方向视觉差来获取目标深度信息[2],但计算速度慢且成本较大,同时图像配准困难。单目视觉系统利用摄像机内参与几何关系进行测距,在保证较高的测距精度下相较于多目视觉系统具有结构简单、运算量小、实时性高等优点。目前国内外单目视觉测距方法研究可分为两类:基于数据回归建模的方法与基于几何位置关系的方法。数据回归建模的方法[3]优势在于测距结果不会受到透镜畸变以及光路偏差的影响,该方法通过获取大量样本点并与像平面坐标建立对应关系,再利用数据回归建模方法建立映射模型,但对于不同参数的摄像系统需要重新建模。基于几何位置关系的方法利用摄像机内参与摄像机摆放高度、俯仰角等辅助参数进行建模与坐标变换,相较于数据回归的方法更加灵活前期工作更小更具有可移植性。文献[4]利用焦距和小孔成像原理提出的纵向车间距离检测方法在路面水平且预测车辆在图像正中央时可以取得较好的效果,但对识别处于路面两侧的障碍物误差较大。文献[5]利用车辆宽度比例关系进行测距,容易受到车辆宽度的多样性与车辆拍摄角度变化的影响导致测距效果欠佳。而文献[6]根据摄像机投影模型,通过几何关系推导三维路面坐标系与二维像平面坐标系对应关系,以此建立测距模型的方法测距精度更高更适用于大多数驾驶场景。
现阶段传统的车辆前方障碍物检测方法主要针对行车过程中的前方车辆,利用车辆颜色、阴影、对称性、边缘等特征对前方车辆进行检测[7,8]。由于人工提取特征,传统方法面对具有多种障碍物如行人、路障、摩托车的复杂路况时效果较差。基于深度学习的目标检测方法[9]通过卷积神经网络提取特征,为准确检测识别多种障碍物提供了可能,通过使用多尺度训练能够检测多种大小目标,较传统方法泛化性更好、检测准确性更高。
为了解决车辆单目测距系统中定位精度低、泛化性差等问题,本文提出了一种深度学习与几何推导相结合的车前障碍物距离测量方法。基于深度学习网络YOLOv4[10]算法为核心构建目标检测算法框架,利用卷积神经网络提取目标特征,预测目标类别和目标在图片上的位置信息即检测框。为了解决检测算法的位置预测不准确问题,运用边缘检测算法修正目标检测框的位置。根据摄像机投影模型,通过几何关系建立了路面坐标系和像平面坐标系的对应关系,并对测距过程和算法进行了优化,最后采用拟合算法对测量数据进行拟合降低了测距误差。
1 YOLOv4算法实现行车障碍物目标检测
YOLOv4算法是YOLO(you only look once)系列目标检测算法的第四代,属于基于深度学习的单阶段目标检测算法,对比两阶段目标检测算法具有速度快、计算量小的优点。在YOLOv3[11]算法的基础上YOLOv4算法进一步加强了检测精度以及检测速率,在Darknet-53网络的基础上引进了CSPNet[12](cross stage partial network)将骨干网络框架改为了CSPDarknet-53,并使用了Mish激活函数替换了Leaky-ReLU激活函数,有效提高了网络的学习能力并减少了运算量。并使用了Mosaic数据增强方法,将4张图片随机缩放、裁剪、排布后进行拼接然后加入到训练集中进行训练以解决小目标分布不均匀的问题。为了解决过拟合问题,YOLOv4算法使用了DropBlock随机减少神经元数量从而对网络正则化过程进行改进,使网络变得简单。在特征融合部分,利用FPN[13](feature pyramid networks)进行下采样提取强语义特征进行目标分类,再利用PAN[14](path aggregation network)进行上采样提取强定位特征进行位置检测,显著提升了模型性能。为了增加预测框回归速度与检测精度,在训练时将二元交叉熵损失(binary cross-entropy loss)改进为CIoU_loss(complete intersection over union loss),并将边界框筛选方法NMS(non-maximum suppression)改进为DIoU-NMS(distance intersection over union non-maximum suppression)综合考虑了重叠面积与中心距离问题,提高了对重叠目标的识别精度。YOLOv4算法在保证实时性的基础上也拥有着较高的检测精度,与上一代YOLOv3算法相比平均检测精度AP(average precision)提高了10%,每秒帧率FPS(frame per second)提高了12%。图1为多种障碍物目标检测的结果。
图1 多种障碍物目标检测结果
2 障碍物目标检测位置的修正
YOLOv4目标检测算法通过分析检测目标图像特征来预测其类别信息与坐标信息,而检测目标距离越远图像上所占像素越少其特征也越模糊,导致检测算法所预测的位置信息偏差越大。目标检测算法输出的检测框底边与目标和地面实际接触位置存在一定的差距。本文利用边缘检测算法获取目标实际底边位置得到坐标差来对检测框进行调整,从而降低检测算法位置预测误差。
通过对YOLOv4算法获得的大量检测结果偏差分析,发现垂直方向位置偏差通常在30像素以内,因此以检测框底边中点为中心,上下左右各取50像素对图像进行截取,取100×100像素的图片并对此图片进行边缘检测运算。基于均值滤波和中值滤波的混合滤波器改进Canny算子,以提高边缘检测抗噪性、连续性和定位精度,降低误判率。利用改进Canny算子对目标进行边缘检测结果如图2所示。
图2 改进的Canny算子边缘检测结果
图3(a)目标下方的横线为检测框底边且标识出了中点,需将检测框底边修正到如图3(b)所示的目标与路面接触边位置。将边缘检测得到目标实际底边所有像素的纵坐标平均值与原检测框底边中点像素的纵坐标值之差作为检测框底边中点纵向修正距离,修正后的结果如图3(b)所示。
图3 检测框调整结果
将摄像机采集到的图像输入到YOLOv4算法中,算法通过卷积神经网络提取目标特征并进行预测,输出前方障碍物的类别以及其在像平面中左上(u1,v1)与右下(u2,v2)坐标。为了对障碍物进行测距取检测框底边中点((u1+u2)/2,v2)代表其在像平面上的初始位置,通过位置修正算法得到目标在像平面上的坐标p(xp,yp)。
3 车辆前方障碍物测距方法
单目视觉系统可以通过小孔成像模型来描述其透视变换。图像采集过程是将客观世界的三维路面坐标系投影到摄像机的二维像平面坐标系中,而测距过程为图像采集的逆过程。因此对目标进行测距首先需要获取目标在摄像平面的坐标,然后利用摄像机的水平视角、垂直视角、俯仰角、摆放高度以及清晰度等参数,将摄像平面坐标转换为三维路面坐标,通过坐标计算出障碍物目标与摄像机之间的距离。其中摄像机垂直和水平视角以及清晰度为摄像机固定参数,而摄像机俯仰角和摆放高度需要人为测定。
3.1 单目视觉成像模型
三维路面坐标系如图4所示,平面ABK表示路面,ABCD为被处于O点的摄像机所拍摄到的路面区域,G为摄像机光轴OG与路面的交点,J为摄像机在路面平面上的垂直投影,OJ为摄像机的安装高度h,x轴为路面X轴在像平面的映射轴。∠EOF为摄像机的水平视角,大小为2β,G点为坐标原点,行车前进方向为Y轴正方向。假设点P(XP,YP)为障碍物目标,点N和点M分别为点P在Y轴和X轴上的投影。
图4 三维路面坐标系
摄像机所拍摄图像如图5所示,矩形abcd为路面ABCD的成像平面。像平面中p(xp,yp)点对应路面坐标系中P(XP,YP)点,像平面中e、f、g、i、l、m、n点分别对应路面坐标系中E、F、G、I、L、M、N点,H、W分别为像平面的高与宽。
图5 二维像平面坐标系
图6为Y轴方向正侧面摄像机成像模型。N和n点分别为目标物体在路面坐标系Y轴和像平面坐标系y轴上的投影,因而有GN=YP和gn=yp。光轴OG与目标在Y轴上的投影点N的夹角∠GON为θ0,摄像机的垂直视角∠IOL为2α,摄像机的俯仰角∠JOG为γ。y轴为路面Y轴在像平面的映射轴。
图6 Y轴方向正侧面摄像机成像模型
3.2 测距算法推导
根据图6由三角关系可得tanθ0的表达式
tanθ0=gn/og=2yp×tanα/H
(1)
P点在路面坐标系中的Y轴坐标
YP=GN=NJ-GJ=h(tan(γ+θ0)-tanγ)
(2)
将式(1)代入式(2),利用三角函数和差化积公式可得路面坐标系P点Y轴坐标与像平面坐标系p点y轴坐标转换式
(3)
图6中∠IOG大小为α,∠JOG为俯仰角γ,因此可以算出线段
GI=GJ-IJ=h(tanγ-tan(γ-α))
(4)
根据图4中直角三角形边长关系有
(5)
(6)
根据图4中△IKD与△FKG相似性有
(7)
将式(5)、式(6)代入式(7)得到KG的表达式
(8)
图4中∠GOM夹角为θ1,则有
(9)
(10)
因△GKM与△NKP相似,有
(11)
从而解得P点的X轴坐标值
(12)
综上,得到障碍物目标在三维路面坐标与二维像平面坐标的映射关系式如下
(13)
其中,W为图像的宽,H为图像的高度,h为摄像机摆放的高度,2β,2α,γ分别为摄像机的水平视角、垂直视角以及俯仰角。
通过第2节障碍物目标检测位置修正算法得到的目标在像平面上坐标p(xp,yp),代入式(13)解得路面坐标系目标位置P(XP,YP),利用式(14)计算出前方障碍物与本车之间的距离,即目标P点至摄像机在路面垂点J之间的距离
(14)
4 测量数据的三次曲线拟合
在图5像平面坐标系中,检测目标距离摄像机越远则图像上的像素代表的距离信息量越大,信息特征也越模糊,因而导致远距离目标通过检测算法所预测的位置信息偏差较大。为了进一步提升测距的准确度,本文利用三次Bezier曲线方程对障碍物的实际测量距离与算法修正后预测的距离进行数据拟合,通过插值的方式构建方程以降低测距误差。
三次Bezier曲线方程为
(15)
数据点到曲线的偏移量为
di=[Q(ti,V)-Pi]T·[Q(ti,V)-Pi]
(16)
数据点到曲线的总偏移量为
(17)
为了使数据点到曲线的距离和最小,即D(t,V)最小,需求解三次Bezier曲线的两个中间控制点V1,V2来构建方程,求解过程如下:
对D(t,V)求V1和V2的偏导数,令其等于0
(18)
(19)
由式(19)解得控制点V1、V2,即得到式(15)三次Bezier曲线方程。
5 算法实验结果与分析
本文采用图像像素为4032×3024、焦距为4.216 ms、光圈大小为f/1.8,其横向可视视角为65°、纵向可视视角为59.6°的广角摄像机进行拍摄。通过测量得到摄像机安装高度为1.2 m,摄像机俯仰角为87.9°。程序运行环境为Python3.6,YOLOv4目标检测算法基于深度学习框架Tensorflow实现,版本号为1.11,并行计算库为CUDA Toolkit 9+cuDNN 7.1。检测到的障碍物使用矩形框表示其位置,目标识别结果及测距结果显示在矩形框上。经过检测框位置调整后的部分结果如图7所示。
图7 检测框调整后的测距结果
在路面上分别将障碍物汽车放置在距离摄像机5 m~80 m处,每间隔5 m测距一次,并随机在路面上放置车辆进行测距,共测得60组实际测量距离和算法初始测量距离共120个距离数据,表1的第一和第二列呈现了其中14组距离数据。表1第三列是利用Canny算子检测目标底边修正目标位置后的测距结果。数据表明,检测目标距离越远,目标检测算法所得检测框位置误差引起的测距误差也越大,而本文提出的检测框位置修正方法,起到了较大幅度降低测量误差的作用。检测框调整前平均误差为6.21 m,调整后的平均误差为1.504 m。
通过第4节三次Bezier曲线拟合算法,将60组实际测量距离和检测框位置修正后的测距结果代入式(19)解得控制点V1、V2,结合控制点V0=P0、V3=Pn(曲线的首尾控制点分别等于曲线的起点和终点),代入式(15),展开三次Bezier曲线x、y参数方程得到如式(20)所示
(20)
将经过检测框位置修正后的测量距离代入式(20),即可得到拟合后的距离,曲线拟合后的测量距离见表1第4列,根据Bezier曲线性质起点和终点误差为0。检测框位置修正后的平均误差距离为1.504 m,而三次Bezier曲线拟合后的平均误差距离为0.776 m,通过拟合使测距误差大大减小。
表1 测距结果
图8为三次Bezier曲线拟合结果,图中圆点为表1中14组位置修正后测量距离数据点,三角形为曲线控制点。
图8 三次Bezier曲线拟合结果
实验结果表明,在实际距离5 m~50 m之间,平均误差距离为0.5356 m,最大误差为1.0952 m,实际距离大于50 m后,由于检测目标在图像上所占像素区域变小造成测距误差增大,当实际距离70 m时,测距误差最大为2.362 m。
本文与文献[4]中表1、文献[6]中表4和文献[15]中表1中所示的测距结果数据进行比较,相同距离下的测距误差均有较大幅降低。其原因之一是本文进行了检测目标位置修正,减小了目标检测算法引起的目标位置偏差,而文献[15]中所采用的差分检测方法不能较准确检测出目标的实际位置,且未进行位置修正;其二是本文对测距算法进行优化,并对测量数据进行了曲线拟合,使得算法测距更接近实际距离,而文献[4]和文献[6]中测距方法易受到车辆水平偏移的影响。
6 结束语
本文基于单目视觉系统,提出了一种行进车辆前方障碍物距离测量方法。利用基于深度学习的目标检测YOLOv4算法对车辆前方障碍物进行检测,解决了传统障碍物检测算法泛化性差且仅能检测单一障碍物的问题;针对目标检测算法框定目标位置信息不准确问题,利用改进的Canny算子进行边缘检测获取目标实际位置,通过计算检测框底边位置纵向坐标差对目标位置进行调整;基于摄像机投影模型,通过几何推导建立测距模型,并用三次Bezier曲线拟合测距数据。实验结果表明,本文方法较大幅度提高了障碍物测距的准确性和效率,能够满足日常车辆防碰撞预警的需求。