但唐朋 柴永磊 姚祉含
【摘 要】人工智能领域的发展拖动着社会的进步,而作为人工智能领域的重要部分,图像识别近年来受到了学术界与工业界的广泛关注。图像识别中的目标检测技术能够帮助人们实现自动驾驶、无人机导航、图像检索等应用。而YOLO模型的提出极大地提高了目标检测任务的效率,使得我们可以在本地搭建起系统来完成实时目标检测。本文从YOLO模型出发,对比了基于YOLO模型的深度学习方法与传统目标检测算法的差异,并利用YOLO模型进行编程在桌面端实现了目标检测。
【关键词】目标检测;YOLO模型;应用实现
中图分类号: TP391.41;TP183 文献标识码: A 文章编号: 2095-2457(2019)21-0118-002
DOI:10.19694/j.cnki.issn2095-2457.2019.21.053
1 背景与相关工作
视觉是人类的重要感官之一,有超过80%的信息是由视觉反馈的,所以机器视觉亦成为了当下的热门研究领域,值得我们研究。要想建立真正意义上的智慧城市,我们就需要对城市中可能发生的各种状况进行实时追踪与检测。交通事故、车流疏导、危险警告,智能化的城市一定会配有智能化的城市安防预警系统,而目标检测正是其中的关键。
国内外有不少学者在研究目标检测问题,而且已经取得了一系列成果。比如R-CNN[1]、SPP-net、VGG[2]等识别网络,这些网络都能完成目标识别任务。但他们都基于区域提名法来进行图像的切割和特征提取,很明显这样的效率是很低的。这是因为对于一张图片,如果基于区域提名法来检测物体,在定位的过程中我们需要对该图片进行尽可能地切割,从空间角度来看我们会获得数百或者数千倍大小的切割图像,而且还需要利用卷积神經网络对这些图像进行学习,无疑在时间和空间上会有较大的浪费。而YOLO模型[3]则加快了目标检测的整体速度。
2 传统目标检测模式与YOLO模型的差异
2.1 传统目标识别模式
在传统机器视觉领域,目标检测是一个热门的研究方向,基于传统目标检测方法某些特定对象的目标检测有不错的效果,例如人脸检测以及行人检测已经有较高的准确度而且在我们的生活中得到普及。但是,传统的目标检测难以在单次处理中完成对多个任意目标的事实检测,这是因为与特定目标相比,传统目标检测算法对普通目标进行分析处理会占用较多系统资源,降低系统I/O效能,所以利用传统目标检测模式对普通目标进行识别的效果总是差强人意。
传统目标检测模式主要利用滑动窗口框架,主要包括以下三个步骤:
(1)利用不同尺寸的滑动窗口覆盖图片中某一部分区域作为候选计算区;
(2)提取候选区域的视觉特征,如深度特征或者HOG特征;
(3)利用机器学习分类算法对特征进行学习建模,如SVM模型。
2.2 YOLO模型
在YOLO模型中,输入的图片覆盖至大小为S×S的划分网格,如果有某一个待测目标物体的中心落在该网格内,那么该网格就用来预测B这一目标的分类的可信度;同时每一个网格需要预测个边界框以及这些边界框的可信度。如下图1所示,展示了YOLO模型预测是返回的相关参数。y代表整个返回域,其中包含了5个变量。它们分别是代表所检测物体的中心绝对坐标位置(包含水平坐标x与竖直坐标y)、所检测物体的宽度w和高度h。最后返回的是该区域内存在物体的可信度confidence。实际的检测过程中,整张待测图片会被分割为若干连续的区域并进行计算。实现整体的加速识别,最终只返回可信度confidence大于阈值的结果。与传统目标检测识别相比减小了不必要的运算,不需要对每一张图重新计算,提高了效率。
3 应用软件的实现
3.1 卷积操作
卷积操作或是卷积层,指的是使用卷积核对给定图像进行特征提取和特征映射的一种操作方式,它广泛地存在于人工神经网络中。
卷积层完成的操作,可以认为是受局部感受野概念的启发。与此相对应的是池化层,主要是为了降低数据维度;综合起来说,人工神经网络通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。
为什么一定要降低数量级和数据维度?因为对于一张图片它可能存在10000×10000个像素。如果不降底维度,且采用全连接层运算的人工神经网络不仅会增大参数的个数还会浪费了运算资源。与传统机器学习需要更多的数据不同,在利用神经网络完成目标检测任务时,我们所依靠的不是100%的从图片数据中获得每一个像素的特征,而是从中提取出这张图片的关键特征。所以我们要利用相关的降维技术来满足我们的要求,使我们从原始图像上获得特征信息。
卷积操作是人工神经网络中常见的数据压缩方式,卷积过程可以理解为我们使用一个过滤器(卷积核)来过滤图像的各个区域以得到各区域的特征值,实际训练过程中卷积核的值是在学习过程中得到的。卷积操作涉及卷积核大小与步长(卷积核每一次移动的距离)的定义。
3.2 软件展示
我们利用Python完成程序的编写。在进入系统之后,我们会看到我们所设计的图形界面,根据不同的功能需求,我们可以进入不一样的子系统。下图是我们进入系统软件的主要界面。
实时目标检测系统是我们的主要系统,它能够完成对视频流的目标处理任务。如图所示,我们的实时监控系统完成了一段高速公路视频的车辆检测。不仅提取了车辆在视频中所处的位置,还计算给出了整个道路中车辆的个个数。从软件实际运行的结果来看,我们对于画面中车辆的定位是准确的。从远处到近处我们都能用范围矩形定位该识别物体的位置和该物体类别的可信度。实际计算的过程中会存在许多背景噪声,比如道路上的广告牌、路灯等等,在传统的目标识别研究中,一旦这些噪声信息对我们的待测物体进行遮挡,程序可能就无法准确地进行目标检测识别,而利用YOLO模型快速提取的车辆特征,只要被遮挡的部分不大于满足识别的最低限度,我们还是可以将其准确识别的。从这一点来看,YOLO模型的准确程度也要优于传统目标检测方法。
算法1主要帮助我们将经过FDNN网络处理后的图像进行输出,形成视频流来方便相关检测人员的查看。
4 总结
本文介绍了深度学习中的YOLO模型,将该模型与传统目标检测算法进行了对比,并实际利用YOLO模型与深度学习理论完成了基本识别软件的设计证明了YOLO模型的可靠,通过与其他相关成熟的神经网络模型进行对比我们所采用的模型在Windows环境下有明显的优势,而且对硬件要求较低,可以满足日常生活中相关应用的需要。但是我们发现,在实际软件的运行过程中,如果有两个待检测物体过于靠近我们不能很好地将其区分。这说明我们软件的准确度还有待提升,后期我们将着手改进YOLO模型,使其识别准确度更加精准。
【参考文献】
[1]李晓光,付陈平,李晓莉,王章辉.面向多尺度目标检测的改进Faster R-CNN算法[J].计算机辅助设计与图形学学报,2019,31(07):1095-1101.
[2]陈毅,黄妙华,胡胜.基于改进VGG卷积神经网络的前方车辆目标检测[J].数字制造科学,2018,16(04):282-287.
[3]高军,朱宏辉,Yi Lu Murphey.基于YOLO和RRN的运动目标跟踪方法[J].计算机工程与设计,2019,40(07):2019-2025.