第五章 实时路况检测系统的设计与实现

物体识别技术被广泛应用于人们的生产生活中。随着深度学习与云计算的飞速发展,带动了物体识别技术产生质的飞跃。高分辨率图像和检测的实时性要求越来越高。

从本章开始,我们从无到有开发一个小型的物体识别(路况信息识别)系统。整个系统包括两大部分,一个是线下网络的训练和验证,另一个是在线物体识别。第一部分线下网络训练主要用于网络参数的训练,第二部分在线物体识别即为系统的实际应用。这两部分相辅相成,互为补充。

在线物体识别系统一般包括4个组成部分,分别是图像采集,图像预处理,图像特征提取以及图像匹配与识别。

5.1 路况检测系统需求分析

物体识别技术虽然很早就已经开始应用,但是由于检测技术一直无法突破,导致识别领域大多只限于科学研究,并没有在实际生产生活中发挥作用。随着各行业的飞速发展,尤其是农业现代化进程加快,工业4.0时代全面开启,计算机视觉领域也迎来一波迅猛发展。社会化大生产导致了分工明确,也促使了机器代替人工的迫切需求。机器能达到人类无法企及的计算速度,算法能发现人眼捕捉不到的信息。日常生活中我们仍能接触到很多图像检测的应用,比如,手机刷脸解锁,刷脸支付,过安检接受检查等,人们有意或无意间都会碰到这些有趣的事情。物体识别算法已经融入到了人们生活的方方面面。实时路况检测就是一个重要的研究方向。想象一下,每天中国的道路上奔跑着数以千万记的车子,同时每天又在发生着一些本可以避免的交通事故。如果每个车上都安装一套这样的实时检测路况的系统,很大程度上能帮助司机提前做出判断,从而减少事故的发生。

构建一个高效可用的实时路况检测系统需要具备很多优良的性能,主要的需求如下所示:

1、系统的功能性需求就是,当我们的车子行驶在道路上时,该检测系统能实时地检测到道路及两旁的目标物体并标出目标的具体位置和置信度。这些目标物体包括行人,过往车辆,交通标识等。系统先根据数据集训练模型,然后从摄像头视频流采集到的一帧帧的图像经过模型进行预测,最后返回到客户端与用户交互。

2、系统的性能需求。要求模型的检测既能保证准确率,又能保证速度。深度学习模型在训练时耗时长,对硬件要求高,这就要求能够真正适应实时路况的场景需求。

3、系统的可移植性。系统要求预测模块能和系统中其他的模块很好地融合在一起,那么算法就应该具备高可移植性。

4、系统的鲁棒性。考虑到实际中的路况信息的复杂性,以及室外天气多变,这些都是阻碍系统正常检测的因素。这就要求系统有一定的鲁棒性,能够在不同场景和天气条件下正常检测。

5.2 系统概述

系统采用流式开发模型。具体过程是先从视频画面中采集图像,接着进行图像预处理,再进行图像特征提取,最后进行图像识别,这几个模块顺序执行,实现了真正的端到端的处理过程。系统的处理流程如图5-1所示


该系统的具体执行流程为:
1、图像采集:图像采集是指通过采集视频流中的每一帧。
2、图像预处理:裁剪、规范化等处理。
3、图像特征提取:提取图像中的数字化信息,生成特征图。
4、图像特征匹配:将提取的特征与数据集中的标签进行匹配。

该系统中网络训练阶段存在着大量矩阵运算和线性运算。为了保证快速完成任务,系统使用了GPU进行计算加速。系统的开发环境和工具如下:
1、开发平台:Windows10、NVIDIA GTX 1080。
2、开发工具:JavaWeb、CUDA、OpenCV。

5.3 系统架构

在弄清楚了实际的需求后,我们确定使用客户端/服务器模式作为整体系统的架构。服务器端的主要功能就是提供识别服务,识别服务的核心主要是由第四章提出的基于SSD改进的物体识别方法。服务器主要工作流程是接收视频数据流并提取图像后对图像数据做处理,最终将标定好的图像传输到客户端。客户端使用JavaWeb技术来实现,通过发送HTTP请求到服务器,服务器端将结果以JSON格式返回给客户端。系统的整体功能模块图如图5-2所示,从图中我们可以看出,系统首先分为两个比较大的模块,分别是离线的网络训练和在线的物体识别,这两个大模块又包括了一些小模块,接下来会详细介绍。


5.3.1 视频流解析

这个模块主要是用来对视频流进行取帧操作,将视频截取成一帧一帧的图像,然后送到后续的模块进行处理。工作示意图如图5-3所示。

5.3.2 图像预处理

从视频流中取到的图像是原始图像,并不能直接输入进检测算法进行计算,需要对图像进行预处理。预处理的操作主要包括缩放、裁剪和归一化等。工作示意图为5-4。


5.3.3 物体识别算法模块

这个模块是整个系统的核心部件。模块本身是个大模块,其中又包括了几个小模块,这些小模块分别执行检测算法中的一个步骤。训练模块根据系统提供的数据集对网络的参数进行学习,验证模块用来测试生成的深度模型是否达到相应的准确度,特征提取模块用来提取图像中的特征图,预测模块根据特征图进行目标分类和边框回归。整个大的模块流程图如图5-5所示:


