基于深度学习YOLO模型的动物识别系统设计_第1页
基于深度学习YOLO模型的动物识别系统设计_第2页
基于深度学习YOLO模型的动物识别系统设计_第3页
基于深度学习YOLO模型的动物识别系统设计_第4页
基于深度学习YOLO模型的动物识别系统设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南商务职业技术学院毕业设计

目录

1引言...............................................................................................................................1

1.1项目背景............................................................................................................1

1.2项目目标............................................................................................................1

2相关技术与工具介绍...................................................................................................2

2.1数据采集技术....................................................................................................2

2.2YOLO模型概述...................................................................................................2

2.3分类识别技术....................................................................................................4

2.4PyQt5..................................................................................................................5

2.5开发环境与工具................................................................................................6

2.5.1Python简介............................................................................................6

2.5.2PyCharm简介..........................................................................................6

2.5.3第三方库简介.........................................................................................7

2.5.4Keras框架..............................................................................................7

3方法设计与实现...........................................................................................................8

3.1数据集收集与预处理........................................................................................8

3.1.1数据集的获取.........................................................................................8

3.1.2数据集预处理...........................................................................................9

3.2深度学习模型选择与设计..............................................................................11

3.2.1深度学习模型选择.................................................................................11

3.2.2模型设计.................................................................................................12

3.3模型的编译与训练..........................................................................................14

3.4模型的评估与优化...........................................................................................16

3.4.1模型的评估.............................................................................................16

3.4.2模型的优化.............................................................................................17

3.5前端设计与实现...............................................................................................18

3.5.1系统前端设计.........................................................................................18

3.5.2设计效果展示及分析...........................................................................19

I

湖南商务职业技术学院毕业设计

4小结.............................................................................................................................19

参考资料.........................................................................................................................21

II

湖南商务职业技术学院毕业设计

基于深度学习YOLO模型的动物识别系统设计

1引言

1.1项目背景

随着人工智能技术的快速发展,计算机视觉领域也得到了极大的发展和进

步。近年来,深度学习技术的兴起和普及,使得计算机视觉领域在图像分类、

目标检测、语义分割、实例分割、人脸识别等方面都取得了重大的进展。计算

机视觉是指通过计算机及相关技术对图像、视频、三维物体等视觉信息进行处

理和分析的技术领域。该领域涉及到图像处理、模式识别、计算机图形学等多

个方面,是人工智能技术中的一个重要分支。在过去的几十年中,计算机视觉

技术已经取得了长足的发展,目前已经广泛应用于人脸识别、智能监控、自动

驾驶、医学影像处理等多个领域。

在生态保护方面,动物识别可以帮助野生动物保护机构更好地监测和保护

野生动物,以防止野生动物的非法捕猎和盗猎等行为。其次,通过动物识别,

可以对动物的行为进行研究,如动物的活动范围、生活习性、社交行为等,进

而对动物的生态行为进行更深入的了解。对于农业养殖领域,动物识别可以用

于监测动物的饮食、活动和生长状态,以更好地控制和提高养殖效率。同时动

物识别在智能监控领域也有广泛的应用,可以用于动物园、动物繁殖场、家庭

宠物监控等领域,实现对动物的实时监控和管理。

1.2项目目标

传统的动物识别方法存在一些限制和问题,比如对于不同种类的动物和不

同的场景,需要手动调整参数或者重新训练模型,耗时耗力。而深度学习技术

能够自动学习图像特征,无需手动调整参数,且能够适应不同种类的动物和不

同的场景,提高动物识别的准确率和效率。因此,结合深度学习技术进行动物

识别具有重要的应用价值和研究意义。

项目目标旨在基于深度学习YOLO模型对动物进行识别,用户通过系统上

传动物图片,系统通过训练好的YOLO模型对动物图片进行识别,识别图片中

的动物类型。

1

湖南商务职业技术学院毕业设计

2相关技术与工具介绍

2.1数据采集技术

在深度学习中,数据采集技术是非常重要的,因为深度学习模型需要大量

