论文:Spatial As Deep: Spatial CNN for Traffic Scene Understanding

代码:https://github.com/XingangPan/SCNN

参考:

数据集:CULane

Overview

一般的 CNNs 通常是通过堆叠卷积层来实现的。然而这种方式不能有效的获取各行各列像素检的空间关系。而这种空间关系对于类似车道线检测这种具有“形状先验强但是外观一致性若”的语义目标来说是很重要的。

在这篇论文中,作者提出了一种名为 SCNN(Spatial CNN) 的网络结构,它将常规的 layer-by-layer convolutions 换成了 to slice-byslice convolutions,这使得信息可以跨行和跨列传递。这种 SCNN 特别适用于连续形状结构或者大型的目标,这类目标空间关系强但外观线索少。

作者在车道线检测数据集上和实例分割数据集上进行了实验。实验结果表明了,SCNN 可以显著提高系统的性能。本文同时获得了 TuSimple Benchmark Lane Detection Challenge 的第一名,with an accuracy of 96.53%.

如图中,车道线是一种 long continuous shape and might be occluded 的目标,人类可以很容易通过上下文信息来填充被遮挡部分,但一般的 CNNs 不行。

In a layer-by-layer CNN, a convolution layer receives input from the former layer, applies convolution operation and nonlinear activation, and sends result to the next layer. This process is done sequentially. Similarly, SCNN views rows or columns of feature maps as layers and applies convolution, nonlinear activation, and sum operations sequentially, which forms a deep neural network. In this way information could be propagated between neurons in the same layer.

CULane

作者还提供了 CULane 数据集,在这之前的一些数据集,例如 Tusimple(6408 imgs),场景简单且对于磨损的车道线没有进行标注,而这种车道线人肉眼是很容易被推断补齐的。

To collect data, we mounted cameras on six different vehicles driven by different drivers and recorded videos during driving in Beijing on different days. More than 55 hours of videos were collected and 133,235 frames were extracted, which is more than 20 times of TuSimple Dataset. We have divided the dataset into 88880 for training set, 9675 for validation set, and 34680 for test set. These images were undistorted using tools in (Scaramuzza, Martinelli, and Siegwart 2006) and have a resolution of 1640 x 590

CULane 数据集对于遮挡和磨损的部分进行了估计,如上图2、4;为了让算法能够识别出栅栏,只对栅栏一侧进行标注,如上图1。CULane 只标注了最需要关注的 4 条车道线。

SCNN

以 SCNN_D 为例,假定经过一系列卷积操作后, feature map size 为 $C$ x $H$ x $W$, 从 $H$ 维度出发,将feature map 切成 $H$ slices,然后第一个 slice 经过一个 $1$ x $w$ x $C$ 的卷积、非线性操作后加到下一个 slice 上(一般这个 $w$ 是个较大尺度的卷积核,作者实验证明 $w=9$ 结果最理想)。这个操作继续往下进行,直到最后一个 slice 也被更新了。图中的标记符 D, U, R, L 分别表示 SCNN that is downward, upward, rightward, and leftward 四个方向进行上述操作。

作者提到,同常规卷积相比 SCNN 有三个优点:

  • Computational efficiency. 这是相比于 MRF/CRF来说的。

  • Message as residual.
  • Flexibility. Usually, the top hidden layer contains information that is both rich and of high semantics,thus is an ideal place to apply SCNN

训练测试相关

In both tasks, we train the models using standard SGD with batch size 12, base learning rate 0.01, momentum 0.9, and weight decay 0.0001. The learning rate policy is ”poly” with power and iteration number set to 0.9 and 60K respectively.

As shown in Fig.5 (b), for each lane marking whose existence value is larger than 0.5, we search the corresponding probmap every 20 rows for the position with the highest response. These positions are then connected by cubic splines, which are the final predictions.

During training, the line width of the targets is set to 16 pixels, and the input and target images are rescaled to 800x288. Considering the imbalanced label between background and lane markings, the loss of background is multiplied by 0.4.

评价指标

作者利用 intersection over union (IoU) 和阈值(0.3/0.5)来判断一条车道线是否被检测出来。

\begin{equation}
\label{a}
\begin{split}
& Precision = \frac{TP}{TP+FP} \\
& Recall= \frac{TP}{TP+FN}\\
& F-measure = (1+\beta^2) \frac{Precision*Recall}{\beta^2*Precision + Recall}\\
& F-measure = \frac{2} {\frac{1}{Precision} + \frac{1}{Recall}}, if \beta =1
\end{split}
\end{equation}

Ablation Study

作者从 6 个角度证明了 SCNN 有多牛逼:

  1. Effectiveness of multidirectional SCNN:同简单添加常规卷积层相比 SCNN 更牛逼
  2. Effects of kernel width w:w 大小等于9 时最理想

  3. Spatial CNN on different positions:SCNN 结构作用在最后一个隐含层上比作用在输出层上更理想

  4. Effectiveness of sequential propagation:顺序执行(一个切片更新后再去更新下一个切片)比平行更新效果好很多,这说明 a pixel does not merely affected by nearby pixels, but do receive information from further positions.
  5. Comparison with state-of-the-art methods: 这里的 baseline 就是上面网络(a) DeepLab.


  6. Computational efficiency over other methods:这个,看下面表情。。。

