教你如何使用深度学习识别交通标志,准确度高达93%

原作者 Priya Dwivedi 编译 CDA 编译团队 本文为 CDA 数据分析师原创作品,转载需授权

自动驾驶已经迎来发展的热潮。自动驾驶车在行驶时,需要正确识别路上的交通标志。在这篇文章中,我们将教你如何使用深度学习,来训练汽车对交通信号进行分类,准确度高达 93% 。

完整的 Python 的代码已经分享在 GitHub 上。

交通标志

数据集

用于练习的数据集由德国道路上常见的 43 种不同的交通标志组成。交通标志图像是从实际道路图像中裁剪出来的,因此处于不同的照明条件下,如下图所示。

共有 5 万张图片。图像为 32x32 像素,彩色。

了解数据

任何建模练习的第一步应该是熟悉当中所涉及的数据。这里有 43 种不同的交通标志。数据分布不均匀,如下所示。有些标志对应只有 200 张图像,而有些则有超过1200 张图像。

数据集中的图像如下所示,我们可以看到图像很小,亮度不同,有些很模糊。此外,一些交通标志并不位于图像中心。

数据集中的交通标志图像

数据预处理

在将图像输入到神经网络之前,我将图像规范化,使像素值处于 0 和 0.5 之间。为此,我将所有像素值下降了 255 。这是因为当原始数据介于 0 和 1 之间时,神经网络表现更好。我决定使用彩色交通标志,而不是将其转换为灰色,因为人类会通过符号的颜色对其进行分类,机器也可以利用这点。最后,我将数据集分为训练集,验证集和测试集。测试集为模型没有接触过的 30% 样本。

模型架构

在这个项目中,我决定使用 LeNet 架构,这是一个简单的卷积神经网络 (CNN) ,它在 MNIST 数据集中表现良好。如下所示,该模型具有两个卷积层,其后是两个最大的池层。第一个卷积层使用的图像大小为 5x5 ,过滤器深度为 6 。第二个卷积层还使用 5x5 的图像大小,但使用深度为 16 的过滤器。在卷积之后,我们平铺输出,然后使用两个完全连接的层。第一个有 120 个神经元,第二个有 84 个神经元。所有层之间都使用 RELU 激活。最后,我们使用 Softmax 的输出层来对 43 种的图像进行分类。

LeNet 架构

LeNet 架构在这个问题上出人意料地出色,在 30 个时间点中,对于验证样本准确性为 98% 。下图为精确性和错误性:

使用 LeNet 架构进行模型训练

对模型从未接触过的测试样本时,准确度约为 93% ,这是非常可靠的。

如果我们对图像进行增强,改变亮度,旋转,平移等增加样本大小,则可以进一步提高准确率。

可视化神经网络

虽然神经网络可以是一个很好的学习设备,但它们通常被称为黑盒子。我们可以通过绘制其特征图(过滤器的输出)来了解神经网络的学习情况。从这些特征图,可以发现神经网络觉得有趣的图像特征。对于一个标志,也许内部网络的特征映射对符号的边界轮廓,或者符号的着色符号有强烈反应。

让我们看看第一个卷积层的 6 个不同的过滤器对于“禁止驶入”标志有何反应。这里亮点反映了神经元被激活的地方。可以看到,神经网络正聚焦于符号的圆形形状和中间的平行线。

禁止驶入标志
特征图 - 禁止驶入标志

与此相对,对于特征图中不含交通标志的天空图像。大多数的过滤器是黑色的,这意味着神经网络在该图像中没有识别出值得注意的标志。

这不是超级有趣!

附录:

德国交通标志数据集:

http : //benchmark.ini.rub.de/?section=gtsrb&subsection= dataset

GitHub完整代码:

https://github.com/priya-dwivedi/CarND/blob/master/CarND-Traffic-Sign-Classifier-P2/Traffic_Sign_Classifier_pd.ipynb

ref:

https://medium.com/towards-data-science/traffic-signs-classification-for-self-driving-car-67ce57877c33

原文发布于微信公众号 - CDA数据分析师(cdacdacda)

原文发表时间:2017-06-25

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jayden的专栏

机器学习的一些术语

卷积神经网络最初是用来处理多维数组数据,比如,一张由三个2D数组组成、包含三个彩色通道像素强度的彩色图像。大量的数据模式都是多个数组形式:1D用来表示信号和序列...

16300
来自专栏AI研习社

「Deep Learning」读书系列分享第二章:线性代数 | 分享总结

「Deep Learning」这本书是机器学习领域的重磅书籍,三位作者分别是机器学习界名人、GAN 的提出者、谷歌大脑研究科学家 Ian Goodfellow,...

47050
来自专栏机器学习算法与Python学习

推荐|深度学习领域引用最多的20篇论文,建议收藏!

深度学习是机器学习和统计学交叉领域的一个子集,在过去的几年里得到快速的发展。强大的开源工具以及大数据爆发使其取得令人惊讶的突破进展。本文根据微软学术(acade...

18050
来自专栏数据派THU

基于多篇经典论文综述Attention模型方法(附源码)

先简单谈一谈 attention 模型的引入。以基于 seq2seq 模型的机器翻译为例,如果 decoder 只用 encoder 最后一个时刻输出的 hid...

28250
来自专栏机器之心

机器学习和深度学习引用量最高的20篇论文(2014-2017)

选自Kdnuggets 作者:Thuy T. Pham 机器之心编译 参与:邵明、黄小天 机器学习和深度学习的研究进展正深刻变革着人类的技术,本文列出了自 20...

389110
来自专栏编程

Python环境下的8种简单线性回归算法

选自Medium 作者:Tirthajyoti Sarkar 机器之心编译 参与:晏奇、刘晓坤 本文中,作者讨论了 8 种在 Python 环境下进行简单线性回...

25790
来自专栏Brian

数据挖掘

---- 概述 最近一直在学习数据挖掘和机器学习,无论是是服务端开发人员还是web开发人员,个人觉得最起码都要都一些最基本的数据挖掘和机器学习知识。废话少说,我...

31350
来自专栏Gaussic

Machine Learning笔记(一) 监督学习、非监督学习

对于要买房子的人,充分的市场调研可以充分的了解市场行情。假设你想买一栋 750 feet2 的房子,而在其他方面没有太大的要求,现已收集了许多房屋的尺寸极其对应...

6310
来自专栏机器学习算法与Python学习

深度学习领域引用量最多的前20篇论文简介

19150
来自专栏IT派

机器学习中导数最优化方法(基础篇)

1. 前言 熟悉机器学习的童鞋都知道,优化方法是其中一个非常重要的话题,最常见的情形就是利用目标函数的导数通过多次迭代来求解无约束最优化问题。实现简单,codi...

425130

扫码关注云+社区

领取腾讯云代金券