论文阅读《Towards End-to-End Lane Detection: an Instance Segmentation Approach》
最近在做车道线检测的问题,我们的思路是先分割再聚类,即需要把每条车道线(不同实例)检测出来。
Abstract:提出一个end-to-end的车道线检测算法,可以解决车道线数目变化(pixel embedding)以及车道视角变化(a learned perspective transformation)的问题。
1、Introduction:针对之前算法不能解决以下问题:a. predifined,fixed number of lanes, b. lane changes。本文设计一个多任务网络分支,主要是车道线分割分支和车道线嵌入分支,可以进行end-to-end的训练。车道分割分支具有两个输出类别,即背景或车道,而车道嵌入分支进一步将分段的车道像素分解成不同的车道实例(instance)。通过将车道检测问题分解为上述两个任务,我们可以充分利用车道分割分支的功能,而不必为不同的车道分配不同的类别。
针对之前采用固定透视变换转换到“bird-eye”图再进行车道线拟合,本文提出训练一个网络训练来得到其变换系数,可以对多种道路变化鲁棒。
总的来说贡献点有两个:(1)分支的多任务体系结构,车道分割分支输出密集的每像素车道,而车道嵌入分支进一步将分段的车道像素分解成不同的车道实例。(2)给定输入图像的网络估计透视变换的参数,透视变换允许车道拟合对路面变化具有鲁棒性。
2、Method:将车道线检测看做是实例分割问题,每条车道线的像素被分到不同的车道线实例中。
第一步先通过binary segmentation和lane segmentation(Lane-Net)并通过clustering获得每条车道线的像素属于相应的哪条车道;
第二步训练H-Net网络为了获得一条拟合曲线,获得对应场景的透视变换关系,可以针对不同的场景。
在binary segmentation阶段,由于车道线和背景类别高度不均衡,使用有界逆类加权(bounded inverse class weighting)。
在instance segmentation阶段,使用聚类损失函数,使得每条车道线像素属于同一条车道时距离很小,而不属于同一条车道距离很大。即通过两个loss函数:其一是var loss,使得属于同一条车道线的像素靠近;其二是dist loss,使得不同车道线像素远离。
最后在H-Net阶段,针对之前转换到鸟瞰图所用的透视变换是固定的,本文学习一个H-Net网络来进行车道线像素点拟合。H-Net输入是图像,label是groundtruth的像素点坐标,采用一般的loss函数,来回归像素点坐标来学习透视变换系数。
3、Results:这是本文end-to-end的车道线检测结果
还没开源,等大佬开源了再尝试一下吧~
论文链接:https://arxiv.org/abs/1802.05591
github链接:https://github.com/MaybeShewill-CV/lanenet-lane-detection