介绍一篇今年的车道线检测论文 SUPER: A Novel Lane Detection System,作者来自密歇根大学和SF Motors 公司。
车道线检测算法的研究最早可追溯至上世纪八十年代,由于车道线本身具有多样性(环岛、交叉线),以及外界光照、车辆遮挡的影响,现有的车道线检测算法仍很难实际用于高安全性的自动驾驶任务中。
单靠提取车道线特征解决车道线检测问题很难应对外界光照、遮挡等不利因素。联合低层次特征(车道线、车辆)和高层次特征(街道场景理解)去进行车道线检测,即网络先学习到街道布局信息、道路几何信息,然后关注车道线信息,也许会大大提高算法的准确率。
很多基于CNN的车道线检测算法的输出都是像素级别的分割信息,将车道线从场景中分离出来,然后使用后处理算法进行视角变换和车道线拟合。然而大多数方法都忽视了车道线的一个重要特性:绝大多数情况下,车道线都是互相平行的。利用这一重要性质,再使用几何知识处理坡道情况,使用简单的优化方法即可得到精确的车道线多项式。
若要使网络联合车道线特征和场景语义信息,需要同时有语义标注和车道线标注的数据集,然而几乎没有这样的开源数据集可供使用。使用如下三个数据集近30000张图片联合训练网络:
在车道线拟合之前,需要将分割得到的车道线上的点映射到鸟瞰图中(BEV,birds' eye view),如下图所示
理想情况下,同一车道线上的点,使用公式进行计算,得到的值几乎相同。
以上的推理在平坦的路面上是合理的,但是若路面有起伏,且仍按照平坦路面进行建模,从输入图像转换为鸟瞰图后,在输入图像中平行的车道线在鸟瞰图中并不平行。因此有必要对有坡度的场景进行补偿。
根据逆透视变换(Inverse Perspective Mapping,IPM)的原理,若输入图像上的点(u, v)对应于世界坐标点(x,y,z),则有:
在工程实现时,作者使用了Nelder-Mead simplex 算法优化损失函数,具体可参考论文《Proper initialization is crucial for the Nelder-Mead simplex search》。
在实际应用中,车道线检测算法的输入是一串连续的图片,因此前一帧图片得到的车道线表达式的系数,可以作为拟合后一帧车道线的初始参数。
作者使用Cityscape、Vistas、Apollo三个数据集进行训练,在Tusimple、Caltech上测试,在Intel Xeon W-2155CPU和Titian Xp GPU上能跑到11FPS。需要特别指出的是,训练和测试时用的不是同一个数据集,而且训练时同时使用了多个数据集进行训练,这也是本文的特色之一。
在Tusimple数据集上的测试结果如下:
上表中的“sc”表示使用了坡度补偿,“sq”表示在当前帧做车道线拟合时使用上一帧的拟合结果作为初始值。可以看到虽然算法没有使用Tusimple数据集做过训练,但仍然取得了不错的效果。
在Caltech数据集上的测试结果如下:可以看到在Caltech数据集上,本文提出的方法取得了很好的结果。
针对车道线检测的场景,设计了跨异构数据集训练的卷积神经网络,用于车道线分割。
在车道线拟合时,充分利用了车道线平行这一先验信息,并给出了拟合时的损失函数和优化方法。
在对车道线拟合时,不仅仅考虑平坦道路场景,还对坡道场景做了补偿,提高拟合精度。
END
备注:车道线
车道线检测交流群
车道线检测、智能交通等技术,
若已为CV君其他账号好友请直接私信。
微信号:aicvml
QQ群:805388940
微博知乎:@我爱计算机视觉
投稿:amos@52cv.net
网站:www.52cv.net
在看,让更多人看到