的高质量数据来进行训练和优化。对于数据集的采集常用技术有标注数据、数

据爬取、数据增强、数据清洗及预处理等。

深度学习模型通常需要有标注的数据,也就是人工对数据进行分类、注释

或标记。例如在对图像数据进行物体识别、分割或关键点标注,需要人工对数

据集中的动物标注。而图片数据的爬取可以通过网络爬虫或API接口等方式,

从互联网上收集所需数据。例如从社交媒体、新闻网站或电子商务平台等获取

文本、图像或音频数据。爬取到数据图像之后,可以通过对已有数据进行变换、

旋转、裁剪、噪声添加等操作,生成更多的训练样本。这可以增加模型对于各

种变化和噪声的鲁棒性。

在数据采集中,可以利用一定的策略,从未标注的数据中选择最有价值的

样本进行标注,以最小化标注成本并提高模型性能。处理通过爬虫获取数据之

外,还可以利用众包平台,通过向广大用户征集数据,从而获得大规模的、多

样化的数据集。例如通过众包平台收集图像标注、文本分类等任务的数据。

在收集到图像数据后,进行数据的清洗、去噪和预处理是至关重要的步骤,

以保证数据的质量和一致性。这通常涉及处理缺失数据、进行数据平衡、异常

值的处理等操作。数据采集过程中需要注意保护用户隐私和数据安全,确保符

合相关法规和道德准则。此外,合理选择数据采集技术,并充分考虑数据的多

样性、数量和质量,对于深度学习模型的性能和泛化能力至关重要。

2.2YOLO模型概述

2015年,YOLO(YouOnlyLookOnce)算法腾空出世,YOLO是一种使用

卷积神经网络进行目标检测的算法。YOLO是其中速度较快的物体检测算法之

一。虽然它不是最准确的物体检测算法,但是在需要实时检测并且准确度不需

要过高的情况下,它是一个很好的选择。与识别算法相比,检测算法不仅预测

类别标签,还检测对象的位置。因此,它不仅将图像分类到一个类别中,还可

以在图像中检测多个对象。该算法将单个神经网络应用于整个图像。这意味着

该网络将图像分成区域,并为每个区域预测边界框和概率。这些边界框是由预

测的概率加权的。

2

湖南商务职业技术学院毕业设计

YOLO没有用到Anchor机制,整个检测过程是一个单一的网络,因此检测

速度非常快。因为YOLO算法将目标检测看作成一个回归问题,所以它可以很

好的学习目标的一般特征。

其中YOLO算法的损失函数由三部分组成:位置损失、分类损失和置信度

损失。

位置损失计算Boundingbox的位置坐标损失,分类损失计算每个检测框

输出的类别标签,置信度损失计算每个边界框的概率。YOLO系列算法的损失

函数都是由这三部分构成的,其中YOLO的损失函数是MSE(均方误差损失函

数)。因为YOLO是牺牲精度为代价来提高检测速度,所以YOLO算法的检测

精度不高于以往的基于区域建议框的算法,对于小目标不太友好,尤其是对于

一些聚类对象,因为在一个单元内只能预测一类对象。

YOLOv2是在YOLO的基础上进行了改进,得到了YOLOv2,从而提高对物

体检测的精确度。在YOLOv2算法中并没有手动选择锚点框,而是引入了Faster

R-CNN的思想,使用了K-means聚类算法生成锚点框。具体操作是YOLOv2

算法在训练集的真实框上使用K-means聚类算法自动找到合适大小的

Anchors。YOLOv2算法采用了DarkNet-19作为骨干网络,该网络是一个全卷

机网络,同时也是一个残差网络。因为骨干网络中没有全连接层,所以参数量

会极大减少。预测框的位置极大决定了预测的稳定性,因此YOLOv2的特征提

取网络直接输出坐标的偏移量。针对YOLO只能进行单一大小图像的检测的问

题,YOLOv2算法引入了多尺度训练,随机选择训练图像的大小,因此骨干网

络可以对多种不同大小的图像进行检测。经过这些改进后生成了YOLOv2算法,