5.3.4 日志模块

这个模块用来记录检测过程中产生的识别信息。比如:每一帧视频中是否包含想要检测到的物体,如果有,则记录物体的边框位置和置信度。流程图如图5-6所示:

5.4 系统流程

5.4.1 物体识别流程

这个模块用来记录检测过程中产生的识别信息。比如:每一帧视频中是否包含要检测的目标。整个系统的流程图如图5-7所示,流程图中包括了前面讲的几个模块。这些模块按顺序组成一个端到端的图像检测系统,具体流程图如图5-7所示:


从图中可以看出,系统从读取视频流开始,逐帧读取视频中的每一帧图像,然后将图像进行预处理(包括图像缩放、裁剪和归一化),处理过的图像再经过特征提取,得到深度特征图,再根据特征图进行物体类别和边框的预测,最后将预测产生的数据写入日志。系统的具体流程图如图5-8所示。

5.4.2 网络训练流程

神经网络算法的流程就是网络训练的过程,也是网络学习参数的过程。如前面所讲的,网络的训练由两个阶段组成,一个是前向传播得到误差,另一个是反向传播修改网络参数。

前向传播就是经过一系列卷积,池化,ReLU非线性转换的过程。反向传播就是向前传递误差,最终修改参数的过程。网络训练的流程图如图5-9所示:

5.5 系统测试与分析

在整个系统需求分析里,最重要的两个技术指标就是系统的识别能力和识别速度。在本节中将会在实际场景下对系统进行全面的测试。

5.5.1 系统的检测效果

我们的系统客户端和服务器均使用流行的javaweb技术,系统客户端是基于HTML开发的,使用浏览器打开就能访问到业务功能,比如可以点击选择一张图像进入系统,随后就会出现被标定好数据的图像进行对比。服务器端是用来训练模型的,可以选择配置文件和相应的数据集,以及规定好批量大小,点击开始训练就可以实现网络模型的拟合了。训练效果如图5-10所示。训练好模型现在我们选择一张图像对系统进行检验,检验结果如图5-11所示:

图5-10 模型训练功能图


图5-11 系统检测样例

5.5.2 系统的性能测试与分析

本人对系统的性能进行了详细的测试,系统的测试尝试了多个不同的基准数据集。本节使用多样的模型参数进行了测试,分别对比多种情况下系统的准确性和实时性。

论文在训练的过程中使用了两种不同的数据集,一种是常用的PASCAL VOC2007,另一个也是一个公开的数据集CityScapes。VOC数据集包含常见的20类物体,CityScapes数据集是一个致力于城市场景(city sence)语义理解的公开数据集。CityScapes数据集是近几年才问世的,质量较高,主要用来做图像分割任务,将其标注成了为VOC格式,以达到训练的要求。测试集采用手工标定的CityScapes。论文使用的硬件测试环境为:CPU Intel i7-4790和NVIDIA GTX1080。表5-1给出测试结果,测试分别使用 , 和 大小的图像。


通过以上的分析和表中测试数据的验证,本论文实现的检测模型在图像尺寸为 ,且候选框为200,置信度为0.6时速度和准确度均达到最佳,并且速度也达到了实时检测的需求。因此实际使用中常推荐上述组合参数。

5.5.3 系统的优缺点

回顾之前整个检测系统的详细设计与实现,并且结合测试结果来看,论文实现的实时物体识别系统具有如下几个优点:
1、系统满足最基本的功能性需求,即该检测系统能实时地检测到道路及两旁的目标物体并标出目标的具体位置和置信度。这些目标物体包括行人,过往车辆,交通标识等。系统先根据数据集训练模型,然后从摄像头视频流采集到的一帧帧的图像经过模型进行预测,最后返回到客户端与用户交互。
2、系统的性能较高。模型的检测既能保证准确率,又能保证速度。还具有很高的实时性。
3、系统的可移植性。系统可以很好地将预测模块能和系统中其他的模块融合在一起。
4、系统的稳定性。得益于Web技术的先进和成熟等优势,系统可以稳定地运行在服务器上。

但是,虽然系统完成了大部分的需求,但是仍然不可否认的是系统还存在一些缺点:
1、系统的硬件要求高,特别是对GPU的要求很高。这无形中就加大了系统开发的成本,不利于系统升级。
2、当前系统的算法只满足固定需求的检测任务。一旦产生需求变更,就不能很好的扩展程序。
3、当前系统仍存在优化的空间。从第四章可以看出,检测算法一步一步发展起来的过程是艰辛的,但算法中每一个部分都还有很大的优化空间。
4、系统的鲁棒性没有达到高要求。在光线较暗的情况下系统检测效果不佳,系统仍需要增加一些策略来提升暗光检测。

5.6 本章小结

这一章里,我们设计了一个实时的路况信息检测系统。论文详细地介绍了系统的功能和使用流程。随后又从系统性能(重点分析了检测的速度和精度)对系统进行了整体分析。即证明了系统的高可用性,又证明了改进的算法对于提高识别率帮助很大。

