赞
踩
本文是一篇2018年IEEE IV会议上的端到端车道线检测的文章,宣称可以适应变化的车道环境,并且速度可以达到50FPS(感觉聚类时间没加进去)。
文章链接:《Towards End-to-End Lane Detection an Instance Segmentation Approach》
核心思想:
采用实例分割的方式得到每条车道线的像素点集,通过学习出路面的透视投影矩阵,将前视图转换到鸟瞰图视角,拟合每条车道线的曲线方程,最后逆变换回原视图。
框架结构:
本文包括两个模型:LaneNet和H-Net。LaneNet模型先对车道线做了二值分割,然后聚类得到任意数量的车道线实例;H-Net模型用于生成透视变换矩阵将前视图转换到鸟瞰图,然后做车道线拟合,最后再逆变换回前视图。
实现细节:
Lanenet网络包含两个子任务,即二值分割任务和实例分割任务,如下图所示。二值分割任务是一个两类别(车道/背景)的语义分割;实例分割任务使用基于one-shot的方法做距离度量学习,输出一个车道线像素点距离,基于归属同一车道的像素点距离近,不同车道线像素点距离远的基本思想,利用meanshift聚类得到各条车道线。
H-Net网络负责像素点坐标转换预测,将图像输入到H-Net,它输出对应的鸟瞰图变换矩阵,来替代传统做法。完成鸟瞰图变换之后,使用最小二乘法拟合多项式,从而完成车道线检测。(如果直接在原始图像画面拟合曲线,那么必须使用高阶多项式才能够应付曲线车道。所以针对这个问题的一个常用解决方法就是将图片转成鸟瞰图视图,这样车道之间是彼此平行的,曲线的车道就可以通过2阶或者3阶的多项式进行拟合)
要点分析:
1. 语义分割任务采用Encoder-Decoder结构的ENet模型,包含五个阶段:阶段1,2,3属于Encoder,阶段4,5属于Decoder。Lanenet的语义分割任务和实例分割任务共享阶段一和 阶段二,并将阶段三和后面的Decoder层作为各自的分支进行训练;其中,语义分割分支的输出是单通道的图像,实例分割分支的输出是N通道的图像,N为embedding vector 的维度。
2. 实例分割任务通过为每个像素初始化一个 embedding 向量。embedding相比于onehot编码而言,用更少的特征维数来表示特征。训练得到的embedding vector用于cluster,即可提取出每个车道线的实例,能检测不限条数的车道线。
3. 传统的车道线拟合方式是将图片投影到鸟瞰图中,然后使用三次多项式进行拟合,在这个过程中转换矩阵只被计算一次,所有的图片使用的是相同的转换矩阵,这会导致坡度变化下的误差。为了解决这个问题,H-Net网络通过学习的方式预测透视变换矩阵的参数,其输出是一个 六维的向量。
曲线拟合对同属一条车道线的所有像素点进行重新建模,即通过坐标 y 去重新预测坐标 x 的过程,将同一个实例的点通过变换矩阵H转换后使用最小二乘法拟合,如下图所示:
4. 在创建分割标签的时候,遇到车辆遮挡、虚线、磨损线时,选择用实线将同一个实例连起来标,并对没有的地方进行预测。本文语义分割任务采用交叉熵损失函数并用bounded inverse class weight加权来调节车道线与背景类别不平衡的问题,其中,p 为对应类别在总体样本中出现的概率,c 是超参数(ENet论文中是1.02);
实例分割任务的损失函数由var loss使vector向mean vector Uc靠近从而降低类内距离和dist loss使cluster center彼此远离从而增大类间距离两项组成,其中C是车道线数量,Nc 是属于同一条车道线的像素点数量,Uc 是车道线的均值向量,Xi 是像素向量:
H-Net任务的损失函数采用最小二乘法,根据拟合曲线调整点的坐标,反映射回原坐标后,通过求转换坐标前后的MSE损失来训练参数:
实验结果:
评估方式主要采用分割的精准度和召回率以及算法耗时,如下图所示:
思考与展望:
Demo测试:
测试中,待添加
欢迎关注小编公众号,最新文章同步更新。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。