可以较好的检测大物体,但对于小目标检测依然存在缺陷。

2018年JosephRedmon等人提出了YOLOv3,在速度和精确度方面达到

了均衡,取得了极大的成就。其算法总体架构与YOLOv2不尽相同,主要还是

对于特征提取网络进行了改进。YOLOv3提出了一种新的特征提取网络

DarkNet-53作为骨干网络,该网络有53个卷积层,同时拥有更多的残差部分

和更深的网络层。其中每个残差块使用了3×3和1×1卷积层,残差块数量

为[1,2,8,8,4]。YOLOv3在DarkNet53网络后增加了特征金字塔网络结构。因为

特征金字塔结构的存在,YOLOv3最终输出3个不同大小的特征图,每个特征

图负责预测不同尺寸的物体,分别对应尺寸13×13、26×26、52×52。其中

13×13的特征图负责预测大物体,26×26负责预测中等物体,52×52负责

预测小物体,因此YOLOv3对于小物体的检测有显著的提高。YOLOv3采用的

损失函数是交叉熵损失函数,其中包括位置损失、分类损失和置信度损失,总

3

湖南商务职业技术学院毕业设计

损失值就是三个损失值的总和

YOLO仅利用卷积层,使其成为一个全卷积网络(FCN)。在YOLOv3中

提出了一个名为Darknet-53的更深的特征提取器架构。正如其名称所示,它包

含53个卷积层,每个卷积层后面跟随批量归一化层和LeakyReLU激活函数。

没有使用任何形式的池化,而使用带有步长2的卷积层来降采样特征图。这有

助于防止池化经常归因于低级特征的丢失。

YOLO对输入图像的大小不变。然而,在实践中,由于我们在实现算法时

可能遇到各种问题,因此我们可能希望坚持使用恒定的输入大小。其中一个重

要问题是,如果我们想以批量方式处理图像(GPU可以并行处理批量图像,从

而提高速度),则需要所有图像具有固定的高度和宽度。这是将多个图像连接

成大批量所需的。

在图像处理和计算机视觉任务中,网络通过一个称为网络步长的参数来实

现对图像的下采样或降采样。在神经网络中,步长等于该层的输出比输入的因

子。

2.3分类识别技术

深度学习的分类识别技术是指利用深度神经网络模型对输入的数据进行分

类和识别的方法。常用的深度学习分类识别技术有卷积神经网络(CNN)、循

环神经网络(RNN)、长短时记忆网络(LSTM)、注意力机制(Attention)、

迁移学习(TransferLearning)、集成学习(EnsembleLearning)、生成对抗网

络(GAN)等。

卷积神经网络(CNN)是一种先进的深度学习模型,专门用于处理图像数

据。它通过多层卷积层和池化层的组合,能够有效地提取图像的特征表示。随

后,通过全连接层进行分类和预测。CNN在图像分类、物体检测和图像分割等

领域取得了显著的成果,展现出卓越的性能和准确度。

RNN是一种能够处理序列数据的深度学习模型。它通过循环连接的方式,

可以捕捉序列数据中的时序关系。RNN在语言模型、机器翻译和语音识别等任

务中表现出色。

LSTM是一种特殊类型的RNN,是一种强大的循环神经网络模型,其独特

的记忆单元和门控机制能够有效地克服传统RNN中的梯度消失和梯度爆炸问

题。通过这种机制,LSTM能够更好地捕捉序列数据中的长期依赖关系,从而

在语言建模、机器翻译和语音识别等任务中展现出优异的表现。

4

湖南商务职业技术学院毕业设计

能够有效地解决传统RNN中的梯度消失和梯度爆炸问题。LSTM具有记忆

单元和门控机制,能够更好地捕捉序列中的长期依赖关系。

注意力机制是一种用于加强模型对输入中不同部分的关注程度的技术。它

可以自动地学习和选择对分类任务更重要的特征或上下文信息,提高模型的性

能。

迁移学习是指将已经在大规模数据上训练好的深度学习模型应用于新的任

