自动驾驶TPM技术杂谈 ———— 可行驶区域

介绍

 可行驶区域检测主要是为了自动驾驶提供路径规划辅助。在实际应用过程中,可行驶区域检测只要能结合高精度地图实现道路路径规划和障碍物躲避,也不一定需要提取出完整的路面可行驶区域。因此,可行驶区域检测可以实现整个路面的检测,也可以只提取出部分道路信息。

基于传统计算机视觉的方法

基于直接特征的可行驶区域检测

基于颜色的可行驶区域检测

 对于结构化或半结构化的路面,其颜色特征是非常明显的,如柏油路面,颜色均匀。在常用的RGB颜色空间,利用颜色特征分离路面和非路面相对而言较为简单。传统的基于颜色的可行驶区域检测方法还有基于高斯模型分离出背景路面和前景物体,这种方法在路面区域内车辆较少时前景与背景之间分割效果好。当前景物体多时,颜色分布范围太广,前景和背景分割成两个区域就比较难了。除此自外,根据颜色特征来提取路面的基本区域时,光照不变性方法使用最为广泛,该方法可以消除光照不均匀和遮挡产生的阴影问题。

基于纹理的可行驶区域检测

 道路路面的连续性决定路面的纹理能够基本保持一致。即便路面存在微小差异,这种一致性还是相当明显。利用这个特点,可以利用纹理特征进行可行驶区域的检测。纹理提取的最基本的方法时使用Gabor滤波器。Gabor特征对于边缘信息敏感,能够较好的提取边缘的方向。Gabor滤波器具有受光照影响较小和尺度不变性。同时,车辆行驶过程中留下的挤压和痕迹都有沿着道路方向的纹理特征,Gabor也可以很好的提取这些特征的方向。这些方向也能表达基本的路面区域特性。

基于边缘的可行驶区域检测

 对于结构化或半结构化的路面,是存在明显的道路边缘分界。提取这些道路边缘分界,可以分割出道路路面。常用的边缘检测算子有Sobel、Prewitt算子。使用算子提取边缘的核心思想是将一个待检测的像素与周围的像素关联起来,通过设定的算子的水平、竖直方向的权重,计算待检测像素的左右、上下的像素差值的和,判断待检测的像素水平与竖直的像素差异性,判断该点是否为边缘点。

基于间接特征的可行驶区域检测

 这里引入一个名词 —— 灭点。在透视变换中,视场中的平行线都会相交于一点,这个点就是灭点。标准的路面边缘存在平行直线,平行直线在图像中的交点在灭点附近。通过提取多对平行直线的交点,求取这些交点的中心位置,就可以近似的估计出灭点。对于非结构化路面,使用Gabor提取的方向进行统计估计出灭点。求出灭点后,可以使用灭点约束消除一些干扰,提取道路边缘直线。对于标准的路面,直行的路面边缘平行度高,灭点距离道路的边缘直线距离更近。对于非结构化的路面,提取到灭点后,可以使用灭点来找大概的路面边缘,快速提取一个三角形的路面可行使区域。

基于深度学习的方法

语义分割

 语义分割,就是将一幅图像根据其含义将其分成很多区域,每个区域代表着不同的类别。严格来讲,语义分割是一种像素级的分类任务,即对图像中的每一像素点给出一个分类结果,最终可输出一张稠密的预测图。这种预测极大程度上保留了原始图像的边缘信息和语义信息,有助于无人驾驶对场景的理解。
 利用神经网络进行可行驶区域检测的方法中,有一种patch-wise的方法。该方法中,以每个像素点为中心,选取固定大小的一小块区域(称为一个patch),作为神经网络的输入来预测该中心点的类别。该方法的一个重要参数就是patch的大小:patch选取太大会使计算负担加重,太小则无法得到足够的语义信息。这种方法受patch大小的影响,网络无法得到全局信息,导致最终的分割精度不高。并且每一个像素都要通过一遍网络,导致存储和计算量都很大。全卷积神经网络(Full Convolution Network,FCN)进行可行区域检测,输入变为整体图像,输出为整张图像中像素点的分类情况。

基于FCN的可行驶区域分割

 受深度学习的启发,基于CNN的分类器开始应用于语义分割任务。早期的方法利用隐式的滑动窗口的CNN完成语义分割。目前,全卷积网络采用端到端训练方法建立深度模型,完成语义分割任务。传统的CNN是将传统的特征提取过程和分类合并在一起,一般在卷积层后有全连接层,最后一个全连接层当作分类器,输出一维向量,对应可能的输出。在FCN中,用1×1的卷积代替卷积神经网络中的全连接层,其和CNN的对比如下图。
在这里插入图片描述
 在上图卷积化过程中,FCN将卷积6和卷积7分别使用两个1×1的卷积来代替,最后会生成一个7×7的热度图,大小为输入图像的1/32(假设原图大小为224,下采样5次)。这个7×7大小的热度图可以理解成输入图像的一个粗略分割图像。因此,将热度图上采样32倍可以得到和原图一样大小的分割图像。如热度图所示,虽然特征图富含语义信息,但是丢失了物体的边缘和轮廓信息。这些在分类或回归问题中不重要的底层信息,在语义分割中却显示十分重要。
 FCN中上采样使用的是反卷积的方式,为了保证上采样的优化效果,使用双线插值对其初始化。FCN可以设计为三种不同精度的网络,分别为FCN-32s、FCN-16s、FCN-8s。其中32、16、8分别代表着最后预测图上采样的倍数。因此,FCN-32s、FCN-16s、FCN-8s的精度是递增的。
   FCN-32s在最后卷积7输出层直接上采样32倍,最为简单,但是效果不好。
   FCN-16s是将上采样分为两步,先将卷积7层的输出上采样2倍,得到2×卷积7,然后将池化4层输出的特征通过一个卷积层,得到与2×卷积7一样大小的结果,其次将这两个结果加起来得到最后的总特征图,最后再上采样16倍;
   FCN-8s整体来看与FCN-16s相似,FCN-8s是将卷积7的结果上采样4倍,将池化4的结果上采样2倍,与池化3的结果相加,最后上采样8倍。
在这里插入图片描述
 从实际的情况来看,从FCN-32s到FCN-8s,各种评测指标或者可视化的视觉效果都是在稳步上升。由此可以认为融合了更多层的特征对语义分割任务是有帮助的。
在这里插入图片描述
 Kittiseg以编码器-解码器架构来完成。编码器由VGG网络的卷积层和池化层组成。提取的特征随后被分割任务的解码器使用,这些解码器实时产生它们的输出。分割解码器遵循FCN架构。给定编码器,将VGG架构中已有的全连接层转化为1×1的卷积层,以产生39×12大小的低分辨率的分割图像。其后是三个转置的卷积层进行上采样。跳转层用于从较低层提取高分辨率特。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小趴菜_自动驾驶搬砖人

谢谢大爷赏饭吃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值