目 录

摘 要.................................................................... II

Abstract................................................................ III

第一章  绪 论............................................................. 1

1.1研究背景及意义........................................................ 1

1.2国内外研究现状........................................................ 3

1.3动物图像识别的困难点.................................................. 4

1.4 本文章节安排.......................................................... 4

第二章  基础理论.......................................................... 7

2.1 深度学习发展历史...................................................... 7

2.2 机器学习的分类........................................................ 8

2.3 深度学习常用模型..................................................... 10

2.4 Python............................................................... 18

2.5 PyQt5................................................................ 19

2.6 OpenCv............................................................... 19

2.7 本章小结............................................................. 20

第三章 基于YOLO的动物图像识别系统设计与实现............................. 21

3.1 数据集预处理......................................................... 21

3.2 训练环境和配置....................................................... 22

3.3 动物识别系统页面设计................................................. 23

3.4 本章小结............................................................. 27

第四章  运行结果与数据分析............................................... 29

4.1 基于混淆矩阵分析..................................................... 29

4.2 基于F1-sorce分析.................................................... 31

4.3 本章小结............................................................. 33

总 结.................................................................... 35

致 谢.................................................................... 37

参考文献................................................................. 39

随着科学技术的快速发展,图像识别技术也越来越成熟。本次毕业设计主要在基于训练结果横向比较了同属于YOLOv5的YOLOv5s、YOLOv5m和YOLOv5l模型对同一训练集图像识别的效果差距。针对生物多样性保护,濒危野生动物管理提出基于YOLO的动物图像识别系统。及时发现濒危物种迁徙途中的问题,及时采取措施向目标区域引导濒危物种的方向,实现物种养护的重要目标。采用YOLOv5来训练标注的数据集,取训练的最好的模型应用于识别系统中,使用PyQt5设计可视化界面便于操作,提供图片、视频、摄像仪器实时识别功能。该系统使用了大规模的动物图像数据集进行训练,包括了多个种类的动物,如鸟类、猫、牛、狗、马和羊。在测试集上的实验结果表明,该系统可以对多种种类的动物进行准确识别,达到了较高的识别精度和较快的识别速度。该系统可以应用于动物保护、动物研究、自然保护等领域。

关键词:YOLOv5;图像识别;PyQt5;动物保护;深度学习

数据集预处理

深度学习的基础是数据,数据采集是深度学习的第一步,之后还要对采集好的数据 做出处理规范数据的数据类型,以便于在各种函数中调用。数据集的数量和数据类型是对识别结果有着重要影响的。本文采用自己创建的数据集训练,将图片文件名进行统一格式标识。使用labelimg软件进行图片的逐条标记。将参加训练的图片依次在labelimg中使用标注功能标记对象所在区域,并将结果以txt文件的方式保存在labels文件中,参考图3.2。其中第一个数据是该区域内对应的动物位次,本实验一共识别动物种类为6种,分别为bird,cat,cow,dog,horse,sheep,“狗”对应的位次为第3位(从0开始),第2、3个数字分别表示选定区域内中心点的横纵坐标,第4、5个数字分别表示目标的宽和高。依次将全部的图片手动标记并保存为txt格式标签,并且标签文件名与图像文件名依次对应。

图3.1 标记图片实验图

3.2 训练环境和配置

3.2.1 训练环境

Python是一种高级编程语言,它是一种动态的、面向对象的语言,具有简洁明了、易于学习、跨平台等优点,被广泛应用于Web开发、数据科学、人工智能(AI)、机器学习、自然语言处理、图像处理等领域。基于YOLOv5s的模型框架和Python3.7.9+PyQt5 5.15.7的编写方式实现了模训练和图像识别。训练中使用的CPU是Intel(R) Core(TM) i5- 1400 CPU @2.9GHz,GPU是 NVIDIA Geforce RTX 2070s,内存为16.00GB,操作系统为64位Windows10中文版。

3.2.2 训练配置

在YOLOv5的data的文件夹目录下新建用于用于关联训练数据集的配置文件,命名为animal_data.yaml,其中train值为训练集的绝对路径,val值为验证集的绝对路径,nc为类别数量,因为数据集中一共涉及到6种动物的识别,nc即为6,names为每一种类别的名称,下标对应其在标签中的首位数字,从0开始。

图3.3 配置文件内容展示图

添加预训练模型,这里使用YOLOv5s进行展示,同时进行了YOLOv5m和YOLOv5l的模型训练。三种模型训练方式类似,同属于YOLOv5,下一章节将对三者训练出来的结果进行横向对比。

图3.4 训练模型展示图

开始训练,运行train.py文件,命令行输入命令python train.py --data animal_data.yaml --cfg animal_yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 4。使用YOLOv5s默认参数训练,迭代100次,每次训练4张。中间的可视化结果以及训练好的模型保存在runs文件夹下,参考图3.5。运用同一预训练模型时可以通过调整参数来实现最终生成的模型性能不同,可以通过--batch参数和--epochs参数调整训练批次大小和训练轮数。通过参数--weights yolov5s.pt加载预训练模型进行迁移学习,或在训练大数据集(比如COCO)时用一个空的--weights参数从零开始训练。YOLOv5默认的约30个超参数如随机梯度下降的学习率等默认存储在data/hyps/hyp.scratch-low.yaml文件内,我们可以根据自己的需要进行调参,或者通过选取med或high的超参数版本调节自己需要的数据增强水平。YOLOv5默认的设置在迁移学习时优化了每一层网络的参数,这可能导致过大的计算量和缓慢的计算速度,因此我们也可以通过--freeze参数冻结若干层网络,比如使用--freeze 0 1 2 3 4 5 6 7 8 9 10 11 12表示冻结了YOLO25个块中的前13个,包括卷积和batch normalization的部分。保持其他设定不变仅仅在fine-tune的时候优化模型头部的参数。

图3.5 基于YOLOv5s预训练模型训练结果展示图

模型训练完成后,将训练好的best.pt模型复制出来,并读入测试集文件进行预测,通过命令python detect.py --weights best.pt --source E:\Graduation project\Animal_Identify\Animal_Identify\animal_yolo_format\images\val来实现,并将训练的测试结果存放在runs文件夹的detect目录下,参考图3.6。

图3.6 测试结果展示图

3.3 动物识别系统页面设计

使用PyQt5做出系统的页面设计,整体页面参考图3.7。包括单个图片的识别,视频文件识别和调用摄像头实现实时识别功能。点击左侧图片识别按钮,点击下方打开图片,在本地选择需要识别的图片文件,点击确认按钮后点击动物识别按钮,系统显示框即可显示出已勾选的图片,并将识别到的动物框选出来匹配相似度也会显示出,并且结果显示在数据日志一栏,参考图3.8。点击左侧视频识别视频识别按钮,点击下方视频检测,在系统中选择要检测的视频文件,点击确认后系统将视频文件的每一帧画面单独提取出来,分别进行识别并将识别的结果反馈在左下方的数据日志一栏中。最后则是调用摄像头实现实时识别的功能,参考图3.11。点击左侧实时识别按钮后点击打开摄像头,就可以实时的显示摄像头所照范围内的动物,左下角框内反馈识别结果,和视频文件的识别方式类似,逐帧的分解识别。

图3.7 系统页面展示图

图3.8 系统图片识别结果展示图

图3.9 视频识别页面展示图

图3.10 视频识别结果展示图

图3.11 实时识别界面展示图

工程项目:

基于YOLOV5的动物图像识别系统设计与实现-python


链接: https://pan.baidu.com/s/18E4A-xawVvWGaKrfSitTqg?pwd=ubqk 提取码: ubqk 
 

更多推荐