务上。通过迁移学习,可以利用已有模型的特征提取能力和泛化能力,加快新

任务上的训练和提升性能。

集成学习是通过组合多个不同的模型或模型的预测结果,来提高分类识别

性能的技术。常见的集成学习方法包括投票法、平均法和堆叠法等。

生成对抗网络,GAN是一种由生成器和判别器组成的对抗性模型。通过生

成器生成虚假的数据,并通过判别器对真实和虚假数据进行区分,从而进行分

类识别。这些分类识别技术在深度学习中得到广泛应用,并取得了显著的成果。

随着技术的不断发展和创新,深度学习分类识别技术将进一步提升模型的性能

和泛化能力。

2.4PyQt5

Qt是一个跨平台的C++图形用户界面库。QT一度被诺基亚拥,后出售给

芬兰的软件公司DigiaOyj。PyQt5是基于Digia公司Qt5的Python接口,由一

组Python模块构成。

PyQt5是基于Qt框架的Python绑定库,它可以让开发者使用Python语言

来创建跨平台的图形用户界面(GUI)应用程序。PyQt5提供了丰富的功能和工

具,使开发者能够轻松地创建各种类型的应用程序,包括桌面应用程序、嵌入

式系统、移动设备应用程序等。

PyQt5具有良好的兼容性,可以在不同的操作系统上运行,包括Windows、

MacOS、Linux等。它提供了一系列的模块,包括QtWidgets、QtGui、QtCore

等,这些模块提供了丰富的类和方法,用于创建窗口、按钮、文本框、表格等

各种GUI元素,并实现与用户的交互。

PyQt5还支持QtDesigner工具,它可以让开发者使用可视化界面来设计和

布局应用程序的界面,而无需编写大量的代码。开发者可以使用QtDesigner创

建UI文件,然后使用PyQt5将其加载和使用。

总之,PyQt5是一个强大的Python库,适用于GUI应用程序的开发,它结

5

湖南商务职业技术学院毕业设计

合了Python的简洁和易用性以及Qt框架的强大功能,为开发者提供了丰富的

工具和资源来创建高质量的应用程序。

2.5开发环境与工具

2.5.1Python简介

在荷兰荷牛科技大学设计和开发,起初是为了作为一种简单易学的脚本语

言,但是随着时间的推移,Python已成长为一种全功能的编程语言,被广泛用

于Web开发、科学计算、人工智能、数据分析等领域。

Python开源的特性,使得全世界都可以参与它的开发和推广。Python社区

庞大,有丰富的文档、教程、代码库和第三方扩展包,让Python成为众多开发

人员和科学家的首选编程语言之一。

2.5.2PyCharm简介

PyCharm是一款由JetBrains推出的Python集成开发环境(IDE),旨在提

供一整套工具,以增强用户在Python语言开发中的效率。该IDE提供了丰富的

功能,包括调试、语法高亮、项目管理、代码导航、智能提示、自动完成、单

元测试和版本控制等。此外,PyCharm还针对Django框架的专业Web开发提

供了一些高级功能,使得开发者能够更加便利地进行Web应用程序的构建和调

试。

随着版本的迭代,jetbrains在pycharm中内置了更多的支持,从Django到

轻量化的flask到接地气的pyramid再到结合最新特性的异步web框架fastAPI,

pycharm都能胜任。另外pycharm因为同系列软件的加持(webstorm),所以

在pycharm也可以直接进行前端开发(支持bootstrap,angular,react,加插件

也可支持vue)。

此外pycharm还支持科学计算。在科学计算领域,matlab一直都是独占鳌

头,但是python出现打破了这个局面,python具有的优势(众多优秀的第三方

库(生态完整且强壮),较易学习,开源免费,语法优美)让其在科学计算领

域也分得一杯羹,而作为pythonIDE中最强大的存在,pycharm也对科学计算

提供了完美的支持。

最后,jetbrain拥有丰富的插件市场,pycharm也能享受到这些丰富的插件,

安装了这些插件你就能得到最好的开发体验。

