使用深度学习来理解道路场景

2018 年 8 月 14 日 AI研习社

本文为AI研习社编译的技术博客,原标题 Road scene understanding using Deep Learning,作者为 Bogdan Djukic。

翻译 | 王祎    校对 | 陶玉龙     整理 |余杭


将语义分割的最终输出应用到道路识别场景中


  场景理解

语义分割是深度学习的方法之一,通过语义分割,我们可以对图片中的每一个像素赋予含义,即将像素划分到一个预先设定的类中。从上边的 GIF 图可以看出,我们在语义切分的过程中将像素分为两类(分别是道路和非道路),其中我们将识别为道路的部分标上了颜色。

通过语义分割的方法,我们可以根据特定的需求来将场景进行切分。通过这一点,汽车可以识别出当前场景下哪一块是可行驶区域,这一点对无人驾驶汽车来说尤为重要。


  工作原理

语义分割的方法之一就是使用全卷积网络(FCN),一篇来自于伯克利大学的论文很好地阐释了其原理和架构。我们接下来的实现就会基于这篇论文来展开。

传统的卷积网络是由卷积层和几个全连接层组合而成的。这类架构对于分类问题来说很有用(诸如:这是一条路吗?),但是对于需要在图片中定位道路这种问题(诸如:路在哪里?),我们就需要一个新的网络来维护这些特殊信息。这就是 FCN 产生的由来,也向人们传达了语义分割最先进的成果。


  如何构建 FCN

要构建 FCN,有以下三个要点:

  1. 将全连接层都替换为1x1卷积层

  2. 通过颠倒卷积层的顺序引入上采样

  3. 添加跳跃连接

接下来让我们详细地看看应该如何实现上述步骤。

我们的FCN架构包含两个部分:编码器和解码器

FCN 架构

对于编码器的构建,我们利用已在 ImageNet 数据集上预训练的 VGG16 模型进行编码,我们将 VGG16 模型上的全连接层全部用卷积来替代。编码器将图片中的特征抽取出来,并且把它应用在解码器中。

构建完编码器后,下一步就是构建解码器,解码器是通过转置卷积层,对编码器末层进行上采样来实现的。卷积转置本质上来说就是反向卷积

FCN架构是由预训练模型、全连接层替换和卷积转置构成的架构

在最后,我们会在某些特定的层之间添加跳跃层,其中这些特定层需要能够允许网络使用不同的像素大小。跳跃层在降低信息流失的同时也保证了网络可以很好地纵观整个图片。由于传统的卷积网络往往会聚焦于图片中的某一部分,因此添加跳跃层能够很好地提升切分效果。

FCN 中的跳跃连接

由于跳跃层的添加可能会极大地影响到模型的大小,因此添加的时候要谨慎一点。


  最终成果

利用 FCN 进行道路理解被作为 Udacity Self Driving nano degree program 项目的一部分而得以实现。其中我使用 Python 和 TensorFlow 构建并训练了模型。我的模型训练是在 NVIDIA 1080Ti 上进行的,训练 30 遍花了不到 1 个小时的时间。输出如下图:

  结论

相关代码可以参见我的 GitHub 主页:

bdjukic/CarND-Semantic-Segmentation
Contribute to CarND-Semantic-Segmentation development by creating an account on GitHub.github.com

原文链接:

https://towardsdatascience.com/road-scene-understating-using-deep-learning-c3610f6b1c4


点击文末【阅读原文】即可观看更多精彩内容:

在树莓派上实现人脸识别 

CV 届的金鸡百花奖:盘点我心中的 CVPR 2018 创意 TOP10

FAIR 最新视觉论文集锦:FPN,RetinaNet,Mask 和 Mask-X RCNN(含代码实现)


等你来译:

我是如何在 Python 内使用深度学习实现 Iphone X 的 FaceID的

用深度学习技术,让你的眼睛可以控制电脑

针对 3D 计算机视觉的简介


想知道关于计算机视觉更多知识?

欢迎点击“阅读原文”

或者移步 AI 研习社社区~

登录查看更多
3

相关内容

【干货书】高级应用深度学习,294页pdf
专知会员服务
148+阅读 · 2020年6月20日
【斯坦福大学博士论文】自监督场景表示学习, 97页pdf
专知会员服务
92+阅读 · 2020年6月19日
卷积神经网络的概述论文:分析、应用和展望,21页pdf
专知会员服务
89+阅读 · 2020年4月7日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【电子书】让 PM 全面理解深度学习 65页PDF免费下载
专知会员服务
16+阅读 · 2019年10月30日
深度学习算法与架构回顾
专知会员服务
77+阅读 · 2019年10月20日
深入探究深度卷积语义分割网络和 Deeplab_V3
AI研习社
6+阅读 · 2019年4月13日
DL | 语义分割综述
机器学习算法与Python学习
58+阅读 · 2019年3月13日
深度学习在自动驾驶感知领域的应用
AI100
11+阅读 · 2019年3月6日
深度学习与计算机视觉任务应用综述
深度学习与NLP
49+阅读 · 2018年12月18日
语义分割和转置卷积
AI研习社
10+阅读 · 2018年6月22日
深度学习中的「卷积层」如何深入理解?
深度学习世界
6+阅读 · 2017年11月30日
深度学习(可视化部分)-使用keras识别猫咪
北京思腾合力科技有限公司
10+阅读 · 2017年11月30日
语义分割中的深度学习方法全解:从FCN、SegNet到DeepLab
炼数成金订阅号
26+阅读 · 2017年7月10日
图像识别 | 道路识别的自动驾驶算法基本原理
沈浩老师
6+阅读 · 2017年5月12日
Arxiv
8+阅读 · 2018年5月15日
VIP会员
相关VIP内容
相关资讯
深入探究深度卷积语义分割网络和 Deeplab_V3
AI研习社
6+阅读 · 2019年4月13日
DL | 语义分割综述
机器学习算法与Python学习
58+阅读 · 2019年3月13日
深度学习在自动驾驶感知领域的应用
AI100
11+阅读 · 2019年3月6日
深度学习与计算机视觉任务应用综述
深度学习与NLP
49+阅读 · 2018年12月18日
语义分割和转置卷积
AI研习社
10+阅读 · 2018年6月22日
深度学习中的「卷积层」如何深入理解?
深度学习世界
6+阅读 · 2017年11月30日
深度学习(可视化部分)-使用keras识别猫咪
北京思腾合力科技有限公司
10+阅读 · 2017年11月30日
语义分割中的深度学习方法全解:从FCN、SegNet到DeepLab
炼数成金订阅号
26+阅读 · 2017年7月10日
图像识别 | 道路识别的自动驾驶算法基本原理
沈浩老师
6+阅读 · 2017年5月12日
Top
微信扫码咨询专知VIP会员