基于深度卷积神经网络的多目标检测系统

 2022-01-17 11:01

论文总字数:14490字

目 录

引言 1

1 绪论 1

1.1 目标检测的背景和意义 1

1.2 目标检测的发展和研究现状 2

1.3 目标检测的方法 3

1.4 目标检测的应用 3

2 深度学习 4

2.1 神经网络模型 4

2.2 BP神经网络 4

2.3 卷积神经网络 8

3 SSD目标检测 9

3.1 SSD模型描述 9

3.2 SSD的训练 10

4 系统设计 12

4.1 数据标注及预处理 12

4.2 模型训练与预测 13

4.3 应用界面设计 14

5 总结与展望 16

致谢 18

基于深度卷积神经网络的多目标检测系统

许翔

, China

Abstract:As the computer science rapidly develops, great progress has taken place in human life, which has made human life more and more intelligent. In recent years, human exploration of artificial intelligence technology has never stopped. As is known to all, the human vision system is an important component of our perception and understanding of the external world. Studies have shown that nearly 80% of our knowledge of the world is derived from visual information. Therefore, computer vision has always been a very important research field in the exploration of artificial intelligence. Computer vision involves many disciplines, including image processing, deep learning and pattern recognition. Its ultimate goal is to enable computers to simulate human vision to learn and understand the world. One of the very important sub-directions of computer vision is object detection. Because the convolutional neural network has strong feature expression capability in deep learning, and the extracted features have strong robustness, this paper mainly adopts a deep learning detection framework—SSD, using our previously calibrated data to train the model, and adjust the parameters. Finally, we train a high precision, fast model and apply it to the designed detection interface.

Key words: computer vision;deep learning;object detection;convolutional neural network

引言

对于人类来说,目标检测是在日常生活中一件十分常见的事情,但是要想让计算机从RGB的像素矩阵中对目标进行定位并分类却是一项艰巨的任务。在早期的传统目标检测算法中,DPM一直都表现的十分出色,即便如此,它在VOC上的检测结果的mAP也只有34.3%。自从基于深度卷积神经网络的AlexNet在ILSVRC上取得惊人的效果,利用深度学习来进行目标检测和分类逐渐成为研究人员的研究重点。

本文主要研究了当前目标检测算法SSD[8]的相关理论,并利用现有的深度学习框架caffe[5]对搭建好的数据模型进行训练,这种方法具有较强的非线性表示能力,不需要过多的依赖于人工操作,经过试验验证具有较高的精确度。

本文主要框架体系如下:

第一章主要是阐述研究目标检测的背景及其研究的发展状况,并比较目标检测的常用方法及其优缺点,最后展望其应用前景。

第二章就深度学习知识展开了相关的说明,包括早期神经网络,紧接着重点介绍了BP算法的计算过程,并解析了卷积神经网络几个重要的层计算。

第三章介绍本次设计所用到的模型算法:SSD算法,从理论上阐述了SSD的模型以及训练过程和可能遇到的问题。

第四章是本次论文系统设计的相关过程。该章节介绍了对数据的标注以及预处理,展示了caffe框架下对模型的训练以及测试,最后通过使用基于MFC的界面设计,实现对任意给定图像或输入视频的目标检测。

第五章是对本次设计进行相应的总结,并且表示了自己对目标检测在未来发展提出了自己的一些设想。

  1. 绪论
    1. 目标检测的背景和意义

人类对世界的认识离不开视觉系统,在我们智能地感知世界的过程中,有近80%的处理信息是通过视觉获取的,并指导我们在生活中做出正确的行为。这也正说明了我们对这个世界的认识和理解大都来自于视觉图像。

社会的不断发展和科学技术的提高使得获取图像的途径不再只存在于人眼。我们的生活中到处充斥着各种新型的摄像头,包括USB摄像头、手机摄像头、单反相机等。目前,每天有多达数亿张的图片被上传到互联网上。英伟达的专家更是预测了到达2020年,全球将会拥有超过10亿台的智能相机,这也就表明了图像已经从人类传播到社会的各个角落。

自从计算机视觉出现并不断得到发展,计算机开始逐步实现了从图像中获取我们所需要的有用信息,如人流量统计、人脸识别、车牌号识别、自动驾驶与无人驾驶等,这些都是计算机在图像处理上的重要应用。自从基于深度学习的AlexNet方法在2012年ImageNet[6]图像分类挑战赛取得非凡的成就起,一度备受冷落的深度学习重新赢得了人们的高度重视,同时深度学习在图像领域也取得了前所未有的成就,从而赋予了计算机像我们人类一样认识世界的能力。