6

湖南商务职业技术学院毕业设计

2.5.3第三方库简介

requests:最友好的网络爬虫功能库,非常简洁,相比于urllib使用非常容

易,第三方库都需要先安装才能去使用。

NumPy是Python中最受欢迎的科学计算库之一,主要用于处理大型数组和

矩阵运算。NumPy还提供了许多有用的函数和工具,例如FFT、线性代数、随

机数生成等。

pandas:数据分析并保存为csv文件,python数据分析高层次应用库,还

可以进行数据清洗。

matplotlib:绘图库,主要是偏向于二维绘图包括折线图、条形图、扇形图、

散点图、直方图等等。

Scikit-learn是一个广泛使用的Python机器学习库,提供了许多流行的机器

学习算法和模型,例如分类、回归、聚类和降维等方法。Scikit-learn还包括许

多有用的工具,如数据预处理、特征选择和模型评估等。

BeautifulSoup是一个用于解析HTML和XML文档的Python库,能够帮

助我们轻松地从网页中提取需要的信息。它支持各种不同的解析器,并且可以

非常方便地遍历和搜索文档内容。

2.5.4Keras框架

Keras是一个开源的高级深度学习库,使用Python编写,并可在TensorFlow

或Theano上运行。它由Google工程师作为主要作者和维护者,采用MIT开源

许可证。Keras以最少的代码和时间建立深度学习模型,进行训练、准确性评估

和预测。相比于低级的TensorFlow库,虽然能够完全控制深度学习模型的细节,

但需要编写更多的代码和更长的开发时间。TensorFlow具有强大的功能和高执

行效率,支持多种平台,但学习门槛较高。Keras作为高级深度学习库,对初学

者来说门槛较低,可以轻松构建深度学习模型,并进行训练和预测。对于大多

数读者来说,如果一开始就学习TensorFlow,需要面对其特殊的编程模式,并

自行设计张量运算,可能会感到沮丧。而先学习Keras可以轻松构建并使用深

度学习模型。等读者对深度学习模型有了一定了解后,再学习TensorFlow就不

会感到那么困难了。

Keras是一个高级的神经网络API,它使用纯Python编写,可以基于

TensorFlow、Theano和CNTK等后端进行操作。Keras具有高度模块化、简洁

和可扩展的特性,支持卷积神经网络(CNN)、循环神经网络(RNN)以及两

7

湖南商务职业技术学院毕业设计

者的结合,并且能够无缝地在CPU和GPU之间切换。

Keras是一个模型层次的深度学习库,主要处理模型的建立、训练和预测等

功能。底层的深度学习运算,如张量运算,需要与后端引擎进行配合。目前Keras

提供了两种后端引擎选项:Theano和TensorFlow。Keras的开发者只需关注模

型的构建,而底层的操作细节,如张量运算,Keras会自动转化为相应的Theano

或TensorFlow指令。如果选择TensorFlow作为后端引擎,可以使用Keras进行

深度学习的建模、训练和预测等任务,所以TensorFlow具备的好处都具备。

3方法设计与实现

3.1数据集收集与预处理

3.1.1数据集的获取

本次的动物识别系统的数据集获取采用爬虫的方式进行获取。动物图片数

据集的爬取通过/网站接口进行爬取。

Pexels网站的官方网址是。Pexels是一个广受欢迎的免费

图片和视频库网站,提供高质量的免费素材资源。该网站的目标是为用户提供

免费、可商用的素材,满足各种创意和设计需求。在Pexels网站上,用户可以

搜索并下载各种类型的图片和视频,包括但不限于风景、人物、动物、自然等。

该平台上的素材由全球的摄影师社区贡献,确保了内容的多样性和专业性。

Pexels网站的使用非常便捷,用户可以通过关键词或主题进行搜索,也可以浏

览编辑精选的照片和视频。每个素材都具有高分辨率和出色的质量,适用于个

人和商业用途,并且不需要进行版权归属或支付费用。除了提供免费素材,Pexels