基于神经网络的目标检测论文之目标检测系统:实时路况检测系统的设计与实现相关推荐

  1. 行人检测(人体检测)3:Android实现人体检测(含源码,可实时人体检测)

    行人检测(人体检测)3:Android实现人体检测(含源码,可实时人体检测) 目录 行人检测(人体检测)3:Android实现人体检测(含源码,可实时人体检测) 1. 前言 2. 人体检测数据集说明 ...

  2. 跌倒检测和识别3:Android实现跌倒检测(含源码,可实时跌倒检测)

    跌倒检测和识别3:Android实现跌倒检测(含源码,可实时跌倒检测) 目录 跌倒检测和识别3:Android实现跌倒检测(含源码,可实时跌倒检测) 1. 前言 2. 跌倒检测数据集说明 3. 基于Y ...

  3. coco数据集目标检测论文_目标检测coco数据集点滴介绍

    目标检测coco数据集点滴介绍 1.  COCO数据集介绍 MS COCO 是google 开源的大型数据集, 分为目标检测.分割.关键点检测三大任务, 数据集主要由图片和json 标签文件组成. c ...

  4. 基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法

    4.2 改进的SSD 上一章我们了解到,物体识别检测算法是在传统CNN算法基础上加上目标区域建议策略和边框回归算法得到的.前辈们的工作主要体现在目标区域建议的改进策略上,从最开始的穷举建议框,到划分图 ...

  5. 检测到目标服务器启用了trace方法_深度学习检测小目标常用方法

    引言 在深度学习目标检测中,特别是人脸检测中,小目标.小人脸的检测由于分辨率低,图片模糊,信息少,噪音多,所以一直是一个实际且常见的困难问题.不过在这几年的发展中,也涌现了一些提高小目标检测性能的解决 ...

  6. 基于神经网络的目标检测论文之摘要:目标检测的步骤及优化策略

    摘 要 随着计算机性能的飞速提升,蛰伏已久的深度学习算法终于迎来了高速发展的时期.物体识别(也叫物体检测,目标检测)是计算机视觉领域中最有价值的研究方向之一.本论文主要研究的是卷积神经网络算法在一般场 ...

  7. 基于深度学习的目标检测论文综述Paper Reading:A Survey of Deep Learning-based Object Detection(中文)

    摘要 介绍了文章的大致思路和结构: 1.介绍,经典的目标检测算法,数据集 2.分析比对,各种目标检测算法,包括一阶段和两阶段的 3.介绍,传统和新的应用,以及一些目标检测的其他分支 4.讨论,用目前这 ...

  8. CVPR2018论文看点:基于度量学习分类与少镜头目标检测

    CVPR2018论文看点:基于度量学习分类与少镜头目标检测 简介 本文链接地址:https://arxiv.org/pdf/1806.04728.pdf 距离度量学习(DML)已成功地应用于目标分类, ...

  9. 目标检测论文解读复现之十五:基于YOLOv5的光学遥感图像舰船 目标检测算法

    前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮 ...

最新文章

  1. 为什么不建议直接使用 Async 注解?
  2. Spring Boot 异步请求和异步调用,一文搞定!
  3. 剖析 .NET 托管提供程序
  4. 无线网卡的Master,Managed,ad-hoc,monitor等模式
  5. java是解释型编程语言_程序设计语言可以分为两类:编译型语言和解释型语言...
  6. 史上最全的分词算法与工具介绍
  7. 供应商去市网维护银行账号信息_供应商信息中心是BBP系统中一项很重要的内容...
  8. k8s核心技术-集群安全机制(RBAC介绍)---K8S_Google工作笔记0039
  9. java 异常捕捉 ( try catch finally ) 清晰解释
  10. h5手机端浏览器机制_h5浏览器缓存机制
  11. 机器学习深度学习面试宝典-深度学习500问
  12. svn中文语言安装包使用
  13. setup factory制作安装包卸载出错“Invalid start mode:archive filename”
  14. 2020-2022 抗疫营销案例合集(共17份)
  15. container_of的用法
  16. Java 程序员常用资源工具集合(建议收藏)
  17. GANs(生成对抗网络)浅析
  18. springboot的商品设计热销排行实现
  19. open failed: EACCES (Permission denied)解决办法
  20. 【缩点】SWUST 2014校赛 H:挖金子

热门文章

  1. 南阳oj 语言入门 房间安排
  2. flutter引入高德地图_flutter配置高德地图SDK
  3. 玩客云pc端_玩客云pc端
  4. eplan连接定义点不显示_EPLAN操作命令之线色设置
  5. 生无可恋的一叶知秋#百度刘超事件#
  6. 电子书各种格式的转换常见问题
  7. 计算机网络故障的一般识别与解决方法 论文,计算机网络常见故障的一般识别与解决方法-职业学院毕业论文.doc...
  8. java捕捉摄像头画面_在java中捕获来自网络摄像头的图像?
  9. 三相异步电机的平衡方程式
  10. Windows Server 安装 Adobe Flash Player