论文解读SCNN 用于交通场景理解的空间CNN

Posted 一颗小树x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文解读SCNN 用于交通场景理解的空间CNN相关的知识,希望对你有一定的参考价值。

前言

Spatial CNN,这里的Spatial不是指Spatial Convolution,而是通过特殊设计的CNN架构传递空间信息,更有效地学习空间关系,简称SCNN;它提出了一种新的神经网络结构用于提取特征。

传统的网络结构是卷积层接收来自前一层的输入,应用卷积运算和激活函数,并将结果发送到下一层;该过程按顺序结构,一层一层传递下去。但SCNN是先对这部分输入特征进切片,再按照下、上、右、左四种顺序进行卷积。

比如:一个三维的特征,相当于一个立方体,先进行横切片,分别进下、上顺序进行卷积。再对得到特征,进行竖切片,分别进行右、左顺序进行卷积。

SCNN简介

SCNN将传统的深层逐层(layer-by-layer)卷积推广到特征映射中的逐片(slice-by-slice)卷积,从而实现层中之间的像素之间的消息传递。

SCNN对于长距离连续形状的目标、大型目标、以及有着极强空间关系但是外观线索不明显的目标,比如车道线、电线杆,具有很好的检测效果;它对遮挡的车道线的检测的结果明显好于传统CNN的方法。因为空间信息可以通过层间(特征图的行列)传播来加强。

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

开源代码(原版):https://github.com/XingangPan/SCNN

开源代码(Pytorch版):https://github.com/harryhan618/SCNN_Pytorch

一、网络结构

SCNN核心工作是提出了一种新的网络结构,如下图b部分所示;a部分是传统的CNN,它是顺序结构,一层一层传递下去。SCNN除了结构部分,在训练和测试流程上与其他方法没有大的区别。

a部分,传统CNN结构,卷积层接收来自前一层的输入,应用卷积运算和激活函数,并将结果发送到下一层;该过程按顺序完成,一层一层传递下去。

b部分,SCNN结构,先对这部分输入特征进切片;先进行横切片,分别进下、上顺序进行卷积。再对得到特征,进行竖切片,分别进行右、左顺序进行卷积。

四种顺序进行卷积,下、上、右、左,分别对应图中的"SCNN_D", "SCNN_U", "SCNNR", "SCNNL"。

SCNN应用在车道线检测中

切片部分用来提取特征的,只是网络中的一部分,其他卷积层、全连接层等仍然存在。作者所采用的方法也不是直接设计一个全新的网络,而是把这四个顺序卷积的部分嵌入到一个已有的网络模型中去。作者选用的网络是LargeFOV。新的网络如下图所示:

 (a)是训练的网络,(b)是用网络进行预测的流程,需要注意的是,(b)中右侧输出了四个数值,这四个数分别对应四条车道线的概率,0.99就是有车道线,0.02就是没有车道线,所以图中就显示了三条车道线,至于为啥是四条,这就属于作者设置的一个先验信息了,如果超过四条,最终也只会输出四条。当然,他既然这么做,就说明至少这个数据集里没有超过四条的。

二、计算效率

在SCNN之前,有许多尝试在深度网络找那个使用空间信息的工作。

  • 使用循环神经网络RNN按每行或每列传递信息,但每个像素点只能接到来自同一行或同一列的信息。
  • 使用长短期记忆网络LSTM的变体来探索语义分割中的上下文信息,但计算量较大。
  • 使用CNN和图模型,如马尔可夫随机场MRF,和条件随机场CRF结合,通过大卷积核来传递信息,计算量很大。

Dense MRF / CRF:每个像素直接从所有其他像素接收消息(大卷积核实现),可能具有很多冗余,如下图中a部分所示。

SCNN:消息传递是顺序传递,如下图中b部分所示。

顺序消息传递方案比传统的密集MRF / CRF具有更高的计算效率。

三、残差传递消息

SCNN使用残差进行信息传递,使训练更容易进行,并使用于多种神经网络。

四、灵活性

SCNN是灵活的,可以很容易地融入其他深度神经网络并进行端到端训练。

五、实验结果

SCNN应用于车道线检测的效果,与其他模型对比:

 具体对比数据:

 SCNN应用于语义分割的效果:

六、小结

SCNN在空间层面实现有效的信息传播。SCNN可以很容易地融入其他深度神经网络并进行端到端训练。它在交通场景理解中的两个任务进行评估:车道检测和语义分割。

七、参考文献

[1] https://zhuanlan.zhihu.com/p/79524785

[2] https://zhuanlan.zhihu.com/p/72201700

[3] https://www.cnblogs.com/xuanyuyt/p/12022040.html

[4] Spatial As Deep: Spatial CNN for Traffic Scene Understanding

[5] 开源代码(原版):https://github.com/XingangPan/SCNN

[6] 开源代码(Pytorch版):https://github.com/harryhan618/SCNN_Pytorch

本文只提供参考学习,谢谢。

CULane 数据集

CULane 是一个大规模的具有挑战性的数据集,用于交通车道检测的学术研究。它由安装在北京不同司机驾驶的六辆不同车辆上的摄像头收集。收集了超过 55 小时的视频并提取了 133,235 帧。数据示例如上所示。我们将数据集分为训练集 88880、验证集 9675 和测试集 34680。测试集分为普通和8个挑战类别,分别对应上面的9个例子。

数据集地址:https://xingangpan.github.io/projects/CULane.html

提供方:香港中文大学多媒体实验室

以上是关于论文解读SCNN 用于交通场景理解的空间CNN的主要内容,如果未能解决你的问题,请参考以下文章

R-CNN 论文解读及个人理解(转)

深度学习R-CNN 论文解读及个人理解

Paper ReadingR-CNN(V5)论文解读

论文解读Faster R-CNN 实时目标检测

论文解读Faster R-CNN 实时目标检测

【CV论文笔记】Mask R-CNN之RoIAlign理解