还为用户提供了一些实用的功能和工具。例如,用户可以创建收藏夹来保存和

组织感兴趣的素材,还可以根据浏览和下载历史获得相关的素材推荐。

总之,Pexels是一个受欢迎的免费素材库网站,提供高质量的图片和视频

资源,适用于各种个人和商业创意需求。该网站的简洁易用和丰富多样的内容

使其成为许多人首选的素材来源之一。下图为数据集获取的核心代码。

8

湖南商务职业技术学院毕业设计

图3-1动物识别系统的数据集获取核心代码

3.1.2数据集预处理

在对爬取之后的动物分类数据集进行预处理时,常见的操作包括数据图像

的大小设置、使用DataGenerator对数据增强,数据集的划分等处理。

图像数据的同一大小设置常常通过resize函数,由于爬取到的动物分类数

据集中的图像可能具有不同的大小和分辨率,需要将它们统一为相同的输入大

小。常见的做法是使用resize操作将图像调整为固定的尺寸,例如224x224或

者256x256像素。

数据增强是一种通过对原始图像进行一系列随机变换来扩充数据集大小、

减少过拟合并提高模型的泛化能力的技术。常见的数据增强操作包括随机旋转、

平移、缩放、剪切、翻转、亮度和对比度调整等。这些操作可以通过使用图像

处理库(如OpenCV或PIL)在训练过程中实时应用于图像。

数据生成器(DataGenerator):数据生成器是一种用于在训练模型时动态

加载批量图像数据并进行预处理的工具。数据生成器可以避免将整个数据集加

载到内存中,而是在每个训练批次中按需加载和处理图像数据。这对于处理大

型数据集和节省内存是非常有用的。通过数据生成器,可以将预处理操作(如

9

湖南商务职业技术学院毕业设计

resize和数据增强)直接应用于每个图像。通过resize操作将图像调整为相同尺

寸后,可以将其输入到深度学习模型中进行训练。在训练过程中,使用数据生

成器按需加载和预处理图像数据,在每个训练批次中应用数据增强操作来增加

数据集的多样性,下图为数据预处理核心代码。

图3-2动物识别系统的数据预处理核心代码

动物分类数据集的预处理常见步骤包括resize操作将图像调整为相同尺寸,

数据增强操作增加数据集的多样性,并使用数据生成器在训练过程中动态加载

和处理图像数据。这些步骤可以帮助提高模型的性能和泛化能力。下图为动物

识别系统的数据可视化。

10

湖南商务职业技术学院毕业设计

图3-3动物识别系统的数据可视化

3.2深度学习模型选择与设计

3.2.1深度学习模型选择

深度学习在识别方面的模型有很多种,其中一些常见的包括:YOLO(You

OnlyLookOnce)系列、FasterR-CNN、SSD(SingleShotMultiBoxDetector)、

RetinaNet等。每个模型都有其独特的优势和适用场景。

YOLO系列模型以单次前向传播的方式进行目标检测,速度较快,适用于

实时应用。YOLO系列模型可以在不同尺度的图像上进行目标检测,对于多尺

度目标有较好的适应性。YOLO系列模型的设计相对简单,容易理解和实现。

但是其模型的精度相对较低,相比其他模型,YOLO系列模型在精度上可能稍

逊一筹,尤其是在小目标检测方面。FasterR-CNN具有较高的准确度,Faster

R-CNN在目标检测的准确度上表现较好,尤其对于小目标的检测有较好的效

果。FasterR-CNN可以很容易地进行扩展和调整,适应不同的任务和数据集。

但是FasterR-CNN的速度相对较慢,不太适用于实时应用。FasterR-CNN的模

型结构相对复杂,实现和训练相对困难。SSD(SingleShotMultiBoxDetector)是

以单次前向传播的方式进行目标检测,速度较快。SSD在较小目标的检测上表

11

湖南商务职业技术学院毕业设计

现较好,同时在速度和准确度之间取得了较好的平衡。但是其模型对大目标的

检测可能不够准确。并且相对于其他模型,需要更多的计算资源。RetinaNet在

