:本发明涉及目标检测领域,尤其涉及一种基于改进的yolov7模型的目标检测方法。
背景技术
0、
背景技术:
1、近年来,随着各大领域的人工智能普及,目标检测成为了一个活跃的研究领域,在国内外都有着一定的影响力。为了开发和改进算法和技术,以实现在图像或视频中准确地检测和定位目标的能力。目标检测的主要目的之一是实现自动化的视觉分析。通过目标检测算法,计算机可以自动地识别和定位图像或视频中的感兴趣目标,从而减少人工干预和处理的工作量。这对于大规模图像和视频数据的处理具有重要意义。
2、传统的目标检测算法通常基于理想条件下收集的大型、高品质数据集进行训练,但现实应用中遇到的数据往往来自固定摄像头捕获的场景,导致数据质量不一、背景复杂且信息量有限。这种现实与理想之间的差距使得标准的目标检测技术难以直接满足实际应用的复杂需求。面对数据量有限且类别多样的训练数据,如何有效地进行目标检测成为了实际部署项目的一大挑战。因此,深入研究和应用基于深度学习的目标检测技术,对于解决这些实际问题具有重要的研究价值和广泛的应用前景。
3、yolo模型作为目前主流的目标检测模型,在各方面都有出色的表现。yolov7代表了yolo(you only look once)算法系列中的最新进展,这是一个深度学习驱动的目标检测技术。该版本是由chien-yao wang和alexey bochkovskiy共同研发的,目标是提供一个既高效又准确的目标检测解决方案。yolov7采用了一种轻量级的网络架构,结合了深度残差网络(resnet)和特征金字塔网络(fpn)的思想。它由一系列卷积层、上采样层和特征融合层组成,用于从输入图像中提取特征并进行目标检测。yolov7是一种单阶段检测算法,即通过单个前向传递即可完成目标检测任务。相比于两阶段检测算法(如faster r-cnn),它具有更快的推理速度。
技术实现思路
0、
技术实现要素:
1、(一)技术方案
2、本发明的目的在于提供一种基于改进的yolov7模型的目标检测方法,以解决上述背景技术中提出的问题。
3、为了实现上述目的,本发明提供如下技术方案:一种基于改进的yolov7模型的目标检测方法,包括如下步骤:
4、步骤1:采用kaggle、mafa开源数据集以及部分自制数据集,将其voc格式转换为yolo格式,进行数据预处理,设置比例系数为0.7、0.2、0.1来划分,进行训练和预测;
5、步骤2:在原有的yolov7模型上添加diversebranchblock模块,引入六种不同的卷积核模块,调整其尺寸来提取多尺度的特征信息;
6、步骤3:在改进的yolov7模型中,上采样采用carafe算子进行模型的轻量化;
7、步骤4:在优化模型网络头部添加dyhead自注意力机制,提高输入数据的表达性和泛化能力,进一步优化特征的表示能力;
8、步骤5:通过调节和优化改良的目标检测算法参数,寻找并测试得到具有最高检测准确性的模型。随后,把验证集的数据送入这一最佳模型中进行效验;
9、步骤6:使用map@.5,map@.5:.95作为目标检测模型的评判标准。
10、本发明实施的基于改进的yolov7模型的目标检测方法,是针对现有的目标检测模型算法存在的问题所提出的。在原有的yolov7模型上添加diversebranchblock模块,包含多个并行的分支,可以同时捕获多尺度的特征或进行不同的特征变换,有时还可以通过替代更复杂的模型结构来减少参数数量和计算量。;在改进的yolov7模型中,上采样采用carafe算子进行模型的轻量化,carafe算子是一种轻量级的上采样方法,相比传统的插值算法(如双线性插值)可以提供更好的性能。使用carafe算子进行上采样可以减少模型的参数量,从而实现模型的轻量化。这在资源有限的设备上运行尤为重要,可使模型在更多有限制性的设备上保持其运行速度和效率;在改进的yolov7模型中,在网络头部添加dyhead自注意力机制,在神经网络模型中提高输入数据的表达性和泛化能力,可以通过自适应地学习特征之间的关联性,进一步优化特征的表示能力。采用了大量的真实样本数据进行训练和测试,结果表明我们的方法可以在不同环境下实现高准确率的检测,包括光线较暗或有遮挡物的情况。
11、进一步地,在本发明的一个实施例中,所述步骤1为数据预处理阶段,具体包括:
12、步骤1-1下载kaggle、mafa开源数据集以及在网络中适合作为目标检测模型的数据集,抽取其中的11000张关于各类目标的图片,同时将所选取的图片文件格式均修改为jpg格式;
13、步骤1-2将下载好的数据集全部转换为yolo模型可加载的格式;
14、步骤1-3修改以data命名的文件中的类别相关参数,对yolo格式的数据集,用文本文件classes记录数据集相关的类别信息;
15、步骤1-4修改postfix参数后,运行split_data.py,设置比例系数为0.7、0.2、0.1进行划分。
16、进一步地,在本发明的一个实施例中,所述步骤2为在原有的yolov7模型上添加diversebranchblock模块,具体包括:
17、步骤2-1克隆dbb仓库,下载其中的代码文件;
18、步骤2-2在前向传播过程中,将原始卷积层替换为dbb模块,并进行训练;
19、步骤2-3在模型中,将dbb模块替换为原始的卷积层,并进行训练;
20、步骤2-4在多次训练中收集结果,确认最佳的添加位置。
21、进一步地,在本发明的一个实施例中,所述步骤3为在改进的yolov7模型中,上采样采用carafe算子进行模型的轻量化,具体包括:
22、步骤3-1根据dyhead注意力机制原理将其融合在模型的检测头中;
23、具体的,dyhead框架的自注意力机制self-attention体现在三个方面:尺度感知注意力(scale-aware attention)、空间感知注意力(spatial-aware attention)以及任务感知注意力(task-aware attention);
24、在给定的特征张量f∈rl*s*c,其广义注意力可描述为w(f)=π(f)·f
25、将注意力函数转换为三个序列注意力,每个注意力仅聚焦一个维度,则有:
26、w(f)=πc(πs(πl(f)·f)·f)·f
27、步骤3-2在models文件夹下创建一个新的python文件dyhead.py,在dyhead.py文件中,编写dyhead检测头的代码;
28、步骤3-3根据需要调整dyhead检测头的参数。
29、进一步地,在本发明的一个实施例中,所述步骤4为在优化模型网络头部添加dyhead自注意力机制,提高输入数据的表达性和泛化能力,进一步优化特征的表示能力,具体包括:
30、步骤4-1修改yolov7模型的源代码,将原有的上采样算子替换为carafe算子;
31、步骤4-2根据需要调整carafe算子的参数,以便更好地适应的目标检测任务;
32、步骤4-3进行实验验证,确保模型在替换上采样算子后仍然能够正常训练和预测。
33、进一步地,在本发明的一个实施例中,所述步骤5具体包括:
34、步骤5-1加载训练集、验证集和测试集数据;
35、步骤5-2设置相关预训练参数,确保在当前设备条件下可以稳定运行;
36、步骤5-3修改可设置的参数,在合理范围内进行调试,若有提升再重复相同操作计算准确率,直到达到模型最优结果结束优化调试;
37、步骤5-4将测试集输入到最优模型中,对模型泛化性能进行评价。
38、进一步地,在本发明的一个实施例中,所述步骤6包括:使用map@.5,map@.5:.95值作为目标检测模型的评判标准。
39、(二)有益效果
40、1.本发明在在原有的yolov7模型上添加diversebranchblock模块,这样可以提高模型的感受野,进一步改善检测精度。通过多种结构重参数转换方法,在同时满足模型结构及参数量均得到优化,且推理时间不变的前提下提高其泛化性;
41、2.在yolov7模型的传统upsample算子的基础上替换其为carafe算子进行模型的轻量化,carafe算子可以通过对特征图内的像素进行学习得到像素之间的关联关系,从而实现高质量的上采样。这有助于更精细地定位和检测目标体,提高模型对小目标的检测效果;
42、3.在改进的yolov7模型中,在网络头部添加dyhead自注意力机制,通过自适应地学习特征之间的关联性,能够赋予关注重要特征的能力。