构建分类器:自动驾驶汽车要怎样看路标?
全文共2078字,预计学习时长6分钟
图源:unsplash
为了最终升级成为Level 5的完全自动驾驶汽车,相关技术一直在改进中。每年,汽车制造商都会在旗下的车队中加装更先进的驾驶辅助系统(ADAS),其中包括自适应巡航控制(ACC)、前方碰撞预警(FCW)、自动泊车等。一项研究发现,在美国境内,ADAS可以预防高达28%的事故。
完全自动驾驶汽车需要能够理解自身的周边环境,这包括其他车辆、行人以及路标。路标为我们提供有关法律的重要信息和警示危险情况,指引我们到达目的地。如果自动驾驶车辆不能区分符号、颜色和形状的差异,许多人可能会因此受到严重伤害。
汽车识别道路的方式与人类感知道路的方式不同。人类能立即分辨出道路标志和各种交通状况之间的区别,而计算机则只能从接收到的图像中看到1和0,我们需要教会汽车模仿人类的学习方式,或者至少能够像我们一样识别标志。
为了解决这个问题,笔者尝试构建卷积神经网络(CNN)来对交通标志进行分类。这个过程主要有三个步骤:预处理图像、建立卷积神经网络、输出预测结果。
图像预处理
预处理阶段所导入的图像来自Bitbucket“德国交通标志”数据仓库。这包含了一个已标注图像的数据集,我们可用其建立一个监督学习模型。该数据仓库可以复制到谷歌Colab notebook中,从而可以轻松地导入数据集并开始编写代码。为使用该数据集,其中的图像将通过灰度和色彩均化函数进行导入。
灰度
目前,数据仓库的图像有三个维度。这是因为彩色图片具有三原色——红色、绿色和蓝色(RGB),三色相互叠加,赋予其鲜明的色彩。
对于这个机器学习模型来说,图像不需要具备三个维度,只需要标志的特征。因此,用灰度函数处理数据集图像后,可以清理数据并过滤掉非必要信息,还能将图像压缩至仅剩一个维度。
分解图像三原色。| 图源:Kael Lascelle授权Nevit Dilman提供
色彩均化
图像经灰度化后就已失去了一些对比度,或者说像素的白度或黑度。为了增加对比度,必须要均化图像,因为模型必须区分各种特征,这些特征源自它们在对比度中的变化。均化图像意味着均衡像素值分布,从而产生更宽范围的图像白度和黑度。
卷积神经网络
卷积神经网络是一种深度学习网络,用于分析视觉图像,可以用它来寻找各种路标之间所独有的特征集。
CNN的架构 | 图源:mathworks
CNN的运作过程类似于我们的眼睛和大脑分类所见事物的过程。例如,在浏览一组数字时,你可以分辨出1和8之间的差异。1是一条垂直线,而8是两条线圈叠加在一起。当然,这些想法并不会真正浮现在你的脑海中,因为我们对数字早已司空见惯。
它们是如何学习的?
卷积神经网络使用卷积核(kernels)扫描或略过图像,以提取图像的重要特征。笔者认为,这一过程类似于肉眼快速扫视一张图像。眼睛先是分析某一部分,然后水平移动到下一个部分,直到浏览完整张图像。
卷积核会比较它们所看到的与它们所寻找的之间的差异。当特征匹配时,它会将其记录并存储在特征图(feature map)中。这些特征图仅保留了路标图像的重要特征而忽略其他特征,相当于原始图像的优化版本。多个不同的卷积核处理原始图并提取出不同的重要特征,然后将其结合起来形成最终的卷积模式。
输出矩阵称为卷积特征或特征图。| 图源:deeplearning.stanford.edu
解决过拟合
在处理类似本模型中使用的小型数据集时,会出现所谓的“过拟合”问题,即模型开始“死记硬背”图像,而不是归纳探寻图像的特征。
更具体地说,当模型经历了太多代(基本上是模型遍历数据集的次数),它便会开始监听某些节点的输入,而忽略其他节点。这降低了模型的准确性,因为它无法分类数据集以外的新图像。
加入dropout层可以解决这个问题。这是对此模型的简单调整,它能够丢弃节点的随机子集,因而这些子集中的节点(它们有很大概率被关闭)无法储存分类标记结果,以此来防止过拟合。就像老师提醒上课走神的学生,给予教训以引起他的注意,好让他集中精神。
预测结果
最后,给模型一幅交通标志的图像,通过卷积神经网络,输出与相应标志相关联的数字。当模型处理下面的随机路标时:
该模型预测的类为[1],是正确的。
与符号关联的类
当面对路标时,先使用灰度和色彩均化函数对图像进行预处理,卷积神经网络(CNN)使用卷积核来提取路标特征,最后对比特征与其他已分类图像以得到预测结果。这样,自动驾驶汽车就能“看懂”路标啦。
推荐阅读专题
留言点赞发个朋友圈
我们一起分享AI学习与发展的干货
编译组:郝岩君、孙津
相关链接:
https://towardsdatascience.com/road-sign-classification-learning-to-build-a-cnn-7771373179d3
如转载,请后台留言,遵守转载规范
推荐文章阅读
长按识别二维码可添加关注
读芯君爱你