目标检测的准确度上表现优秀,尤其适用于小目标检测。RetinaNet使用了Focal

Loss来处理目标检测中的类别不平衡问题,提升了模型的性能。但是RetinaNet

的速度较慢,不太适用于实时应用。并且RetinaNet的模型结构比较复杂,实现

和训练的难度较大。

综合考虑模型的速度、准确度、复杂度以及应用场景的要求。在动物识别

系统中,采用了YOLO系列模型作为深度学习动物识别系统的模型。

3.2.2模型设计

YOLOv4算法原理是将输入原图的大小调整成416×416的分辨率作为网

络输入,使用上采样和特征融合操作,然后将原图按照特征图比例划分成13×

13、26×26和52×52的网格,在多尺度特征图上进行预测。首先对每个尺寸

的网格使用三个锚框来预测目标对象的边界。其次,使用预测的高维特征向量

和目标对象的实际边界框和类别标签作为输入。最后,对边界框进行回归训练。

YOLOv4的结构的示意图如下图所示。

图3-4YOLOv4网络结构图

该模型在输入阶段实施了一种称为Mosaic的图像增强技术,该技术通过组

合四张不同的图像来创建新的视觉效果。Mosaic技术通过随机选择并裁剪四张

图片的特定部分,然后将这些部分合并成一张单一的图像,以此作为模型训练

12

湖南商务职业技术学院毕业设计

的输入。同时可以提高模型训练输入的Batch_size,在标准化BN计算的时候

会同时计算四张图片的数据。YOLOv4模型的构建核心代码如下图所示。

图3-5YOLOv4网络构建

YOLOV4网络结构采用CSP连接,主要以下优点,增强CNN的学习能力,

使得在轻量化的同时保持准确性,降低计算瓶颈同时降低内存成本。YOLOv4

利用上面的CSP连接,下图为Darknet-53作为特征提取的主干网络的网络模型

13

湖南商务职业技术学院毕业设计

概要。

图3-6模型概要图

3.3模型的编译与训练

在YOLO算法中,基于IoU的度量方式也被使用在NMS非极大值抑制

过程中,该过程主要是为了抑制预测阶段产生的冗余的边界框,解决多个检测

框重叠的问题。在非极大值抑制过程中,YOLO算法首先会对所有预测框按照

置信度得分进行排序,从中选择出拥有最大置信度得分的预测框,并将其作为

最终检测结果框输出。然后对于剩余的预测框,计算它们与所有检测结果框的

IoU指标,若大于预设阈值,则将对应的预测框删除,经过这个过程就抑制掉

了冗余的预测框。然后一直重复输出检测结果和抑制冗余预测框的过程,直至

所有的预测框都处理完毕。这一过程中需要进行大量的预测框与检测结果框之

14

湖南商务职业技术学院毕业设计

间的IoU计算,因此如果采用计算相对更为复杂NWD来替代IoU以优化检

测效果,将会导致计算量大大增加,从而大幅度的减慢目标检测速度。因此NWD

并不适用于目标检测算法的NMS非极大值抑制过程中。

在编译过程中,需要选择适当的损失函数和优化器。损失函数用于衡量模

型的预测结果与真实值之间的差异,优化器用于更新模型的权重和偏置。下图

为动物识别系统的YOLO模型的损失函数的核心代码。

图3-7模型的损失函数代码

下图为模型的训练过程图。

15

湖南商务职业技术学院毕业设计

图3-8YOLOv4模型训练过程图

3.4模型的评估与优化

3.4.1模型的评估

在目标识别分类任务中,常用的评价指标有以下几种:准确率(Precision)、

召回率(Recall)、平均精度(AveragePrecision,AP)、全类平均精度(mAP)。

这里需要首先引入分类任务中的一些概念,在二分类问题中,通常用四个

指标来衡量模型的分类效果,这些指标分别是真正例(TruePositive,TP)、假

正例(FalsePositive,FP)、真反例(TrueNegative,TN)和假反例(FalseNegative,

FN)。其中,TP指模型正确地将正例判断为正例的数量,也就是模型成功检