作为一门学科,计算机视觉也就不可避免这一些基本和关键的问题,包括对目标的分类、检测、切分、跟踪等,而这些问题也正是现阶段的研究热点。所谓的目标检测就是指在我们能够对于给定图像或者视频中对存在的目标进行定位以及分类。

一般而言,对于给定的图像,我们只有事先对图像中的目标进行定位,然后才能对目标进行分类、切分、跟踪或者我们给定的其他操作。这也正说明了目标检测是计算机视觉系统中最关键的一个环节。正是由于目标检测从一开始就成为国内外众多学者的研究热点方向,这使得目标检测得到了迅速的发展,并且取得了相当大的成就。

随着计算机视觉领域的不断发展,人们研发出大量的诸如R-CNN,Faster R-CNN[12],YOLO[13],SSD等一系列目标检测算法,并在实际生活中得到了一定的应用。然而,现实世界是不可预测的,这也导致了现有的这些目标检测算法在实际的应用背景中仍然存在着一定缺陷,比如检测精度低、算法的运行速度慢等。

    1. 目标检测的发展和研究现状

早期目标检测研究的范围由于技术落后等原因是有限的,为了能够对图像中某一个目标进行定位分类,我们通常利用简单直观的特征和人工设定的规则。一般来说,这种人工设定的特征和规则都只能在一些特定的场景中应用,这也就导致了其出现了泛化能力较弱且算法速度较慢的问题,且不能满足实时进行目标检测的要求。

随着计算机技术的不断发展,目标检测方法逐渐从人工设计特征和规则转变为利用机器学习的方法从包含大量特征的特征池中去学习特征。

在2009年,Dollar P等人提出了一种积分通道特征[2],这些特征具有不同的通道,例如梯度幅度、颜色空间、梯度方向等,它们首先构成了特征池,然后我们利用AdaBoost分类器在这些特征池中筛选合适的特征。2010年又紧接着提出了一种特征金字塔加速来特征提取的方法,并利用了积分图[3]。2014年,Dollar P将上述两种思想结合起来,提出了一种聚合通道特征[4],这种方法是通过使用AdaBoost来选择特征,从而在准确度和速度之间达到了一定的平衡。

在2010年,Pedro Felzenszwalb提出了基于可变形组件模型的目标检测算法,这个算法是非常成功的,并先后荣获VOC 07~09年的检测冠军,并成为许多图像应用的一个重要组成部分。这种算法对目标的多个部分进行了考虑,如在检测行人时,将行人分为头部、身体、四肢等部分,然后采用多模型融合的方法,一个部分对应一个线性支持向量机,其新版的程序v5采用的是12个模型,最后利用潜在支持向量机对其进行求解。在训练过程中,潜在支持向量机会自动搜索目标的所有部分,而不需要人工注释的参与。虽然该算法在健壮性上有着不错的效果,但它所存在的检测速度的问题却让人难以接受。

随着Hinton教授首次使用深度卷积神经网络在2012年的ImageNet竞赛上获得空前的成功,国内外的众多研究者们纷纷投入到深度学习的研究中,与此同时,Facebook、百度、阿里巴巴、Google等也纷纷成立深度学习研究室,通过深度学习的方法来进行图像处理。这种方法主要通过构造多层卷积网络,采用半监督学习,利用机器自动学习特征,最后根据特征对目标进行分类。

    1. 目标检测的方法

对于传统的目标检测一般有三个步骤,分别是区域选择、特征提取、分类器分类。首先,对于给定的输入图像,我们需要先确定物体可能存在的位置,然后在该位置上进行特征提取,随后利用训练好的分类器对物体进行分类。该过程如图1.1所示。

图1.1 传统的目标检测过程

在一些特定的场合下,传统的目标检测方法能够取得很好的效果。但是现实生活中的场景是多变的,传统方法也就存在着一定的问题,主要表现为以下两点:一是对于利用滑动窗口来进行区域选择这种方法没有针对性,这也就导致了它的时间复杂度高,并且产生了大量的冗余窗口;二是由于特征是人工设计的,不能很好的适应具有多样性的物体,其鲁棒性差。随着研究人员的不断探索,于是开发了新的目标检测算法,主要包括如下:

