目标检测

基于深度学习的交通标志检测

可以在这里找到代码。它可能比文章更新;

目标

使用简单的卷积神经网络对交通标志进行分类。

机器学习

想象一下,你需要建立一个识别手写体数字的程序。

  

这是5。但也可以说是3。

 

你会用什么规则来判断它是3还是5呢?

 

研究人员决定向计算机展示成千上万的例子,并试图通过经验来解决问题,而不是试图挑选所有规则并构建一个非常复杂的程序。这是机器学习的开始。

 

机器学习的主要问题之一是特征提取。尽管我们向计算机展示了成千上万的例子,但我们仍然需要告诉他应该关注哪些特征。对于复杂问题,这还不够好。

 

深度学习模型绕过了这一点。它们自己学习应该关注哪些特征。

 

02

深度学习

为了简洁起见,我不打算深入深度学习的数学解释。我花了大约20个小时来理解这些概念并使用它们。相反,我会尝试解释深度学习背后的原因。如果你想要更深入,我会发布一些我用过的视频和讲座。

 

作为人类,识别物体似乎是一项非常简单的任务。我们几乎不用做任何努力,至少不是有意识的。但在我们真正了解我们正在看的东西之前,我们的大脑实际上已经完成了很多工作。

 

在20世纪50年代后期,两位著名的神经生理学家,David Hubel和Torsten Wiesel,在一只猫身上进行了实验,以显示视觉皮层中的神经元是如何工作的。

 

首先,他们表明附近的细胞处理来自附近视野的信息,形成地形图。此外,他们的工作确定具有相似功能的神经元被组织成列,微小的计算机器将信息传递到大脑的更高区域,并逐渐形成视觉图像。

 

大脑简单地结合低级特征,如基本形状,曲线,并构建更复杂的形状。

 

深度学习卷积神经网络是类似的。它首先识别低级特征,然后学习识别并组合这些特征以学习更复杂的模式。这些不同层次的特征来自网络的不同层。

  

深度学习是一个迷人的领域,我希望给你一个足够清晰的介绍。我鼓励你观看关于这个非常棒的斯坦福大学课程

 

如果你更喜欢阅读,我推荐 Goodfellow,Bengio和Courville的

交通标志项目

如果我们想要自动驾驶车辆,检测和分类交通标志是一个必须解决的问题。

 

我们将使用的数据集是在线提供的德国交通标志数据集

 

它共包含超过50,000张图像,分为43个不同的类别:速度限制(speed limits),危险曲线(dangerous curves),湿滑路面(slippery road)......以下是其中一些:

 

  

该数据集在几年前曾用于竞赛。比赛的最佳结果正确地猜出了99.46%的标志。相比之下,人类表现确定为98.84%。是的,机器比人类准确率更高,因为它能更好地处理最困难的情况,例如速度限制标志的模糊图像,这可能被误认为是不同的速度限制。

03

 数据增量

在我们开始构建深度学习网络之前,让我们分析一下数据。

 

这是不同类的分布:

 

  

正如您所看到的,类之间存在太大差异。我们将创建一些数据来平衡输入数量,并减少网络可能对某些类别产生的偏差。它还将帮助我们向网络提供更多数据。

 

一种简单的方法是将图像图像旋转一定的角度。通过旋转5度,-5度,10度和-10度,我们已经可以将某些类的输入增加了五倍。

 

这是我们在此操作后获得的分布。

  

数据更加平衡,每个类至少有500个图像。

 

网络结构

本文的这一部分详细介绍了网络架构。如果您不熟悉深度学习,可以跳到结果部分。

 

第一层是卷积核大小为3*3,步长为1,SAME填充,深度为64的CNN。

 

第二层和第三层是宽度为512全连接层。

 

最后一层是一个宽度为43(类的数量)的全连接层。

 

我使用了Adam优化器及其默认参数,因为它目前被认为是最有效的。

 

我使用了250的批量大小和100个训练周期(epoch)。

 

我尝试添加更多的卷积网络,但它们没有改善结果并且大大增加了计算时间。没有必要添加它们,因为我们使用的图片之间的统计不变性很低。它们中的大多数已经中心化并在标志周围进行了裁剪。

 

我因为标志的形状和颜色总体上非常简单,使用了一个中等大小的网络,但是全连接层很宽,因为标志的形状,颜色和整体外观有一些变化。

 

我没有使用超过100个周期,因为之后准确性没有提高。我还希望保持网络清晰,因此在AWS上训练它不会花费太多时间,并且结果令人满意。

 

结果

到目前为止,我只授权自己查看验证准确性。当我高于99%且对结果感到满意时,我决定针对测试集进行计算。

 

最终验证准确率: 0.9938

最终测试准确率: 0.9110

 

验证集和测试集之间的8%下降表明我的模型过拟合了。

 

以下列出了一些技巧可以避免过拟合:

  • L2正规化
  • 提前终止
  • Dropout

 

查看混淆矩阵还可以帮助我们查看错误最多的类别:

如你所见,大多数错误位于左上角。这些都是速度限制。似乎模型可以检测到它是速度限制,但很难识别标志中值之间的差异。

 

附录

我测试了从互联网上下载的一些随机标志,看看模型会如何反应:

     

 

最后两个标志在我们的数据集中。

 

前三个的标志被正确识别,置信度为99+%

 

第四个标志(显然)识别错误,80%的置信度作为禁止进入标志。

 

第五个标志(显然)以99%的置信度错误识别为速度限制。该模型应该做得更好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》,课程链接 https://edu.csdn.net/course/detail/29865【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来!  代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《YOLOv4目标检测实战:训练自己的数据集》《YOLOv4-tiny目标检测实战:训练自己的数据集》《YOLOv4目标检测实战:人脸口罩佩戴检测》《YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值