测到的正例数。例如,在目标检测中,如果模型能够正确地将一只狗检测为狗,

则该检测结果可以视为一次真正例。FP指模型错误地将反例判断为正例的数

量,也就是模型错误地将反例标记为了正例。即如果模型将一只猫错误地检测

为狗,则该检测结果可以视为一次假正例。TN指模型正确地将反例判断为反

例的数量,也就是模型成功检测到的反例数。即如果模型正确地将一张不包含

任何目标的图像标记为反例,则该标记结果可以视为一次真反例。FN指模型

错误地将正例判断为反例的数量,也就是模型错误地将正例标记为了反例。即

如果模型未能检测到一只实际上存在于图像中的狗,则该检测结果可以视为一

次假反例。在分类结果中,TP和TN表示正确分类的样本数量,而FP和FN表

示分类错误的样本数量。

这些指标在计算准确率、召回率、mAP等评价指标时会使用到,以更全面

地评价模型的分类性能。

AP(AveragePrecision)用于衡量模型在不同置信度阈值下的准确率和召回

率的平均值。在目标检测任务中,每个检测框都会有一个置信度分数,表示该

框中是否包含目标,这个分数通常是由检测模型预测得出的。AP指标衡量的

是在不同置信度分数阈值下,模型预测出的检测框与真实目标框之间的匹配程

度。AP的计算方式是先计算出模型在每个置信度阈值下的准确率和召回率,

然后对准确率和召回率进行插值,最终得到一个平均精度值。AP值越高表示

模型在检测目标方面的性能越好。

mAP(meanAveragePrecision)是所有类别AP值的平均值,用来综合评

估模型在多个类别的目标检测任务上的性能。在目标检测任务中,可能会有多

个不同的目标类别需要被检测,如人、车、动物等。每个类别都有一个对应的

16

湖南商务职业技术学院毕业设计

AP值,表示在该类别下,模型的检测性能如何。mAP通过计算所有类别的

AP值的平均值来综合评估模型在多类别目标检测任务中的性能。计算mAP

需要先计算每个类别的AP值,然后将所有类别的AP值求平均。在实际的目

标检测任务中,mAP是一个非常重要的评估指标。通过对不同算法和模型的比

较,可以帮助了解哪些算法和模型在不同的场景和数据集下表现更好。

mAP值能很好的反应模型的性能,动物识别系统的mAP评估结果如下所

示。

图3-9YOLO模型评估

3.4.2模型的优化

神经网络模型的训练很容易出现过拟合,导致对验证集的数据预测结果不

够准确。由于预测框与真实框之间不相交的时候,IOU=0,无法进行梯度计算,

相同的IOU会反映不出实际预测框与真实框之间的情况,对于这种情况,引入

了GIOU进行模型的优化,GIOU可以很好地解决不重叠情况下,也就是IOU=0

的情况,从而让训练继续进行下去。除此之外,YOLOv4使用的是CIOU损失,

损失函数必须考虑三个几何因素,重叠面积,中心点距离,长宽比。

优化之后的模型,整体架构可以分为三个主要组件:主干网络、特征金字

塔网络和预测头。

主干网络:YOLOv4使用了一个强大的主干网络作为特征提取器。主干网

络通常使用预训练的卷积神经网络,如Darknet-53等,来提取输入图像的特征。

这些特征将被传递到接下来的组件中进行进一步处理。

特征金字塔网络:特征金字塔网络用于处理来自主干网络的特征,并提取

多尺度的特征。这样可以在不同尺度上检测目标,从而提高检测的准确性。

17

湖南商务职业技术学院毕业设计

YOLOv4使用了一个特殊的特征金字塔网络,称为SPP(SpatialPyramid

Pooling),它可以在不同尺度上提取特征,并将它们融合在一起。

预测头:预测头是YOLOv4的最后一部分,用于预测目标的位置和类别。

它根据特征金字塔网络输出的特征图进行预测。YOLOv4使用了一种称为

YOL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论