一种基于改进YOLO算法的视觉导航车环境感知方法

文档序号:32008199发布日期:2022-11-02 14:30阅读:217来源:国知局
一种基于改进YOLO算法的视觉导航车环境感知方法
一种基于改进yolo算法的视觉导航车环境感知方法
技术领域
1.本发明设计计算机视觉领域和自动驾驶技术,具体是一种基于改进yolo算法的视觉导航车环境感知方法。


背景技术:

2.自动驾驶是机器视觉的重要应用领域之一,由智能交通引出的车辆的环境感知系统开发设计已成为热门研究方向。环境感知处在智能驾驶车辆和周边环境信息交互的关键位置,在实际应用中车辆周围路况复杂多变,环境感知系统需要帮助车辆模拟人类驾驶员的感知能力,保证自动驾驶的安全性和实时性,以便自动驾驶模块把周边环境信息和自身定位相结合,依据行驶计划制定最优路径,并控制车辆按照行驶路线转向和避障。
3.目标检测是对车辆行驶时周边环境的重要目标进行定位和分类,最主要的就是行人和车辆的检测,并且希望对周边环境其他多种目标也能定位和分类,达到更全面的感知效果。视觉感知在自动驾驶中发挥着重要作用,视觉导航自动驾驶就是从摄像头拍摄的图像中获得和提取视觉信息,辅助决策系统控制车辆的动作。当前主流的目标检测算法在检测精度和速度上精益求精,而应用到自动驾驶车辆的环境感知系统则需要增加对场景的理解,例如定位障碍物位置,车道线位置,区域是否可行驶等。同样还要考虑是否容易实际部署的问题,嵌入式设备普遍计算资源不足,深度学习模型的研究成果较少能转化为实际经济效益。功能单一和部署成本昂贵是目标检测算法在车辆环境感知系统中应用的两大难题。
4.在自动驾驶和辅助驾驶中对周围环境的感知任务,只是得到周围目标的类别和位置信息是不够的,对一个目标的精确定位还应包括距离信息,这对行驶安全至关重要。常用的单目相机测距方法有相机内参集合标定和透视变化数据回归建模等,这些方法的测距效果容易受到相机姿态角的影响,在实际的行驶过程由于车辆本身震动和路况变化相机的姿态角是不断变化的,所以需要一种能够考虑修正相机姿态角的测距方法。为了和目标检测的输出结果配合,自动驾驶车辆的测距模块可以使用单目相机根据目标已有的定位和分类进行测距。目前相关测距算法已发展成熟,但由于车辆行驶场景的复杂性,面对各种不同路况、气候、光线等不可预测的因素,测距结果总是伴随着较大误差,测距算法应跟随实际的应用领域做出合适的改进,在车辆行驶环境的目标测距,应当考虑目标位置的不同情况,例如上下坡和斜向测距。


技术实现要素:

5.(一)解决的技术问题
6.针对现有的车辆环境感知技术的不足,本发明提供了一种基于改进yolo的三任务目标检测和图像分割算法,对于现有的测距算法在交通目标测距不准确问题,本发明提供了用道路消失点估测摄像机姿态角变化的方法,减少摄像机姿态角变化对测距结果的影响,使测距更准确。
7.(二)技术方案
8.为实现上述目的,本发明提供了如下技术方案:
9.一种基于改进yolo的视觉导航车环境感知方法,包括以下步骤:
10.1.基于改进yolo的视觉导航车环境识别方法包括以下步骤:
11.步骤一、把yolov5目标检测算法的结构改进为具有三个head部分,以便能进行目标检测任务、车道线分割任务和可行驶区域分割任务。
12.步骤二、在自动驾驶数据集bdd100k训练,完成对车辆行驶时周围环境的目标检测任务、车道线分割任务和可行驶区域分割任务。
13.步骤三、检测图像或视频中车辆行驶前方的道路消失点,计算当前相机的姿态角变化,对步骤一检测到的目标进行测距。
14.2.根据权利要求1所述的基于改进yolo算法的视觉导航车环境感知系统设计与实现,其特征在于所述步骤一中基于yolov5的多任务检测算法包含以下步骤:
15.步骤一一:具有三个任务头部分,分别是目标检测头,车道线分割头和可行驶区域分割头。整个改进的yolov5的损失函数是目标检测损失、车道线分割损失和可行驶区域分割损失的和。目标检测头部分损失函数是yolov5原本的损失函数,车道线分割头的损失函数是交叉熵损失加iou损失,可行驶区域分割头的损失函数是交叉熵损失。输入图像经过5次下采样后把不同层次的特征图作为三个任务头的输入,同时完成目标检测和图像分割任务,最后由每个任务头输出层的损失函数计算最终输出结果,目标检测算法的输出包括:自动驾驶数据集 bdd100k标记的10类目标、车道线分割结果和可行驶区域分割结果。
16.步骤一二:在neck部分,改进之处是把原有的空间金字塔结构(spatialpyramid pooling)替换为空洞空间金字塔池化结构(atrous spatial pyramidpooling),这样做可以增大卷积核的感受野,加快计算速度。
17.3.根据权利要求1所述的基于arm的视觉导航车环境感知系统设计与实现方法,其特征在于所述步骤三中采用基于opencv的道路消失点提取算法进行道路目标测距,具体步骤为:
18.步骤三一:根据lsd(line segment detect)方法提取图像中的直线,使用梯度和水平线信息快速提取图像中局部直线轮廓,这些轮廓是图像中灰度亮暗快速变化的区域。
19.步骤三二:过滤掉和道路消失点不相关的直线。过滤掉水平或近似水平核垂直或近似垂直的直线,线段与水平方向的角度计算公式为:其中i(x,y)是输入图像在(x,y)点的灰度值,g
x
(x,y)和gy(x,y)分别是像素(x,y)在水平和垂直方向的梯度。
20.步骤三三:过滤一侧像素是绿色的线段,这类线段可能来自图像中的植物,这些线段数量多,对计算道路消失点有较大干扰。这里定义color(z)函数判断像素的颜色是否是绿色:
21.22.步骤三四:权重投票,对于线段不同的特征,根据长度、角度和空间位置对所有线段进行投票获得道路消失点。长度权重定义为:w
l
=l
line
/ld,l
line
是原始线段的长度,ld是图像对角线长度。角度权重的设计是希望保留靠近45度和135度角的线段:高斯空间权重对空间不同位置给出不同权重:在点(i,j)的邻域空间,中心点是最大权重点,远离中心点的点权重较小。
23.步骤三五:消失点提取,每个像素对长度、角度和高斯权重空间加权求和,:m(x+i,y+i)=m(x+i,y+i)+v0(x,y)
×wl
×
wo×ws
(i,j)。其中v0(x,y)= 1.0是基本分数,投票中得分最高的点就是道路消失点。
24.本发明与现有的技术相比,改进的yolo算法能够同时完成三个任务,并且结合测距算法后能够较为全名的对车辆行驶环境进行感知,避免使用复杂昂贵的传感器,在自动驾驶系统中有一定的使用性。
附图说明
25.图1 aspp结构原理图
26.图2 aspp输入和输出
27.图3改进的yolo算法结构图
28.图4改进的yolo算法在bdd100k测试集的评价指标
29.图5目标位置在x轴有分量的情况
30.图6目标位置在y轴有分量的情况
31.图7道路消失点提取结果
32.图8道路消失点的偏移
33.图9引入道路消失点后的测距结果
34.下面结合本发明实施例的附图,对本发明中的技术方案进行清晰完整的描述,
具体实施方式一:
35.本实施例模型进行深度学习训练的平台配置如下:
[0036][0037]
表一训练平台配置
[0038]
自动驾驶数据集bdd100k有10万张图片,其中训练集有7万张,验证集1 万张,测试集2万张,本实施例在bdd00k的训练集进行训练,在其测试集进行测试。
[0039]
本发明的步骤为:
[0040]
步骤一:改进yolov5的neck部分,把原有的空间金字塔结构(spatialpyramid pooling)替换为空洞空间金字塔池化结构(atrous spatial pyramidpooling),图1即为aspp模块示意:对input feature map以不同采样率的空洞卷积并行采样;然后将得到的结果concat到一起,扩大通道数;最后通过 1
×
1的卷积将通道数降低到预期的数值。相当于以多个比例捕捉图像的上下文。就是将feature map通过并联的采用不同膨胀速率的空洞卷积层用于捕获多尺度信息,并将输出结果融合得到图像的分割结果。如图2所示,这是在deeplabv3中改进后的aspp。用了一个1
×
1的卷积和3个3
×
3的空洞卷积,每个卷积核有256个且都有bn层。事实上,1
×
1的卷积相当于rate很大的空洞卷积,因为rate越大,卷积核的有效参数就越小,这个1
×
1的卷积核就相当于大rate 卷积核的中心的参数。aspp结构主要的作用是扩大了卷积核的感受野,加快了卷积速度。
[0041]
步骤二:将yolo的head部分增加为三个,即整个算法将有三个输出。三个 head分别是目标检测头、车道线分割头和可行驶区域分割头。整个改进yolo的损失函数是三个头的损失和,其中目标检测头的损失函数l
det
是置信度损失、位置损失、分类损失以及giouloss损失的和;车道线分割头的损失函数是车道线分割头的损失函数是即iou损失与交叉熵损失的和,tk只有在预测正确时是1,其他均为0;可行驶区域分割头的损失函数l
dri
也是交叉熵损失。改进的 yolo算法的结构如图3所示,包含backbone+neck+3个head结构。整个改进 yolo算法的损失函数是:
[0042]
loss=α1l
det
+α2l
lane
+α3l
dri
[0043]
步骤三:模型训练,本实施例将改进的yolo算法在开源自动驾驶数据集 bdd100k的训练集部分进行训练。设置初始学习率是0.0005,如果在初始的几个 epochs过程中loss值不下降,则需减少学习率1%。把训练集的7万张图片都作为输入。本实施例的输出包含目标检测结果和图像分割结果,目标检测的评价指标是map、推理速度、准确率p(precision)和召回率r(recall),计算公式如下:
[0044][0045][0046]
ap=∫pd(r)
[0047]
tp表示预测框把实际是正样本的目标正确的分类为正样本的情况的数量,fp表示预测框把实际为负样本的目标错误的分类为正样本的情况的数量,fn表示预测框把实际是正样本的目标错误的分类为负样本的情况的数量,tn表示预测框把实际是负样本的目标正确的分类为负样本的情况的数量。
[0048]
对于图像分割部分,评价指标是精确度acc(accuracy)、iou和miou,相关指标计算公式如下:
[0049][0050]
[0051][0052]
其中i表示真实值,j是预测值,fn+tp表示i的所有预测结果,fp+tp是所有预测为i的值。
[0053]
改进的yolo算法在开源自动驾驶数据集的测试集部分测试结果如图4所示,目标检测部分map值0.307,检测速度约11fps;可行驶区域分割部分accuracy= 0.96,iou=0.839,miou=0.901;车道线分割,accuary=0.670,iou=0.260,miou= 0.622。
[0054]
相比于常见的目标检测和图像分割算法,本文算法在指标上优势不大,只在可行驶区域分割任务中表现优异,在目标检测和车道线分割任务均表现普通,但这部分改进依然有其实际意义,在实际部署时,单个算法完成三个任务,将大大减少对嵌入式平台硬件计算资源的要求,可显著降低成本。
[0055]
步骤四:首先对目标测距建立数学模型,如图5和图6所示,分为目标位置在x轴有分量、在y轴有分量和在两个轴都有分量三种,数学推导过程不在此赘述,图5情况时测距为图6情况时测距为
[0056]
步骤五:用lsd(line segment detect)直线驾车呢方法检测图像中直线, lsd的具体算法和实施细节可参考grompone的论文。之后按照公式具体算法和实施细节可参考grompone的论文。之后按照公式原理求出所有直线相对于水平方向的角度大小,过滤掉水平或近似水平核垂直或近似垂直的直线;再按照公式(补充编号)原理检查直线附近绿色像素是否较多,这里要过滤掉一侧像素是绿色的线段;高斯空间投票,按照公式对线段5
×
5领域的点进行加权计算,对于点 (i,j)的领域空间,-2≤i,j≤2,σs=1.5,二维空间高斯权重分布如图所示,中心 (0,0)是线段权重最大的点,远离中心点的点权重较小。
[0057]
步骤六:消失点提取和测距,按照公式m(x+i,y+i)=m(x+i,y+i)+v0(x,y)
×ꢀwl
×
wo×ws
(j,i)对所有点进行投票,得分最高的点认为是道路消失点。效果如图7所示。再根据道路消失点相对于相机无姿态角时的道路消失点偏移情况计算相机姿态角变化,如图8所示,相机姿态角计算公式是偏航角:相机姿态角计算公式是偏航角:俯仰角:再根据公式和公式测距,测距结果如图9,测距准确度相比不引入道路消失点有所提升。
[0058]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1