作者还从 Semantic Segmentation on Cityscapes 角度做了实验,这里就不累述了

SCNN for Tusimple

。。。

深度学习笔记(十四)车道线检测 SCNN的更多相关文章

  1. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  2. UFLDL深度学习笔记 (四)用于分类的深度网络

    UFLDL深度学习笔记 (四)用于分类的深度网络 1. 主要思路 本文要讨论的"UFLDL 建立分类用深度网络"基本原理基于前2节的softmax回归和 无监督特征学习,区别在于使 ...

  3. (C/C++学习笔记) 十四. 动态分配

    十四. 动态分配 ● C语言实现动态数组 C语言实现动态数组,克服静态数组大小固定的缺陷 C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量.一旦定义了一个数组,系统将为它分配一个 ...

  4. SCNN车道线检测--(SCNN)Spatial As Deep: Spatial CNN for Traffic Scene Understanding(论文解读)

    Spatial As Deep: Spatial CNN for Traffic Scene Understanding 收录:AAAI2018 (AAAI Conference on Artific ...

  5. 【转】angular学习笔记(十四)-$watch(1)

    本篇主要介绍$watch的基本概念: $watch是所有控制器的$scope中内置的方法: $scope.$watch(watchObj,watchCallback,ifDeep) watchObj: ...

  6. angular学习笔记(十四)-$watch(1)

    本篇主要介绍$watch的基本概念: $watch是所有控制器的$scope中内置的方法: $scope.$watch(watchObj,watchCallback,ifDeep) watchObj: ...

  7. 深度学习笔记(四)VGG14

    Very Deep Convolutional Networks for Large-Scale Image Recognition 1. 主要贡献 本文探究了参数总数基本不变的情况下,CNN随着层数 ...

  8. python 学习笔记十四 jQuery案例详解(进阶篇)

    1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  9. SharpGL学习笔记(十四) 材质:十二个材质球

    材质颜色 OpenGL用材料对光的红.绿.蓝三原色的反射率来近似定义材料的颜色.象光源一样,材料颜色也分成环境.漫反射和镜面反射成分,它们决定了材料对环境光.漫反射光和镜面反射光的反射程度.在进行光照 ...

随机推荐

  1. Jmeter入门(一)干货吐槽

    前言:性能测试的基础是功能测试.性能测试的核心是业务场景,而这个业务场景是从功能测试的场景测试中提取出来的. 所以一个软件的测试顺序是:功能(接口)→性能N(接口)→自动化(接口) 接口测试则分布在每 ...

  2. 国内有哪些好的JAVA社区

    转载自 https://www.zhihu.com/question/29836842#answer-13737722 并发编程网 - ifeve.com 强烈推荐 ImportNew - 专注Jav ...

  3. 进阶Java编程(11)ClassLoader类加载器【待完成】

    1,ClassLoader类加载器简介 在Java里面提供一个系统的环境变量:ClassPath,这个属性的作用主要是在JVM进程启动的时候进行类加载路径的定义,在JVM里面可以根据类加载器而后进行指 ...

  4. Web应用性能分析工具—HAR文件

    Web应用性能分析工具—HAR文件 来源 https://raynorli.com/2018/06/11/web-performance-analysis-har-file/ 客户经常有的一个问题就是 ...

  5. vim之快捷键

    Vim 编辑器是一个基于命令行的工具,是传奇编辑器 vi 的增强版.尽管图形界面的富文本编辑有很多,但是熟悉 Vim 对于每一位 Linux 的使用者都能有所帮助——无论你是经验丰富的系统管理员,还是 ...

  6. element-ui Cascader 级联选择器 点击label选中

    通过修改label的样式解决: 注意:el-cascader-panel 是直接挂载在body上的,所以需要全局设置 .el-cascader-panel .el-radio{ width: 100% ...

  7. Oracle笔记(八) 复杂查询及总结

    一.复杂查询 1. 列出至少有一个员工的所有部门编号.名称,并统计出这些部门的平均工资.最低工资.最高工资. 1.确定所需要的数据表: emp表:可以查询出员工的数量: dept表:部门名称: emp ...

  8. 使用 Eclipse 构建的时候会出现 run as 中没有 maven package 选项

    注:该方法来自我学习时别人分享的出现问题的解决方法,并没有亲自测试,仅供参考 是因为建的是普通 java 工程,需要把它转换成 maven project. 1.右键工程--maven--Disabl ...

  9. gulp connect.static is not a function

    npm install --save serve-static var serveStatic = require('serve-static');

  10. 浅入深出Vue:文章编辑

    登录与注册功能都已经实现,现在是时候来开发文章编辑功能了. 这里咱们就使用 markdown 作为编辑语言吧,简洁通用.那么我们就需要找一下 markdown 的编辑器组件了,而且还要支持 vue噢. ...