• 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

  • 相关阅读:
    使用MyBatis生成插件
    关联源码及日志
    下载依赖
    框架简介及基本使用
    注解的本质 及 反射读取属性值
    元注解
    广告系统学习笔记(一)
    Nginx学习笔记(三)
    Nginx学习笔记(二)
    Nginx学习笔记(一)
  • 原文地址:https://www.cnblogs.com/ziyuzhu-edward/p/13639494.html
Copyright © 2020-2023  润新知