一种用于无人物流车的可行驶区域划分方法
未命名
07-11
阅读:111
评论:0

1.本发明涉及物流运输技术领域,特别涉及一种用于无人物流车的可行驶区域划分方法。
背景技术:
2.随着无人驾驶技术的日趋成熟,无人驾驶技术率先在物流园区,集装箱港口卸货区这类封闭无人场景落地。在物流运转仓库区这个封闭场景下,由于存在着车道线不完整以及部分行车区域没有车道线的情况,传统的依靠车道线识别和车道线保持的的自动驾驶解决方案无法完成任务,而且由于仓库中存在着大量的货架,传统的无人驾驶只针对地面的障碍物进行车道路线规划,忽视了半空中或者高出地面的障碍物,以此使得无人物流车在行进中会被空中障碍物所阻碍。
技术实现要素:
3.本发明的目的在于,提供一种用于无人物流车的可行驶区域划分方法。本发明可以实现无人物流车的车道规划,并且能对高出地面的障碍物进行检测,避免出现碰撞的问题,提升了无人物流车的智能化水平。
4.本发明的技术方案:一种用于无人物流车的可行驶区域划分方法,其特征在于:包括如下步骤:
5.步骤1、建立车道线识别模型和障碍物检测模型;
6.步骤2、利用车道线识别模型识别是否存在中心线或者边道线,若存在则进入步骤3;若不存在则计算路面宽度,判断路面宽度是否足够两车并行,若否则发出报警;若是则取路面中点,以障碍物为辅助,生成虚拟中心线或者边道线;
7.步骤3、障碍物检测模型进行检测是否存在凸出地面的障碍物,若存在,则返回步骤2中的路面宽度计算;若不存在,则计算车道线拟合点,对车道线进行拟合,然后进行车道线方程和多项式曲率计算;
8.步骤4:通过多项式曲率获取车道中心线方程,以此计算得到道路曲率半径,并把计算结果写入图像,然后进行可行驶区域的划分。
9.上述的用于无人物流车的可行驶区域划分方法,所述车道线识别模型的建立过程如下:
10.步骤1.1、用双目相机进行图像数据采集,对图像数据进行预处理;所述图像数据的预处理是采用加权平均灰度变换方法对图像灰度化处理,公式如下:
11.g
ray
(i,j)=0.299
×
r(i,j)+0.578
×
g(i,j)+0.114
×
b(i,j)
12.式中,r、g、b分别代表原图像中该点红、绿、蓝3个通道的数值;(i,j)表示像素;
13.并对光线较暗和光线较强的图像进行gamma矫正,gamma矫正对输入的图像灰度值进行非线性操作,使输出图像的灰度值呈指数的关系:
14.g
out
=ag
inγ
;
15.式中:g
out
表示输出图像,g
in
表示输入图像,a为0-1的常数;γ表示灰度均值;
16.当γ<1时,在低灰度值区域内,动态范围变大,对图像中比较集中的低照度区域范围做一个拉伸,使图像的对比度增强;当γ>1时,在高灰度值区域内,动态范围变大,对图像中比较集中的高照度区域范围做一个拉伸,使图像对比度增强,其数学表达式为:
[0017][0018]
步骤1.2、对数据集进行制作和标注,再构建yolov7模型进行预训练;所述的预训练是采用yolov7模型进行车道特征图像提取,过程是:设车道线图像像素点坐标为(x,y),检测区域的梯度方向即为该坐标最大变化率的方向,则像素点处的梯度为:
[0019][0020]
式中:g
x
为像素点处在水平方向的偏导数;gy为像素点处在垂直方向的偏导数;t为梯度阈值;
[0021]
当某点梯度g(x,y)大于阈值t且与其水平相隔距离l处的像素点g(x+l,y)的梯度值也大于阈值t,则此处为车道线边缘点,将这两点间的像素值全部置为255,不符合条件的像素点像素值置为0,获得车道特征图像。
[0022]
步骤1.3、对yolov7模型进行解耦头部,然后使用frelu函数作为激活函数,得到车道线识别模型;
[0023]
步骤1.4、将步骤1.2的数据集用于车道线识别模型的训练;
[0024]
步骤1.5、用通道注意力机制和空间注意力机制对车道线识别模型进行加强;
[0025]
步骤1.6、计算损失函数,若模型的置信度小于0.5,则返回步骤1.4继续训练,若模型的置信度大于0.5,则训练结束,获得训练后的车道线识别模型。
[0026]
前述的用于无人物流车的可行驶区域划分方法,步骤1.2中,对数据集进行制作之前先对数据集图像进行双边滤波去噪,公式如下:
[0027][0028]
式中:g(x,y)为滤波后图像,ωs(i,j)为空间域权值,ωr(i,j)为灰度域权值,ω
p
为归一化参数,i(i,j)为噪声图像,ω为像素(i,j)处的领域范围;其中:
[0029][0030]
ω
p
=∑
i,j∈ω
ωs(i,j)ωr(i,j)。
[0031]
前述的用于无人物流车的可行驶区域划分方法,步骤1.3中,所述frelu函数表示如下:
[0032]
y=max((x
s,i,j
,t(x
s,i,j
));
[0033]
其中:x
s,i,j
为第s通道(i,j)位置处激活函数的输入值,t(x
s,i,j
)为为一个空间上下文特征提取器,计算方式为:
[0034][0035]
式中:表示以x
s,i,j
为中心的参数池化窗口,表示该窗口参数。
[0036]
前述的用于无人物流车的可行驶区域划分方法,步骤1.6中,车道线识别模型的损失函数公式如下:
[0037][0038]
式中:α为权重系数,iou表示算预测检测框和真实检测框的相交占比;
[0039][0040]
式中:w
gt
为真实框的宽,h
gt
为真实框的高,w为预测框的宽,h为预测框的高。
[0041]
前述的用于无人物流车的可行驶区域划分方法,步骤2中,以障碍物为辅助,生成虚拟中心线或者边道线的过程是:获取点云数据,对点云数据进行分层和分割,过滤障碍物,再构建三维网格,判断平面法相邻与z轴之间角度的余弦值是否为0~0.1,若不是则该点云数据非道路边界点云数据,若是则为道路边界点云数据,然后对其进行去噪,获取完整的道路边界点云数据,最后对完整的道路边界点云数据进行排序,从而绘制得到虚拟中心线或者边道线;
[0042]
其中,利用三维网格建立点云数据与空间格网之间以及空间格网与空间格网之间的关系:
[0043]
首先读取点云数据,搜索到点云三维坐标x,y,z三个方向的最大值x
max
,y
max
,z
max
与最小值x
min
,y
min
,z
min
,
[0044]
其次,给出一个微小的量δ,
[0045]
防止点云的最值落在格网线上,不参与运算;
[0046]
以(x
max
+δ,y
max
+δ,z
max
+δ)为最大值;
[0047]
(x
min-δ,y
min-δ,z
min-δ)为最小值;
[0048]
在最值范围内绘制三维格网,设定三维格网的长、宽、高分别为x
grid
,y
grid
,z
grid
,格网x,y和z方向格网的个数分别为n
x
,ny和nz个,根据格网的长、宽、高求得各个空间格网的最大值x
g_max
,y
g_max
,z
g_max
与最小值x
g_min
,y
g_min
,z
g_min
;
[0049]
有
[0050][0051][0052]
所述点云数据的去噪是采用改进k-means聚类算法进行,其过程如下:
[0053]
1)观察点云,根据目标聚类个数n,选择一个合适的初始聚类个数n;
[0054]
2)从点云中随机选取一个点作为聚类中心,根据点云的密度和噪声点距离目标聚类中心的距离设置合适的阈值d;
[0055]
3)以该点为聚类中心,循环所有点,设聚类中心点的坐标为(x,y,z),某点的坐标为(xi,yi,zi),运用某点到该聚类中心点的距离方程为:
[0056][0057]
计算所有点到聚类中心点的距离,设置阈值,小于阈值的聚类到该中心,从点云中移除这些点;
[0058]
4)把步骤2)中选作聚类中心的点去除掉,把步骤3)中聚类进来的数据分别选做聚类中心;利用空间点之间的距离公式把阈值内的点聚类到一起.重复该过程,直到把所有符合阈值的点聚类在一起,聚类结束,再进行下一个聚类;
[0059]
5)重复步骤4)过程,根据初始聚类可以获得n类;
[0060]
6)初始聚类后的道路边线点云数据投影xoy面内,噪点是片状,而道路边线点云是条带状,对初始聚类出来的每一类建立一个包围盒,根据包围盒的高度阈值和长度阈值,其包围盒的高度在0.05~0.15m范围内,长度是格网长度的0.9~1倍,去除噪点,最终得到n类聚类结果。
[0061]
前述的用于无人物流车的可行驶区域划分方法,所述障碍物检测模型进行检测是否存在凸出地面的障碍物的过程是:由双目相机进行图片拍摄,然后再移除背景信息和路面信息的影响,且通过对障碍物区域视差图进行canny算法检测u-v视差图的边缘线段,利用hough变换设定线段检测的阈值,计算出障碍物与路面区域相交处的基点后,提取出u视差图中障碍物区域线段的宽度信息以及v视差图中线段的高度信息,准确定位目标障碍物的所在;接着根据得到的障碍物区域的定位信息,对视差图进一步截取障碍物所在区域的视差,采用区域生长法对选中区域的障碍物进行轮廓提取;最后将提取出轮廓的障碍物叠加canny算法检测出的图像边缘线段,然后根据u-v视差图的线段拟合结果建立障碍物的检测框,框选对应的障碍物,实现障碍物的检测;
[0062]
其中,所述移除背景信息和路面信息的影响是基于4方向gabor滤波器来计算路面区域的纹理主方向,4方向gabor滤波器定义为:
[0063][0064]
其中,
ω0=2π/λ为径向频率,倍频常数c=π/2,空间频率
[0065]
所述canny算法实现检测u-v视差图的边缘线段过程是:
[0066]
1)高斯滤波器去除噪点:
[0067][0068]
令g(x,y)为平滑后的图像,用二维高斯函数g(x,y,σ)对图像f(x,y)的平滑可表示为:g(x,y)=g(x,y,σ)*f(x,y);2)梯度值和方向的获取;
[0069]
通过二维高斯函数一阶偏微分方程对去除噪点的图像进行梯度幅值和方向的计算:
[0070][0071]
式中,k为常数,且式中,k为常数,且求得梯度的幅值和反向为:
[0072][0073]
式中,m[x,y]为图像边缘的强度信息,θ[x,y]为图像边缘所在的方向信息;
[0074]
3)非极大值抑制;
[0075]
对计算出来的梯度幅值进行非极大值抑制处理,将所有可能的方向量化为0
°
,135
°
,90
°
,45
°
这四个边缘方向,其中四个边缘方向对应着垂直边缘方向的梯度方向;
[0076]
4)双阈值算法确定边缘;
[0077]
在边缘像素点的确定过程中,通过设定阈值系数th和tl,二者的比率为2:1或3:1;将大于th的像素点标记为边缘点,小于tl的像素点不进行标记;对处于th和tl之间的像素点使用8连通区域确定,将8连通区域内有与tl阈值相同的像素点标记为边缘连接点,边缘连接点组成边缘线段。
[0078]
前述的用于无人物流车的可行驶区域划分方法,所述车道线方程和多项式曲率计算是通过给定数据点p(xi,yi),其中i=1,2,3,
…
,m,获得近似曲线
[0079]
将拟合多项式设置为:
[0080][0081]
其中a0,a1,a2,
…
,ak为多项式系数,使用偏差平方和作为损失函数,使与表示输入x和输出y的关系f(x)偏差最小:
[0082][0083]
来求得最优多项式系数a0,a1,a2,
…
,ak;
[0084]
然后以表示车道线拟合多项式各阶次项的系数,车道线方程用k
阶多项式表示为:
[0085][0086]
式中:a
k,j
表示推断出的第j条车道线的拟合多项式的第k阶次项系数;k=5。
[0087]
前述的用于无人物流车的可行驶区域划分方法,所述车道中心线方程的计算是通过透视变换获得逆变换矩阵,把绘制的左右车道线通过逆变换矩阵转换为原始图像空间,并将结果与原始图像合并,联合车道线方程公式与逆透视图像与实际道路横纵向比例关系系数公式,得到在车前方实际道路上车道中心线的方程为:
[0088][0089]kx
:纵坐标比例系数,ky:横坐标比例系数,a0,a1,a2表示曲线方程参数;
[0090]
曲率半径的计算公式如下:
[0091][0092]
式中:k1为曲率;
[0093]
由将实际道路车道中心线方程代入曲率半径计算公式:
[0094][0095]
以此获得车前方的道路曲率半径。
[0096]
前述的用于无人物流车的可行驶区域划分方法,所述可行驶区域的划分过程是将中心线输入到deeplabv3+模型中,用deeplabv3+模型输出特征头,然后以检测头来输出可行驶区域。
[0097]
与现有技术相比,本发明通过车道线识别模型可以准确的识别具有中心线和边道线的车道,而对于非正常结构的车道而言,本发明结合了障碍物检测模型进行非结构化的车道检测,从而可以实现无人物流车的车道规划,并且能对高出地面的障碍物进行检测,避免出现碰撞的问题,最后可以对可行驶区域进行划分,提升了无人物流车的智能化水平。
附图说明
[0098]
图1为本发明的流程示意图;
[0099]
图2为车道线识别模型建立流程示意图;
[0100]
图3为双目立体视觉成像原理;
[0101]
图4是解耦头部示意图;
[0102]
图5以障碍物为辅助,绘制边道线的流程图;
[0103]
图6是空间格网及点云存入格网示意图;
[0104]
图7是障碍物检测模型的检测流程示意图;
[0105]
图8是基于resnet50特征提取模块的deeplabv3+结构图;
[0106]
图9是aspp结构图;
[0107]
图10是检测头的结构图。
[0108]
附图标记
具体实施方式
[0109]
下面结合附图和实施例对本发明作进一步的说明,但并不作为对本发明限制的依据。
[0110]
实施例:一种用于无人物流车的可行驶区域划分方法,如图1所示,包括如下步骤:
[0111]
步骤1、建立车道线识别模型和障碍物检测模型;本步骤中,所述车道线识别模型的建立过程如下:
[0112]
步骤1.1、用双目相机进行图像数据采集,对图像数据进行预处理;如图3所示,双目摄像机模拟人的双眼,并依据视差原理获得真实环境中的三维信息。双目摄像机一般是2个摄像机从左右两个方向不同角度捕捉同一时刻的环境信息构成数字图像。将三维空间中的一目标点进行变换,可得出该点在像素坐标系中所对应的坐标p(xw,yw,zw),但是反过来已知一点图像像素坐标求取其世界坐标系中的三维坐标时,根据透射变换的原理会导致三维坐标中的深度信息无法准确地确定。因此,双目视觉模型能够更精准的确定目标,提高目标对象检测的准确率。
[0113]
本步骤中,考虑到仓库内部灯光环境对检测结果的影响,对所述图像数据进行预处理。
[0114]
首先采用加权平均灰度变换方法对图像灰度化处理,公式如下:
[0115]gray
(i,j)=0.299
×
r(i,j)+0.578
×
g(i,j)+0.114
×
b(i,j)式中,r、g、b分别代表原图像中该点红、绿、蓝3个通道的数值;(i,j)表示像素;
[0116]
当局部灰度值处在0≤f(x,y)<a和b≤f(x,y)≤255时,a=110,b=160该区域的图像为光线较暗和光线较强的图像,需要进行gamma矫正,并对处理后的图像进行局部对比度拉伸达到较好的效果;同理当局部灰度值处在a≤f(x,y)<b时,该区域的图像为正常光照图像,直接对该图像进行预处理即可。
[0117]
gamma矫正的作用是提高图像对光线较暗和曝光环境下进行图像增强的效果。在进gamma矫正时,对输入的图像灰度值进行非线性操作,使输出图像的灰度值呈指数的关系:
[0118]gout
=ag
in
γ;
[0119]
式中:g
out
表示输出图像,g
in
表示输入图像,a表示0-1的常数;γ表示灰度均值;
[0120]
当γ<1时,在低灰度值区域内,动态范围变大,对图像中比较集中的低照度区域范围做一个拉伸,使图像的对比度增强;当γ>1时,在高灰度值区域内,动态范围变大,对图像中比较集中的高照度区域范围做一个拉伸,使图像对比度增强,其数学表达式为:
[0121][0122]
该方法更能增强图像的对比度特征,使检测效果更佳。
[0123]
步骤1.2、对数据集进行制作和标注,再构建yolov7模型进行预训练;对数据集进行制作之前先对数据集图像进行双边滤波去噪,双边滤波是一种非线性滤波方法,在滤波
过程中既考虑了空域信息,又考虑到了灰度相似性,相比于均值滤波与中值滤波明显的模糊边缘,其能够在消除图像噪声的同时保存图像边缘特征。在双边滤波中,滤波后的图像像素依赖于对其邻域像素值得加权,公式如下:
[0124][0125]
式中:g(x,y)为滤波后图像,ωs(i,j)为空间域权值,ωr(i,j)为灰度域权值,ω
p
为归一化参数,i(i,j)为噪声图像,ω为像素(i,j)处的领域范围;其中:
[0126][0127]
ω
p
=∑
i,j∈ω
ωs(i,j)ωr(i,j)。
[0128]
数据集制作、标注步骤如下:
[0129]
(1)修改图片名称为车道线的文本。车道线的标注要根据实际图片中的仓库中的结构化/非结构化道路修改为图片的名称,并且图片的后缀保持不变,对数据集标注完成之后还要根据实际项目需要的格式修改数据集,按照使用python脚本程序将图片按照一定的比例分为训练集和测试集,在项目中新建data目录,并在data文件夹中分别新建train/text和test/text两个路径,其中train/text用来存放处理后的训练集图片,train中存放处理的train.pkl二进制文件,test/text中存放测试集图片,同样,test中存放测试集的test.pkl二进制文件。
[0130]
(2)生成pkl文件。pkl文件是存储二进制内容的文件格式,训练过程中网络从pkl文件中读取文本信息和对应的图片进行训练。分别将训练集和验证集中的图片名称按照次序依次存入新建的pkl文件中,命名为train.pkl和test.pkl,并把对应的图片名称存储为序号。
[0131]
然后对数据集进行阈值操作:
[0132]
(1)准备车道线数据集。各准备仓库中结构化和非结构化的车道图片若干张,其中车道的种类还应该包括各种不同路况的车道的数据。其中结构化道路车道命名为结构化车道+序号的方式,非结构化道路车道命名方式为非结构化车道+序号。
[0133]
(2)编写代码。处理后的数据通过程序计算不同阈值情况下的准确率,并保存每次修改阈值后计算得出的准确率,最后生成折线图。实现过程中判断车道线的置信度是否大于设置的阈值,高于阈值的车道线并被判断其命名为结构化道路的作为结构化车道,低于阈值并被判断命名方式中含有非结构化道路的同样作为正确识别,在这两个条件下计算号牌的准确率。
[0134]
(3)选择阈值。编写脚本统计在不同阈值情况下验证数据集的准确率,低于设定阈值的车道线作为非结构化道路车道线,否则为结构化道路车道线,测试出在最高准确率的情况下最合适的阈值。
[0135]
阈值操作方法是固定阈值操作,此方法基于一个灰度阈值将灰度图像转化为二值图像,此方法的关键在于选取阈值大小,其将图像中像素进行如下处理:
[0136]
[0137]
最后生成预训练权重:
[0138]
(1)分析权重结构。预训练权重的存储方式根据其训练方式可以分为cpu训练、单gpu训练和多gpu训练,其中cpu和单gpu的情况下保存的模型结构相同;根据存储的方式可以分为保存模型的网络结构和训练参数到权重文件,只保存训练参数到权重文件两种;根据存储的方式可以分为保存训练过程中训练的批次、训练参数、网络结构的中间结构的权重文件和只保存最终训练参数的权重文件两种方式;根据网络的结构可以通过python脚本打印出权重文件的网络结构,根据需求可以修改权重中需要修改的网络参数。
[0139]
(2)修改预训练权重的维度。修改网络中的参数会导致网络发生变化,因此,要修改预训练权重文件来适配当前网络,解决的方法有两种:剔除其中不合适的网络的节点训练参数;修改不适合训练的网络节点,将其节点进行填充,使用python读取权重中的节点名称和维度信息,修改权重文件中的第一层的参数维度和最后对应种类数的网络节点参数为修改后的种类数。保存修改后的权重文件为新的权重文件。
[0140]
处理好数据集,再构建yolov7模型进行预训练,所述的预训练是采用yolov7模型进行车道特征图像提取,过程是:
[0141]
设车道线图像像素点坐标为(x,y),检测区域的梯度方向即为该坐标最大变化率的方向,则像素点处的梯度为:
[0142][0143]
式中:g
x
为像素点处在水平方向的偏导数;gy为像素点处在垂直方向的偏导数;t为梯度阈值;
[0144]
当某点梯度g(x,y)大于阈值t且与其水平相隔距离l处的像素点g(x+l,y)的梯度值也大于阈值t,则此处为车道线边缘点,将这两点间的像素值全部置为255,不符合条件的像素点像素值置为0,获得车道特征图像。
[0145]
步骤1.3、对yolov7模型进行解耦头部,然后使用frelu函数作为激活函数,得到车道线识别模型;本步骤中,所述解耦头部如图4所示,解耦头部替代yolo头部后收敛速度提升。引入解耦头的步骤:1、修改common文件2、在yolo.py增加decoupled_detect代码3、在model函数中,修改build strides,anchors 4、在模型的yaml文件中,修改最后一层检测的头的结构。
[0146]
本步骤中,所述frelu函数表示如下:
[0147]
y=max((x
s,i,j
,t(x
s,i,j
));
[0148]
其中:x
s,i,j
为第s通道(i,j)位置处激活函数的输入值,t(x
s,i,j
)为为一个空间上下文特征提取器,计算方式为:
[0149][0150]
式中:表示以x
s,i,j
为中心的参数池化窗口,表示该窗口参数。
[0151]
步骤1.4、将步骤1.2的数据集用于车道线识别模型的训练,以获得预测框和类别,类别包括中线先和边界线(也称边道线)。
[0152]
步骤1.5、用通道注意力机制和空间注意力机制对车道线识别模型进行加强;
[0153]
本步骤中,通道注意力机制加强是首先将特征输入通道注意力机制模块;然后对
整个特征进行最大池化和平均池化,用来挤压特征,获得通道之间的全局信息;再通过多层感知器获取每个通道的权重;最后进行加权运算输出通道注意力信息。
[0154]
空间注意力机制加强对输入特征的各个通道进行最大池化和平均池化,生成两个代表不同信息的特征,然后通过感受野较大卷积核进行融合,再通过sigmoid激活函数生成权重,最后与原始特征进行叠加生成空间注意力信息。sigmoid激活函数公式如下:
[0155][0156]
步骤1.6、计算损失函数,若模型的置信度小于0.5,则返回步骤1.4继续训练,若模型的置信度大于0.5,则训练结束,获得训练后的车道线识别模型。本步骤中,所述车道线识别模型的损失函数公式如下:
[0157][0158]
式中:α为权重系数,iou表示算预测检测框和真实检测框的相交占比;
[0159][0160]
式中:w
gt
为真实框的宽,h
gt
为真实框的高,w为预测框的宽,h为预测框的高。
[0161]
步骤2、利用车道线识别模型识别是否存在中心线或者边道线,若存在则进入步骤3;若不存在则计算路面宽度,判断路面宽度是否足够两车并行,若否则发出报警;若是则取路面中点,以障碍物为辅助,生成虚拟中心线或者边道线;
[0162]
本步骤中,以障碍物为辅助,生成虚拟中心线或者边道线的过程如图5所示,首先获取点云数据,对点云数据进行分层和分割,过滤障碍物,再构建三维网格,判断平面法相邻与z轴之间角度的余弦值是否为0~0.1,若不是则该点云数据非道路边界点云数据,若是则为道路边界点云数据,然后兑取进行去噪,获取完整的道路边界点云数据,最后对完整的道路边界点云数据进行排序,从而绘制得到虚拟中心线或者边道线。
[0163]
其中,利用空间格网的最值绘制三维格网,通过一定的循环,绘制所有的三维格网;最后,根据点云数据的坐标值是否落在某个空间格网最值范围内,将落在该格网最值范围内的点云数据存储在该格网内,进而将所有的点云数据分别存入对应的立方体格网内,完成点云数据与空间格网以及空间格网与空间格网之间关系的建立,空间格网以及点云存入空间格网示意图如图6所示。具体过程是:
[0164]
首先读取点云数据,搜索到点云三维坐标x,y,z三个方向的最大值x
max
,y
max
,z
max
与最小值x
min
,y
min
,z
min
,
[0165]
其次,给出一个微小的量δ,
[0166]
防止点云的最值落在格网线上,不参与运算;
[0167]
以(x
max
+δ,y
max
+δ,z
max
+δ)为最大值;
[0168]
(x
min-δ,y
min-δ,z
min-δ)为最小值;
[0169]
在最值范围内绘制三维格网,设定三维格网的长、宽、高分别为x
grid
,y
grid
,z
grid
,格
网x,y和z方向格网的个数分别为n
x
,ny和nz个,根据格网的长、宽、高求得各个空间格网的最大值x
g_max
,y
g_max
,z
g_max
与最小值x
g_min
,y
g_min
,z
g_min
;
[0170]
有
[0171][0172][0173]
进一步地,本步骤中,所述点云数据的去噪是采用改进k-means聚类算法进行,其过程如下:1)观察点云,根据目标聚类个数n(该部分点云数据中,有几小类是道路边线的点云数据),选择一个合适的初始聚类个数n(n是该部分点云数据有几个离散的小类,包括道路边线和其它噪点);
[0174]
2)从点云中随机选取一个点作为聚类中心,根据点云的密度和噪声点距离目标聚类中心的距离设置合适的阈值d;
[0175]
3)以该点为聚类中心,循环所有点,设聚类中心点的坐标为(x,y,z),某点的坐标为(xi,yi,zi),运用某点到该聚类中心点的距离方程为:
[0176][0177]
计算所有点到聚类中心点的距离,设置阈值,小于阈值的聚类到该中心,从点云中移除这些点;
[0178]
4)把步骤2)中选作聚类中心的点去除掉,把步骤3)中聚类进来的数据分别选做聚类中心;利用空间点之间的距离公式把阈值内的点聚类到一起.重复该过程,直到把所有符合阈值的点聚类在一起,聚类结束,再进行下一个聚类;
[0179]
5)重复步骤4)过程,根据初始聚类可以获得n类;
[0180]
6)初始聚类后的道路边线点云数据投影xoy面内,噪点是片状,而道路边线点云是条带状,对初始聚类出来的每一类建立一个包围盒,根据包围盒的高度阈值和长度阈值,其包围盒的高度在0.05~0.15m范围内,长度是格网长度的0.9~1倍,去除噪点,最终得到n类聚类结果。该改进的算法可以有效地滤除点云中的噪点,降低算法的复杂度,通过动态聚类中心的方式提高算法的运行效率。
[0181]
再进一步地,本步骤中,道路边界点的排序是使用改进的八领域方法进行。传统的八邻域搜索方法需要边缘格网识别,如果边缘格网内有点云,需要按照其所在的位置不同,进行不同的邻域搜索。而改进的八邻域搜索方法是通过在x方向的最左边和最右边分别加一列格网,在y方向的最上边和最下边分别加一行格网,使存在点云的格网八个邻域都存在
格网,该方法不需要进行边缘格网的识别。
[0182]
步骤3、障碍物检测模型进行检测是否存在凸出地面的障碍物,若存在,则返回步骤2中的路面宽度计算;若不存在,则计算车道线拟合点,对车道线进行拟合,然后进行车道线方程和多项式曲率计算。
[0183]
本步骤中,如图7所示,所述障碍物检测模型进行检测是否存在凸出地面的障碍物的过程是:由双目相机进行图片拍摄,然后再移除背景信息和路面信息的影响,且通过对障碍物区域视差图进行canny算法检测u-v视差图的边缘线段,利用hough变换设定线段检测的阈值,计算出障碍物与路面区域相交处的基点后,提取出u视差图中障碍物区域线段的宽度信息以及v视差图中线段的高度信息,准确定位目标障碍物的所在;接着根据得到的障碍物区域的定位信息,对视差图进一步截取障碍物所在区域的视差,采用区域生长法对选中区域的障碍物进行轮廓提取;最后将提取出轮廓的障碍物叠加canny算法检测出的图像边缘线段,然后根据u-v视差图的线段拟合结果建立障碍物的检测框,框选对应的障碍物,实现障碍物的检测。
[0184]
其中,使用道路消失点检测算法对背景信息进行移除的,过程是基于4方向gabor滤波器来计算路面区域的纹理主方向。gabor滤波器的基本原理是通过可调节方向的高斯窗口函数对图像进行滤波操作,且较为准确地对图像进行局部的特征分析,实现图像纹理特征的提取。4方向gabor滤波器定义为
[0185][0186]
其中,其中,ω0=2π/λ为径向频率,倍频常数c=π/2,空间频率
[0187]
canny实现边缘检测可分为以下四步:
[0188]
1)高斯滤波器去除噪点;
[0189]
2)
[0190]
令g(x,y)为平滑后的图像,用二维高斯函数g(x,y,σ)对图像f(x,y)的平滑可表示为:
[0191]
h(x,y)=g(x,y,σ)*f(x,y);
[0192]
3)梯度值和方向的获取;
[0193]
通过二维高斯函数一阶偏微分方程对去除噪点的图像进行梯度幅值和方向的计算;
[0194][0195]
其中k为常数,且其中k为常数,且可以求得梯度的幅值和反向为:
[0196][0197]
其中m[x,y]为图像边缘的强度信息,θ[x,y]为图像边缘所在的方向信息。
[0198]
3)非极大值抑制;
[0199]
对计算出来的梯度幅值进行非极大值抑制处理,将所有可能的方向量化为0
°
,135
°
,90
°
,45
°
这四个边缘方向,其中四个边缘方向对应着垂直边缘方向的梯度方向。非极大值抑制即为沿着上述四种类型的梯度方向,比较3*3邻域内对应邻域值的大小。
[0200]
4)双阈值算法确定边缘;
[0201]
完成上述步骤后,图像内的强边缘已经在当前获取的边缘图像内。但是,一些虚边缘可能也在边缘图像内。这些虚边缘可能是真实图像产生的,也可能是由于噪声所产生的。
[0202]
在边缘像素点的确定过程中,通过设定阈值系数th和tl,二者的比率为2:1或3:1;将大于th的像素点标记为边缘点,小于tl的像素点不进行标记;对处于th和tl之间的像素点使用8连通区域确定,将8连通区域内有与tl阈值相同的像素点标记为边缘连接点。
[0203]
hough变换能够将图像中的直线检测可以转换为参数空间中的点估计,在参数空间中设置阈值对图像中的直线进行提取。在直线的表示方面用的规范式代替一般表达式,将参数空间变成(θ,p),0≤θ≤2π,则像素点在参数空间中对应一条三角函数曲线。采用canny算法检测u-v视差图图像边缘并利用hough变换对障碍物区域基点进行计算提取。
[0204]
根据计算障碍物区域基点的u-v视差图对提取出轮廓的障碍物构造检测框对目标障碍物进行标识,可通过v视差图确定障碍物的高度信息,高度距离由hough变换提取障碍物直线段所确定,构造检测框的高度,再通过霍夫变换对u视差图进行直线段拟合的结果确定障碍物的宽度信息,构造检测框的宽度,实现目标障碍物的检测。
[0205]
本步骤中,所述车道线方程和多项式曲率计算是通过给定数据点p(xi,yi),其中i=1,2,3,
…
,m,获得近似曲线
[0206]
将拟合多项式设置为:
[0207][0208]
其中a0,a1,a2,
…
,ak为多项式系数,使用偏差平方和作为损失函数,使与表示输入x和输出y的关系f(x)偏差最小:
[0209][0210]
来求得最优多项式系数a0,a1,a2,
…
,ak;
[0211]
然后以表示车道线拟合多项式各阶次项的系数,车道线方程用k阶多项式表示为:
[0212][0213]
式中:a
k,j
表示推断出的第j条车道线的拟合多项式的第k阶次项系数;k=5。
[0214]
步骤4:通过多项式曲率获取车道中心线方程,以此计算得到道路曲率半径,并把计算结果写入图像,然后进行可行驶区域的划分。
[0215]
本步骤中,所述车道中心线方程的计算是通过透视变换获得逆变换矩阵,把绘制的左右车道线通过逆变换矩阵转换为原始图像空间,并将结果与原始图像合并,联合车道线方程公式与逆透视图像与实际道路横纵向比例关系系数公式,得到在车前方实际道路上车道中心线的方程为:
[0216][0217]kx
:纵坐标比例系数,ky:横坐标比例系数,a0,a1,a2表示曲线方程参数;
[0218]
曲率半径的计算公式如下:
[0219][0220]
式中:k1为曲率;
[0221]
由将实际道路车道中心线方程代入曲率半径计算公式:
[0222][0223]
以此获得车前方的道路曲率半径,曲率半径的获取对车辆判断前方路况具有积极意义。同时能计算车道中心线方程,车道中心线方程即为道路方程,车道中心线方程的获取是本方法进行车道曲率计算的重要依据。
[0224]
所述可行驶区域的划分过程是将中心线输入到deeplabv3+模型中,用deeplabv3+模型输出特征头,然后以检测头来输出可行驶区域。本实施例中使用基于resnet50特征提取模块的deeplabv3+进行。如图8所示,deeplabv3+首先输入图片的尺寸是416*416*3,编码阶段使用基于可变形卷积设计的resnet50网络特征提取后,将最后一层输出通过aspp模块(aspp模块的结构如图9所示)并行计算得到多个不同尺度的特征图,沿通道方向对aspp网络输出的5个特征图通道合并操作,此时特征图尺寸是13*13*256。合并后的特征图并没有采取逐层上采样的方式,而是进行八倍上采样与低层特征通道合并操作,以恢复目标部分边界信息,最后经过3*3的卷积核卷积计算后四倍上采样得到最终的分割结果。
[0225]
具体的,检测头的结构如图10所示,csplayer模块将上一层中deeplabv3+的输出分成两条支路,一条支路通过一个1*1卷积块和一个3*3卷积块得到输出,与只有一个3*3卷积块的另一条支路进行concat通道拼接,这样得到的输出不为0,有效阻止了梯度消失或者梯度爆炸的发生。不同层将输出不同的特征图到检测头,csplayer模块中的3*3卷积块可扩大输出到检测的特征图的感受野,可有效增强检测头的检测性能。
[0226]
csplayer模块中的卷积块由dconv卷积(可变形卷积)、silu激活函数层(f(x)=-x
·
sigmoid(x))组成,dconv带来的参数量极少,大幅减轻了检测头的计算量,实现了检测头的轻量化。dconv可变形卷积实际是指标准卷积操作中采样位置增加了一个偏移量offset,这样卷积核就能在训练过程中扩展到很大的范围。可变形卷积推广了尺度、长宽比
和旋转的各种变换。
[0227]
综上所述,本发明通过车道线识别模型可以准确的识别具有中心线和边道线的车道,而对于非正常结构的车道而言,本发明结合了障碍物检测模型进行非结构化的车道检测,从而可以实现无人物流车的车道规划,并且能对高出地面的障碍物进行检测,避免出现碰撞的问题,提升了无人物流车的智能化水平。
技术特征:
1.一种用于无人物流车的可行驶区域划分方法,其特征在于:包括如下步骤:步骤1、建立车道线识别模型和障碍物检测模型;步骤2、利用车道线识别模型识别是否存在中心线或者边道线,若存在则进入步骤3;若不存在则计算路面宽度,判断路面宽度是否足够两车并行,若否则发出报警;若是则取路面中点,以障碍物为辅助,生成虚拟中心线或者边道线;步骤3、障碍物检测模型进行检测是否存在凸出地面的障碍物,若存在,则返回步骤2中的路面宽度计算;若不存在,则计算车道线拟合点,对车道线进行拟合,然后进行车道线方程和多项式曲率计算;步骤4:通过多项式曲率获取车道中心线方程,以此计算得到道路曲率半径,并把计算结果写入图像,然后进行可行驶区域的划分。2.根据权利要求1所述的用于无人物流车的可行驶区域划分方法,其特征在于:所述车道线识别模型的建立过程如下:步骤1.1、用双目相机进行图像数据采集,对图像数据进行预处理;所述图像数据的预处理是采用加权平均灰度变换方法对图像灰度化处理,公式如下:g
ray
(i,j)=0.299
×
r(i,j)+0.587
×
g(i,j)+0.114
×
b(i,j)式中,r、g、b分别代表原图像中该点红、绿、蓝3个通道的数值;(i,j)表示像素;并对光线较暗和光线较强的图像进行gamma矫正,gamma矫正对输入的图像灰度值进行非线性操作,使输出图像的灰度值呈指数的关系:g
out
=ag
inγ
;式中:g
out
表示输出图像,g
in
表示输入图像,a为0-1的常数;γ表示灰度均值;当γ<1时,在低灰度值区域内,动态范围变大,对图像中比较集中的低照度区域范围做一个拉伸,使图像的对比度增强;当γ>1时,在高灰度值区域内,动态范围变大,对图像中比较集中的高照度区域范围做一个拉伸,使图像对比度增强,其数学表达式为:步骤1.2、对数据集进行制作和标注,再构建yolov7模型进行预训练;所述的预训练是采用yolov7模型进行车道特征图像提取,过程是:设车道线图像像素点坐标为(x,y),检测区域的梯度方向即为该坐标最大变化率的方向,则像素点处的梯度为:式中:g
x
为像素点处在水平方向的偏导数;g
y
为像素点处在垂直方向的偏导数;t为梯度阈值;当某点梯度g(x,y)大于阈值t且与其水平相隔距离l处的像素点g(x+l,y)的梯度值也大于阈值t,则此处为车道线边缘点,将这两点间的像素值全部置为255,不符合条件的像素点像素值置为0,获得车道特征图像。步骤1.3、对yolov7模型进行解耦头部,然后使用frelu函数作为激活函数,得到车道线识别模型;
步骤1.4、将步骤1.2的数据集用于车道线识别模型的训练;步骤1.5、用通道注意力机制和空间注意力机制对车道线识别模型进行加强;步骤1.6、计算损失函数,若模型的置信度小于0.5,则返回步骤1.4继续训练,若模型的置信度大于0.5,则训练结束,获得训练后的车道线识别模型。3.根据权利要求2所述的用于无人物流车的可行驶区域划分方法,其特征在于:步骤1.2中,对数据集进行制作之前先对数据集图像进行双边滤波去噪,公式如下:式中:g(x,y)为滤波后图像,ω
s
(i,j)为空间域权值,ω
r
(i,j)为灰度域权值,ω
p
为归一化参数,i(i,j)为噪声图像,ω为像素(i,j)处的领域范围;其中:一化参数,i(i,j)为噪声图像,ω为像素(i,j)处的领域范围;其中:ω
p
=∑
i,j∈ω
ω
s
(i,j)ω
r
(i,j)。4.根据权利要求2所述的用于无人物流车的可行驶区域划分方法,其特征在于:步骤1.3中,所述frelu函数表示如下:y=max((x
s,i,j
,t(x
s,i,j
));其中:x
s,i,j
为第s通道(i,j)位置处激活函数的输入值,t(x
s,i,j
)为为一个空间上下文特征提取器,计算方式为:式中:表示以x
s,i,j
为中心的参数池化窗口,表示该窗口参数。5.根据权利要求2所述的用于无人物流车的可行驶区域划分方法,其特征在于:步骤1.6中,车道线识别模型的损失函数公式如下:式中:α为权重系数,iou表示算预测检测框和真实检测框的相交占比;式中:w
gt
为真实框的宽,h
gt
为真实框的高,w为预测框的宽,h为预测框的高。6.根据权利要1所述的用于无人物流车的可行驶区域划分方法,其特征在于:步骤2中,以障碍物为辅助,生成虚拟中心线或者边道线的过程是:获取点云数据,对点云数据进行分层和分割,过滤障碍物,再构建三维网格,判断平面法相邻与z轴之间角度的余弦值是否为0
~0.1,若不是则该点云数据非道路边界点云数据,若是则为道路边界点云数据,然后对其进行去噪,获取完整的道路边界点云数据,最后对完整的道路边界点云数据进行排序,从而绘制得到虚拟中心线或者边道线;其中,利用三维网格建立点云数据与空间格网之间以及空间格网与空间格网之间的关系:首先读取点云数据,搜索到点云三维坐标x,y,z三个方向的最大值x
max
,y
max
,z
max
与最小值x
min
,y
min
,z
min
;其次,给出一个微小的量δ,防止点云的最值落在格网线上,不参与运算;以(x
max
+δ,y
max
+δ,z
max
+δ)为最大值;(x
min-δ,y
min-δ,z
min-δ)为最小值;在最值范围内绘制三维格网,设定三维格网的长、宽、高分别为x
grid
,y
grid
,z
grid
,格网x,y和z方向格网的个数分别为n
x
,n
y
和n
z
个,根据格网的长、宽、高求得各个空间格网的最大值x
g_max
,y
g_max
,z
g_max
与最小值x
g_min
,y
g_min
,z
g_min
;有有有所述点云数据的去噪是采用改进k-means聚类算法进行,其过程如下:1)观察点云,根据目标聚类个数n,选择一个合适的初始聚类个数n;2)从点云中随机选取一个点作为聚类中心,根据点云的密度和噪声点距离目标聚类中心的距离设置合适的阈值d;3)以该点为聚类中心,循环所有点,设聚类中心点的坐标为(x,y,z),某点的坐标为(x
i
,y
i
,z
i
),运用某点到该聚类中心点的距离方程为:计算所有点到聚类中心点的距离,设置阈值,小于阈值的聚类到该中心,从点云中移除这些点;4)把步骤2)中选作聚类中心的点去除掉,把步骤3)中聚类进来的数据分别选做聚类中心;利用空间点之间的距离公式把阈值内的点聚类到一起.重复该过程,直到把所有符合阈值的点聚类在一起,聚类结束,再进行下一个聚类;5)重复步骤4)过程,根据初始聚类可以获得n类;
6)初始聚类后的道路边线点云数据投影xoy面内,噪点是片状,而道路边线点云是条带状,对初始聚类出来的每一类建立一个包围盒,根据包围盒的高度阈值和长度阈值,其包围盒的高度在0.05~0.15m范围内,长度是格网长度的0.9~1倍,去除噪点,最终得到n类聚类结果。7.根据权利要1所述的用于无人物流车的可行驶区域划分方法,其特征在于:所述障碍物检测模型进行检测是否存在凸出地面的障碍物的过程是:由双目相机进行图片拍摄,然后再移除背景信息和路面信息的影响,且通过对障碍物区域视差图进行canny算法检测u-v视差图的边缘线段,利用hough变换设定线段检测的阈值,计算出障碍物与路面区域相交处的基点后,提取出u视差图中障碍物区域线段的宽度信息以及v视差图中线段的高度信息,准确定位目标障碍物的所在;接着根据得到的障碍物区域的定位信息,对视差图进一步截取障碍物所在区域的视差,采用区域生长法对选中区域的障碍物进行轮廓提取;最后将提取出轮廓的障碍物叠加canny算法检测出的图像边缘线段,然后根据u-v视差图的线段拟合结果建立障碍物的检测框,框选对应的障碍物,实现障碍物的检测;其中,所述移除背景信息和路面信息的影响是基于4方向gabor滤波器来计算路面区域的纹理主方向,4方向gabor滤波器定义为:其中,其中,ω0=2π/λ为径向频率,倍频常数c=π/2,空间频率所述canny算法实现检测u-v视差图的边缘线段过程是:1)高斯滤波器去除噪点:令g(x,y)为平滑后的图像,用二维高斯函数g(x,y,σ)对图像f(x,y)的平滑可表示为:g(x,y)=g(x,y,σ)*f(x,y);2)梯度值和方向的获取;通过二维高斯函数一阶偏微分方程对去除噪点的图像进行梯度幅值和方向的计算:式中,k为常数,且式中,k为常数,且求得梯度的幅值和反向为:式中,m[x,y]为图像边缘的强度信息,θ[x,y]为图像边缘所在的方向信息;3)非极大值抑制;对计算出来的梯度幅值进行非极大值抑制处理,将所有可能的方向量化为0
°
,135
°
,
90
°
,45
°
这四个边缘方向,其中四个边缘方向对应着垂直边缘方向的梯度方向;4)双阈值算法确定边缘;在边缘像素点的确定过程中,通过设定阈值系数th和tl,二者的比率为2∶1或3∶1;将大于th的像素点标记为边缘点,小于tl的像素点不进行标记;对处于th和tl之间的像素点使用8连通区域确定,将8连通区域内有与tl阈值相同的像素点标记为边缘连接点,边缘连接点组成边缘线段。8.根据权利要1所述的用于无人物流车的可行驶区域划分方法,其特征在于:所述车道线方程和多项式曲率计算是通过给定数据点p(x
i
,y
i
),其中i=1,2,3,
…
,m,获得近似曲线将拟合多项式设置为:其中a0,a1,a2,
…
,a
k
为多项式系数,使用偏差平方和作为损失函数,使与表示输入x和输出y的关系f(x)偏差最小:来求得最优多项式系数a0,a1,a2,
…
,a
k
;然后以表示车道线拟合多项式各阶次项的系数,车道线方程用k阶多项式表示为:式中:a
k,j
表示推断出的第j条车道线的拟合多项式的第k阶次项系数;k=5。9.根据权利要8所述的用于无人物流车的可行驶区域划分方法,其特征在于:所述车道中心线方程的计算是通过透视变换获得逆变换矩阵,把绘制的左右车道线通过逆变换矩阵转换为原始图像空间,并将结果与原始图像合并,联合车道线方程公式与逆透视图像与实际道路横纵向比例关系系数公式,得到在车前方实际道路上车道中心线的方程为:k
x
:纵坐标比例系数,k
y
:横坐标比例系数,a0,a1,a2表示曲线方程参数;曲率半径的计算公式如下:式中:k1为曲率;由将实际道路车道中心线方程代入曲率半径计算公式:以此获得车前方的道路曲率半径。10.根据权利要求1所述的用于无人物流车的可行驶区域划分方法,其特征在于:所述
可行驶区域的划分过程是将中心线输入到deeplabv3+模型中,用deeplabv3+模型输出特征头,然后以检测头来输出可行驶区域。
技术总结
本发明公开了一种用于无人物流车的可行驶区域划分方法,建立车道线识别模型和障碍物检测模型;利用车道线识别模型识别是否存在中心线或者边道线,若存在则进入障碍物检测模型进行检测;若不存在则计算路面宽度,判断路面宽度是否足够两车并行,若否则发出报警;若是则取路面中点,以障碍物为辅助,生成虚拟中心线或者边道线;障碍物检测模型进行检测是否存在凸出地面的障碍物,若存在,则返回路面宽度计算;若不存在,则计算车道线拟合点,对车道线进行拟合,然后进行车道线方程和多项式曲率计算,获取可行驶区域。本发明可以实现无人物流车的车道规划,并且能对高出地面的障碍物进行检测,避免出现碰撞的问题,提升了无人物流车的智能化水平。的智能化水平。的智能化水平。
技术研发人员:李强 陈诚 周扬 吴金云
受保护的技术使用者:浙江科技学院
技术研发日:2023.04.26
技术公布日:2023/6/28
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:双油箱控制系统及方法与流程 下一篇:一种农产品运输用防撞装置的制作方法