深度学习笔记(十四)车道线检测 SCNN
论文: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 有多牛逼:
- Effectiveness of multidirectional SCNN:同简单添加常规卷积层相比 SCNN 更牛逼

- Effects of kernel width w:w 大小等于9 时最理想

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

- Effectiveness of sequential propagation:顺序执行(一个切片更新后再去更新下一个切片)比平行更新效果好很多,这说明 a pixel does not merely affected by nearby pixels, but do receive information from further positions.

- Comparison with state-of-the-art methods: 这里的 baseline 就是上面网络(a) DeepLab.


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

作者还从 Semantic Segmentation on Cityscapes 角度做了实验,这里就不累述了
SCNN for Tusimple
。。。
深度学习笔记(十四)车道线检测 SCNN的更多相关文章
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- UFLDL深度学习笔记 (四)用于分类的深度网络
UFLDL深度学习笔记 (四)用于分类的深度网络 1. 主要思路 本文要讨论的"UFLDL 建立分类用深度网络"基本原理基于前2节的softmax回归和 无监督特征学习,区别在于使 ...
- (C/C++学习笔记) 十四. 动态分配
十四. 动态分配 ● C语言实现动态数组 C语言实现动态数组,克服静态数组大小固定的缺陷 C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量.一旦定义了一个数组,系统将为它分配一个 ...
- 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 ...
- 【转】angular学习笔记(十四)-$watch(1)
本篇主要介绍$watch的基本概念: $watch是所有控制器的$scope中内置的方法: $scope.$watch(watchObj,watchCallback,ifDeep) watchObj: ...
- angular学习笔记(十四)-$watch(1)
本篇主要介绍$watch的基本概念: $watch是所有控制器的$scope中内置的方法: $scope.$watch(watchObj,watchCallback,ifDeep) watchObj: ...
- 深度学习笔记(四)VGG14
Very Deep Convolutional Networks for Large-Scale Image Recognition 1. 主要贡献 本文探究了参数总数基本不变的情况下,CNN随着层数 ...
- python 学习笔记十四 jQuery案例详解(进阶篇)
1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- SharpGL学习笔记(十四) 材质:十二个材质球
材质颜色 OpenGL用材料对光的红.绿.蓝三原色的反射率来近似定义材料的颜色.象光源一样,材料颜色也分成环境.漫反射和镜面反射成分,它们决定了材料对环境光.漫反射光和镜面反射光的反射程度.在进行光照 ...
随机推荐
- Vasya and Magic Matrix CodeForces - 1042E (概率dp)
大意:给定n*m矩阵, 初始位置(r,c), 每一步随机移动到权值小于当前点的位置, 得分为移动距离的平方, 求得分期望. 直接暴力dp的话复杂度是O(n^4), 把距离平方拆开化简一下, 可以O(n ...
- 关于MySQL的索引的几件小事
零.索引简介 1. 索引是什么 ①MySQL官方对索引的定义是:索引(Index)是帮助MySQL高效获取数据的数据结构. ②可以简单的理解为"排好序的快速查找数据结构". ③除了 ...
- 始终让footer在底部
1.footer保持在页面底部 需求: 我们希望footer能在窗口最底端,但是由于页面内容太少,无法将内容区域撑开,从而在 footer 下面会留下一大块空白 第一种方法:采用 flexbox布局模 ...
- C# 知识点笔记:IEnumerable<>的使用,利用反射动态调用方法
IEnumerable<T>的使用 创建一个IEnumerable对象 List<string> fruits = new List<string> { " ...
- centos7搭建docker并部署lnmp (转)
1.首先呢先更新yum源 yum -y update 2.1.安装docker存储库 yum install -y yum-utils \ device-mapper-persistent-dat ...
- Hacklab WebIDE在线调试ESP32笔记
目录 1.什么是Hacklab WebIDE 1.1 优势 1.2 趋势 2. 使用方法 2.1 功能介绍 2.2 编译第一个程序 2.3 搭建esp32的开发环境 2.4 建立开发板与云平台的连接 ...
- kbmMW 5.09测试报告(1)-Scheduler
这个版本除了增加新的SmartBinding功能,同时提供了大量的功能更新以及bug修正.其中,SmartBinding的介绍,xalion已经第一时间写了初识kbmmw 中的smartbind功能, ...
- Servlet登录小案例
需求:登录功能 登录页面输入用户名和密码, 到数据库进行验证 ,如果成功跳转到success.html页面,失败跳转到error.html页面数据库 mysql,数据表 t_user表[表中的字段 : ...
- Linux下周期性查看GPU状态
Linux下周期性查看GPU状态 NVIDIA自带了nvidia-smi命令来查看GPU的使用情况 了解一下watch命令 $ whatis watch watch (1) - execute a p ...
- centos7安装BitCoin客户端
一.安装依赖环境 [root@localhost src]# yum install autoconf automake libtool libdb-devel boost-devel libeven ...