ECCV2020 Ultra Fast Structure-aware Deep Lane Detection论文解读

论文解读Ultra Fast Structure-aware Deep Lane Detection

最近阅读了ECCV2020一篇车道线检测的论文, 看完了源代码, 写下这篇博客, 希望能对其他学习的同学有所帮助。

1. Intro

车道线检测有很久远的历史, 在之前的工作中主要有以下两个流派:

比较有代表性的工作可点击下面的链接查看

对于任何一个流派, 在目前的自动驾驶车道线检测中, 都需要面临两个问题:

  1. computational cost

    自动驾驶的车辆上往往有多个摄像头, 如果同时对每个车辆的摄像头进行道路线进行识别的话, 需要耗费大量的计算资源, 因此需要计算复杂度更低的车道线检测方法。

  2. no-visual-clue

    在很多道路上, 由于车辆拥堵, 车道线被车挡住了, 需要通过车的位置和环境的语义信息去猜测。 在这种情况下, 没有视觉信息(车道的颜色, 形状)去引导车道线的识别, 造成了很大的困难。 下面这张图就是很好的例子。

    image-20200903153938512

为了解决以上两个问题, 作者提出了基于row achor的网络, 让网络在不同的行中选择属于车道线的列, 减少了传统语义分割pixel level prediction的复杂度, 同时使用global feature来增加网络的感受野, 提升在有车辆遮挡关系下的网络推理能力。

论文的贡献有以下几点:

  1. 提出了很有效的办法来解决fast speed和no visual cue的问题 Global Feature, Row Anchor
  2. 提出了结构化损失函数structural loss来对道路的形状进行约束 Structural Loss
  3. 在CULane数据集上取得了SOTA, 可达到300fps的识别速度。

2. Method

2.1 符号定义

论文里首先定义了一些符号, 如下图所示

image-20200903163346322

作者首先把图像降采样到800x288, 然后定义了row anchor, 也就是作者从图片里里事先选好的一些行。

比如在tumsimple这个数据集里, 作者选了这些行, 作为车道线可能的起始行。

image-20200904175308611

在这些符号里P代表的是某一行, 某一列里采样的像素属于某一条车道的概率

比如下图里的 Pij是一个向量, 向量的长度是w+1, 代表了第j行(row anchor)里的每个grid属于第i条车道的概率

我们可以发现向量的长度是w+1而不是w, 因为有可能这一行里所有的grid都不属于第i条车道, 这个时候需要多出一个grid来代表不存在, 此时向量前w个grid都是0, 第w+1个元素为1

image-20200909151335341

根据以上的描述, 作者对于车道线检测的优化目标是如下的classification loss, 其中LCE代表的是交叉熵损失函数

image-20200909152710279

作者认为这样对问题的表述能解决两个问题:

  1. Fast speed

传统的语义分割的预测目标维度为HxWx(C + 1), 但是作者的方法的维度是Cxhx(w + 1)

h比H小恨到, w比W小很多,总体计算复杂度是传统分割的1%

  1. No visual-clue

作者用resnet提取了全局特征, 全连接层使用了全局特征, 因此作者这样的方法能使用环境信息来对车道线的位置进行推断。

2.2 损失函数

总体来看, loss分为三部分

image-20200909153716033

  • 上文所述的classification cross entropy loss
  • structural loss
  • segmentation loss

其中structural loss分为similarity loss和shape loss两部分image-20200909153928644

其中similarity loss如下, 作者希望相邻的两个row anchor的预测概率接近

image-20200909153920008

shape loss的推导如下

首先是第j行, 第i个车道的位置, 选择预测概率最大的作为预测值

image-20200909154117113

但是由于argmax不可导, 作者换了一种表示方式

image-20200909154221206

image-20200909154232885

对location求二阶差分得到下面的loss

image-20200909154334656

3.3 总体结构

最后, 网络的总体结构如下图

image-20200909154407647

蓝线上的网络做语义分割, 得到segmentation loss, 下面的网络进行预测, 得到structural loss和classication loss

3. Experiments

作者分别在CULane和Tusimple上实验

对于tusimple, 准确度的定义如下

image-20200909155102610

Cclip指的是预测正确的道路点数, Sclip是所有的道路点数。

对于CULane用F1-measure来度量, 因为CULane的每条车道都是一条30pixel的线, 因此TP代表的是IoU>0.5的预测, FP代表的是IoU<0.5的预测, TN代表的是没有这条车道且预测没有这条车道, FN代表的是有这条车道但是被预测为没有这条车道

image-20200909155712608

Tusimple结果如下

image-20200909160444841

CULane结果如下

image-20200909160512145

4. 代码研读

TODO:
288x800

Adam

cosine decay

原文地址:https://www.cnblogs.com/ziyuzhu-edward/p/13639494.html