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

本文为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

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

LSTM的简单介绍,附情感分析应用

? 长短期记忆网络,通常称为“LSTM”(Long Short Term Memory network,由Schmidhuber和Hochreiterfa提出...

3496
来自专栏新智元

100页的机器学习入门书:只要有基础数学知识就能看懂!(免费下载)

书名The Hundred-Page Machine Learning Book,作者Andriy Burkov是Gartner的机器学习团队leader,人工...

1872
来自专栏ATYUN订阅号

OpenAI提出比GAN更具优势的可逆生成模型Glow

Glow,一种使用可逆1×1卷积的可逆生成模型。它扩展了以前的可逆生成模型,简化了架构。模型可以生成逼真的高分辨率图像,支持高效采样,并发现可用于操纵数据属性的...

1403
来自专栏AI研习社

为什么ResNet和DenseNet可以这么深?一文详解残差块为何有助于解决梯度弥散问题

传统的“提拉米苏”式卷积神经网络模型,都以层叠卷积层的方式提高网络深度,从而提高识别精度。但层叠过多的卷积层会出现一个问题,就是梯度弥散(Vanishing),...

3455
来自专栏机器学习和数学

[机智的机器在学习] 常用网络层总结之CNN篇

卷积神经网络(CNN)由输入(Inputs)、卷积层(Convolutions layer)、激活层(Activation)、池化层(Pooling layer...

3665
来自专栏人工智能LeadAI

为什么ResNet和DenseNet可以这么深? | 一文详解残差块为何能解决梯度弥散问题

传统的“提拉米苏”式卷积神经网络模型,都以层叠卷积层的方式提高网络深度,从而提高识别精度。但层叠过多的卷积层会出现一个问题,就是梯度弥散(Vanishing),...

3537
来自专栏目标检测和深度学习

CVPR2018 | CMU&谷歌Spotlight论文:超越卷积的视觉推理框架

选自arXiv 作者:陈鑫磊等 机器之心编译 参与:张倩、李泽南 人类在看到图像时可以进行合理的推理与预测,而目前的神经网络系统却还难以做到。近日,来自卡耐基梅...

2936
来自专栏杨熹的专栏

用 TensorFlow 让你的机器人唱首原创给你听

Siraj 的视频 源码 今天想来看看 AI 是怎样作曲的。 本文会用 TensorFlow 来写一个音乐生成器。 当你对一个机器人说:我想要一种能够表达出希...

3446
来自专栏大数据文摘

暑期追剧学AI (4) | 人工智能关键概念“神经网络”是什么?不信看完这个视频你还不懂!

1836
来自专栏AI科技大本营的专栏

一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉

交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用...

3295

扫码关注云+社区