(1)基于区域提名的目标检测:所谓区域提名,就是预先判断出物体在给定图像中出现的可能位置。由于输入图像向计算机提供了颜色、边缘、纹理等信息,而基于区域提名的方法与滑动窗口的不同正是利用这些信息,在选择较少的窗口的前提下,依然可以保持较高的召回率,从而极大地减少了后续操作的复杂度,如特征提取和分类等。同时,获得的候选框的质量也要比滑动窗口的质量要高。

(2)基于回归的目标检测:虽然基于区域提名的目标检测得到了很好的发展与应用,它的检测精度高、速度快,但仍然存在着缺陷,即不能完成实时检测目标的任务。也正是如此,研究者们又提出了一种基于回归的目标检测方法,YOLO便是极具代表性的一种算法,这种方法是通过对于给定的输入图像直接在多个位置对目标进行定位并对其进行分类。

    1. 目标检测的应用

随着当代社会的不断发展,科技的快速进步,越来越多的领域都开始应用到了目标检测技术,例如无人驾驶、交通监控系统、异常情况处理等,目标检测技术也终将迎来越来越多的应用契机:

军事系统的应用。例如无人机空中侦察、车载光电平台的地面侦察、虚拟现实环境、自动泊车系统、无人驾驶与自动跟踪车辆系统等都需要视频处理技术的支持。

民用系统的应用。例如道路监管系统、公共场所的安防系统、医疗诊断、汽车导航、人脸识别等等,这些技术的发展给人类社会安全稳定带来了极大的保障。

  1. 深度学习

基于对人工神经网络的研究,人们逐渐研究出深度学习,这是一个具有多隐含层的神经网络结构。这种神经网络通过组合低层特征来发现数据的分布式特征表示,从而形成更加抽象的高层表示属性或特征。

    1. 神经网络模型

人工神经网络是一种抽象的数学模型,是在现代神经科学的基础上提出并发展起来的,它是为了能够模拟人脑的结构和功能。自从形式神经元的抽象数学模型——MP模型被W. McCulloch和W. A Pitts提出以来,人工神经网络理论已经发展超过50年。人工神经元的结构如图2.1所示:

图2.1 人工神经元结构

上述作用可以分别用以下数据公式表示:

其中是输入信号,是神经元的权值,是线性组合结果,是阈值,是激活函数,是神经元的输出。其中激活函数,常见的有以下几种,Sigmoid函数:,tanh函数:,ReLU函数:。

    1. BP神经网络

1986年,基于对误差反向传播算法的多层前馈网络的研究,Rinehart和McClelland正式提出了BP神经网络。这是当前应用最广泛的网络模型之一。BP网络可以学习并存储大量的输入-输出映射关系,而这种映射关系并不需要通过数学方程表达出来。BP神经网络的基本结构如图2.2所示:

图2.2 BP神经网络

(1)区域一:主要用于将外部接收到的信息传送到神经元中,这里是信息的来源,称为输入层。

(2)区域二:由多层神经元组成,得到的信息将在这里面进行一系列的处理,是对信息的加工处理,称为隐藏层。

(3)区域三:经过多层神经元的传输处理后,便会将得到的信息通过这里输出,并做出相应的反应,称为输出层。

BP算法的计算过程有两部分组成:正向传播和反向传播。在进行正向传播的过程中,数据流分别经过输入层、隐藏层和输出层,逐层传播,并且该神经元只会影响到下一神经元的状态,最后在输出层得到结果。如果在输出层上没有得到预期的输出结果,便会计算预期值与实际值之间的误差,从而转向反向传播的计算过程。这两个过程不断交替进行,通过对误差函数使用梯度下降策略,不断的更新层与层之间的权值,从而使误差达到最小化,最终完成信息的提取和存储过程。

接下来是对BP算法的推导过程。

(1)正向传播

对于一个BP网络,我们假设它有个输入结点, 个隐藏结点,以及个输出结点,并且规定输入层与隐藏层之间的权值为,隐藏层与输出层之间的权值为,其结构如图2.3所示:

图2.3 三层神经网络的拓扑结构

隐藏层的传递函数为,则得到隐藏层结点的输出值:

输出层的传递函数为,则得到输出层结点的输出值:

至此,BP网络就完成了前向传播计算。

(2)误差函数

我们分别用来表示输入的个学习样本,用表示第个样本输入到网络后所得到的输出。通过平方型误差计算公式,就可以得到输入的第个样本的误差:

剩余内容已隐藏,请支付后下载全文,论文总字数:14490字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;