车道线检测:几何约束联合车道分割和车道边界检测

2020-10-15 22:18:01·  来源:知乎@任乾  
 
本文分享了一篇关于车道线检测的论文,其主要创新点在于把车道线检测和车道检测放在一个任务里执行,而且由于车道线即是车道的边界,即二者之间具有明确的几何联
本文分享了一篇关于车道线检测的论文,其主要创新点在于把车道线检测和车道检测放在一个任务里执行,而且由于车道线即是车道的边界,即二者之间具有明确的几何联系,因此设计网络的时候如果能够把这种几何关系考虑进去,理论上就会有精度上的提升。
论文名称:Geometric Constrained Joint Lane Segmentation and Lane Boundary Detection
 
概述
本文的主要创新点在于把车道线检测和车道检测放在一个任务里执行,而且由于车道线即是车道的边界,即二者之间具有明确的几何联系,因此设计网络的时候如果能够把这种几何关系考虑进去,理论上就会有精度上的提升。本文的主要工作也是基于这种思想实现的。
 
大致实现的流程是,先通过一个共用的编码器提取特征,然后车道线检测和车道检测各对应一个解码器,分别标记车道线和车道对应的像素,在此之外,两个解码器的输出会各自再次通过一个编码器输入到对方的解码器中,形成一种交叉结构,这种交叉就是让上面提到的几何约束起作用的方法。
 
实现方法
先来看一下整体的网络结构,再对各部分分别介绍。
1)共享编码器
首先要问为什么要使用共享编码器,第一反应是可以减少网络参数,其实不仅如此,还有提高精度的作用,作者在稳重对这一点也给了分析。
为了分别在单个任务学习框架中通过车道分割和车道边界检测的编码器来阐明激活区域,我们使用热图来可视化每个激活图。如图所示,通过车道分割强调具有相似纹理的车道,这引起了车道检测的模糊问题。此外,一些背景区域被激活。相反,背景中的边缘引起车道边界检测的更严重的异常值问题。提出了一种共享编码器,以大大减少模糊问题和异常值,因为在共享编码器的训练期间已经强调了对两个任务的性能改进至关重要的特征,故可以获得更清晰的车道提取。
2)链路间编码器
也就是上面所说的网络中交叉结构。此处同样要问为什么要使用链路间编码器?
共享编码器网络非常注重对整体性能增强至关重要的特征。但是,一个任务的某些重要特征可能会在其他任务中显得不那么重要而被其他任务所抑制。例如,车道区域分割非常强调细粒度纹理特征,以实现精确的像素标签。相反,车道边界检测更喜欢边缘性特征。链路间编码器网络用于在两个任务之间传输互补信息,可以相互改善两个解码器网络中的特征。
 
训练细节
共享编码器网络由具有VGG结构的ImageNet初始化。首先,训练单个车道分割子网络。然后,转向车道区域分割和边界检测的子网络,这是在没有链路编码器网络结构的情况下训练的。最后,对多任务学习框架进行了全面的再训练,增加了链接间编码器网络。将全零张量连接到共享编码器的输出,以便解码器的输入特征维度在迭代训练过程中保持相同。整体框架使用批量正则化,批量大小为3。为避免过度拟合,采用dropout层,速率为0.2。使用Adam优化器并预先训练车道分段和车道边界检测子网,学习率为  。对于多任务框架训练过程,学习率设置为  直到收敛。
 
实验结果
作者在KITTI数据集上和其他网络做了对比,结果如下表所示
从表中可以看出,可以认为是state-of-art了。
 
最后放一张效果图:
总结与思考
 
这篇文章的核心思路就是让一个是多任务网络的两个子网络之间互相交换信息,以辅助对方达到更好的效果。说的更白一点,就是车道识别的网络没有边界的概念,导致区域识别不精确,而车道线识别的网络对边界太敏感,容易识别出一些错误的边界。那如果是这样的话,可不可以把两个任务合并成一个任务,训练的时候输入的是区域加边界,它同时包含了两个信息,而且是在同一个网络中,也就不存在信息交换的需要了。
分享到:
 
网站首页  |  在线会议  |  合作模式  |  企业发布信息  |  我们的受众  |  关于我们  |  联络我们  |  法律声明  |