论文题目:Robust Lane Detection via Expanded Self Attention
链接地址:https://arxiv.org/abs/2102.07037
文章核心想要解决的是车道线遮挡、缺失、模糊等情况下的识别精度问题。主要通过一个自注意力模块,增强网络对于这部分车道线的关注程度,从而提升效果。
1. 概述
1.1 问题定义
这里的 Lane Detection,检测的目标是抽象意义上的车道分隔线,更关注全局的几何特征;
而不是路面上印刷的 Lane Mark,如果目标是 Lane Mark,则不存在遮挡的问题,能看到什么就识别什么,目标非常明确,且更关注局部特征。
至于为什么把识别目标设定为 Lane 而非 Lane Mark,我想很重要的一个原因是,像素级的 Lane Mark 标注成本远高于用折线段标注的 Lane。目前可用的公开集,也大部分都是 Lane 的形式。
1.2 问题分析
相比于其他更一般化的待识别对象,车道线有很多明显的特点:
- 细长的外观形态
- 很强的透视关系
- 不同目标之间有明显的相互约束
这些都指向了一个结论,Lane Detection 非常依赖全局信息(global contextual information)。
说到增强全局信息,有以下几个思路:
增大每一个输出像素的感受野(尽量覆盖到全图尺度),而增大感受野的方法,比如:
- 增加卷积层数,卷积核大小(很影响效率)
- 使用池化层(近期的网络设计,很多都通过Conv层的Stride设置来实现降采样,很少用Pooling)
- 使用空洞卷积
做更充分的多尺度特征融合,以FPN、PANet、BiFPN这些方法为主。
加入直接利用全局信息的模块,如:
- 通用型的:Non-local block(Non-local neural networks)
- 专为车道线场景设计的:SCNN(Spatial As Deep: Spatial CNN for Traffic Scene Understanding)和RESA(RESA: Recurrent Feature-Shift Aggregator for Lane Detection)
摒弃CNN的套路,考虑从Transformer/DETR这一路线来解决 Lane Detection, 而问题的关键可能在于如何定义要识别的目标。可能的路线包括但不限于:
- 直接回归方程参数(与相机内外参强绑定)
- 将车道线打散成小的线段,检测线段(相对折中的方案,与DETR有可比性)
- 像素级分割(后处理更复杂)
1.3 本文方法
本文中增强全局信息的方法为,给网络增加一个 Expanded Self Attention (ESA) 模块。这个 ESA 模块利用车道线预测结果的 Confidence, 来指示车道线的清晰程度。
这个模块不需要对车道线被遮挡部分进行额外的标注,因此称之为 Self Attention。
2. 具体方法
2.1 ESA模块
2.1.1 模块结构
原文关于 ESA 的结构和解释如下:
一个简单的理解,分为 HESA 和 VESA,分别对应水平和垂直方向,输出特征尺度分别为C*H*1
和C*1*W
,并统一扩展成C*H*W
,称之为 ESA matrix。
ESA matrix 作为一个注意力图,与主干网络输出的特征图进行点乘( element-wise product),得到注意力加权后的特征图。
原文中提到 ESA 为一个不影响网络推理速度的方法,因此该模块应该只存在于训练过程中。在执行推理预测的使用环节是不需要的,它的影响已经在训练环节中作用到了车道线检测结果的输出中。
2.1.2 模块输出
对于 ESA 的输出,作者也给出了一个示例:
可以看到,当线比较清晰时,ESA 的输出值较高(基本在0.5以上);而车道线被遮挡的部分,对应的 ESA 的输出值比较低(大致在0~0.25之间)。而不存在车道线的部分(天空),输出为0。
2.2 整体模型
2.2.1 模型结果
原文关于网络模型的结构和解释如下:
2.2.2 输出形式
一个简单的理解,模型为典型的 Encoder-Decoder 结构,输出有三个分支:
Segment Branch:输出车道线检测的分割结果
Existence Branch:输出每一条车道线是否存在的二分类结果
ESA Branch:输出每一条线在水平或者垂直方向上的Confidence,生成 ESA matrix。
2.2.3 Loss函数
**ESA matrix ** 分别与 Segment Branch 输出的特征图,以及作为 Ground-Truth 的特征图,进行点乘,生成加权后的特征图(weighted probability map / weighted gt map)。
对加权后的 Probability-map 和 GT-map 计算 ESA loss,再叠加常规的 Segmentation loss 和 Existence loss。
ESA loss 形式如下,包括两项:
- 第一项为对两个特征图使用标准的 MSE-loss。
- 第二项是一个正则项,主要含义是使得 ESA 的输出均值趋向于 GT-map 均值的一个百分比。根据原文所述,如果不加这个正则项,则 ESA 的输出永远是0(因为加权权重为0,则输出为0,loss也就为0,是最小的)。
2.3 推理效果
原文作者对比了几种典型的 Lane Detection 方法。从给出的例子来看,对于车道线模糊不清的场景,确实效果有所提升。
具体的量化对比可以看原文。
3. 问题和思考
3.1 可借鉴处
对于本文提出的方法,我觉得思路上可以借鉴的地方为:
常规的路况下,其实各种已有的车道线检测网络效果都已经做得比较接近,实际使用中的差别主要体现在各种 Corner Case 上, 而车道线被遮挡/模糊不清,可能是最主要得解决的场景。
在模型容量受限的情况下,应该让模型的识别能力更多关注到这些比较难处理的场景和部分,自然而然的想法就是引入注意力机制。
而 Self Attention 作为一种不需要额外监督信息的 End-to-End 方法,理论上很适合应用在这个场景。
3.2 疑惑之处
截至目前,原作者还没有发布源码,只能从文章的描述中去推测一些实现细节。
有一个很关键的点,我还没有想通,也没有在原文中找到解答。
根据原文所述,ESA module 输出的是车道线识别的 Confidence,即越确定的地方,输出越高,这一点也可以从文中 Figure 4 得到印证。
将这个输出作为注意力通道,对提取的特征图进行加权,直觉上感觉应该是加强了网络对于车道线清晰部分的注意力,而非加强了被遮挡区域的注意力。结合文中 Figure 5 的解释,画面中部车道线清晰的地方,得到的 MSE loss 低;而画面下部车道线模糊的地方,得到的 MSE loss 高。
那么,随着训练收敛程度的增加,是否会产生这样的情况: ESA 的输出对于车道线清晰的部分,响应越来越强烈,导致 ESA loss 越来越关注车道线清晰的部分,车道线模糊的部分更加没有得到充分的关注和训练。
我的一种猜测是:
是否在加权过程中,实际上对 ESA 的输出进行了取反,即 Confidence 越低的地方,加权的权重越高,从而让模型更加关注车道线模糊的地方。
但这里又存在一个问题,即画面上部天空的位置,是不存在车道线的,ESA 输出理论上为0,这样的话,加权的权重最大,网络又会关注到天空中不存在车道线的位置。
可能是我读得不够仔细,没看到这个关键点,也可能是我对 Self Attention 这种机制的理解有误。也许只能等作者放出源码后,看看实际的实现方式是怎样的。