一种基于YOLOv7改进的车辆检测算法
未命名
07-13
阅读:103
评论:0
一种基于yolo v7改进的车辆检测算法
技术领域
1.本发明涉及目标检测领域,具体为一种基于yolo v7改进的车辆检测算法,
背景技术:
2.目标检测算法是近二十年来人工智能的火热话题,是机器视觉领域中重要的版块之一。近些年来随着深度学习的发展,不少基于深度学习的目标检测算法脱颖而出,并且在公开数据集上体现出显著的检测效果。
3.传统检测算法通过穷举法列举出所有可能出现物体的区域,随后直接对这些区域进行图片特征匹配和分类,最后利用非极大值抑制算法输出最终结果。r-cnn(全称:region-cnn,基于卷积神经网络(cnn),线性回归,和支持向量机(svm)等算法,一种目标检测网络)算法在传统检测算法的基础上对选取区域和特征提取做出改进,所述r-cnn算法利用滑窗法进行选择性搜索,用卷积神经网络提取图像特征,将特征送入svm分类器,最后利用非极大值抑制算法输出最终图像。r-cnn算法是典型的two-stage(一种目标检测网络)算法,虽然有着较高的检测精度,但由于需要存储大量特征和繁琐的训练流程,耗费了大量的计算时间和磁盘空间,无法达到实时效果。
4.随着深度学习的发展,车辆检测领域出现了单阶段检测算法,对比双阶段检测算法的检测速度有着显著提升,例如ssd(全称:single-shot detector,多分类单杆检测器)系列和yolo(单杆检测器)系列算法。yolo系列算法是目标检测领域中one-stage(一种目标检测网络)的代表作,一次性检测出输入图片所含有的物体类别和位置,并巧妙地将分类问题转换为回归问题。yolo v7算法是yolo系列最新的算法,其速度和精确度超过了大部分目标检测算法和此前yolo系列的所有算法,能够满足实时检测效果。
5.yolo v7算法与大部分目标检测算法相同,应用在车辆检测时仍存在小目标漏检、背景识别错误的问题。
技术实现要素:
6.本发明的目的在于克服现有的缺陷而提供的一种基于yolo v7改进的车辆检测算法,在保证检测速度的同时,解决小目标漏检、背景识别错误的问题。
7.实现上述目的的技术方案是:
8.一种基于yolo v7改进的车辆检测算法,包括:
9.步骤s1,获取vehicle-dataset(车辆数据集)车辆检测数据集,对获得的所有数据集进行马赛克数据增强扩充样本集;
10.步骤s2,基于现有yolo v7算法的网络结构进行优化,得到改进的yolo v7的目标检测算法;
11.步骤s3,基于所述马赛克数据增强后的数据集,训练改进后的yolo v7目标检测网络,获取平均精确度最高的权重文件,用于pytorch(一个开源的python机器学习库,基于torch,用于自然语言处理等应用程序)环境下的目标检测算法;
12.步骤s4,利用所述改进后的yolo v7目标检测算法检测视频或图片,输出检测后的视频或图片。
13.优选的,所述马赛克数据增强方式包括:在vehicle-dataset车辆检测数据集中随机抽取四张照片,将所述的四张图片进行图像处理,并且按照一定的方框区域进行随机拼接,获得新的样本图片,拼接过程中仍会保留原图像的label标签。
14.优选的,所述改进的yolo v7的目标检测算法包括:主干特征提取网络、加强特征提取网络和多分类检测网络;
15.所述主干特征提取网络由stem层、第一特征提取模块、第二特征提取模块、第三特征提取模块和第四特征提取模块组成,其中第一特征提取模块、第二特征提取模块、第三特征提取模块和第四特征提取模块分别输出160*160*256、80*80*512、40*40*1024和20*20*1024的特征图;
16.所述加强特征提取网络整合了cbam卷积注意力模块,对来自所述主干特征提取网络的四个输入特征进行通道和空间维度上的特征优化,将尺寸为160*160*256、80*80*512、40*40*1024和20*20*1024的特征图进行卷积、特征堆叠和上采样,最后通过下采样和特征堆叠后,分别将尺寸为160*160*64的第一强化特征层、80*80*128的第二强化特征层、40*40*256的第三强化特征层和20*20*512的第四强化特征层输入所述多分类检测网络中;
17.所述多分类检测网络包括repconv重参数化卷积层、第一yolo_head检测头、第二yolo_head检测头、第三yolo_head检测头和第四yolo_head检测头;所述第一强化特征层、第二强化特征层、第三强化特征层和第四强化特征层分别经过所述第一yolo_head检测头、第二yolo_head检测头、第三yolo_head检测头和第四yolo_head检测头的卷积层后,输出第一特征预测层、第二特征预测层、第三特征预测层和第四特征预测层。
18.优选的,所述主干特征提取网络中,
19.所述stem层包括:串行的三层conv(向量卷积运算)卷积,每层conv由卷积层、bn(全称:batch normalization,归一化网络层)层和frelu(funnel激活函数)激活函数组成,输出一个二倍降采样的特征图;
20.所述第一特征提取模块包括:一个conv卷积层和一个e-elan(全称:extended-extended efficient layer aggregation networks,一种网络架构)层,输出一张160*160*256的特征图作为上层特征feat0;
21.所述第二特征提取模块包括:一个downsample层和一个e-elan层,输出一张80*80*512的特征图作为中间层特征feat1;
22.所述第三特征提取模块包括:一个downsample层和一个e-elan层,输出一张40*40*1024的特征图作为中下层特征feat2;
23.所述第四特征提取模块包括:一个downsample层和一个e-elan层,输出一张20*20*1024的特征图,作为底层特征feat3。
24.优选的,所述frelu激活函数公式如下:
25.f(x
c,i,j
)=max(x
c,i,j
,t(x
c,i,j
));
[0026][0027]
其中,x
c,i,j
表示第c个通道上对应二维空间位置为(i,j)的非线性激活函数frelu
的输入像素值,函数t表示漏斗条件,表示以二维空间位置(i,j)为中心的参数化窗口,表示同一个通道中的共享系数。
[0028]
优选的,所述第二特征提取模块、所述第三特征提取模块和所述第四特征提取模块中的downsample(降采样)层引入了递归门控卷积gnconv,将输入特征经过线性化投影层的切分后,通过深度卷积和点乘得到新的特征,最后经过线性投影得到交互输出特征,计算公式如下:
[0029][0030]
p1=f(q0)
⊙
p0∈r
hw
×c;
[0031][0032]
其中,x表示输入特征,表示通道中的线性化投影层,p为投影特征,函数f表示深度卷积层,y表示输出特征。
[0033]
优选的,所述加强特征提取网络以上层特征feat0、中间层特征feat1、中下层特征feat2和底层特征feat3作为特征输入,通过cbam(全称:convolutional block attention module,即插即用的注意力模块)卷积注意力模块进行特征优化,构建特征金字塔。
[0034]
优选的,所述多分类检测网络中引入了diou-nms非极大值抑制算法,在边界框损失函数中加入了中心距离损失。
[0035]
优选的,所述diou-nms非极大值抑制算法中的diou损失函数公式如下:
[0036][0037][0038]
其中,sa表示当前置信度得分最大的预测框所占面积,sb表示真实框所占面积,b和b
gt
表示预测框与真实框的中心坐标,ρ表示两个中心坐标的欧氏距离,c表示预测框和真实框并集区域的对角线距离;
[0039]
repconv残差块是一个计划型的重数参化卷积层,能够将复杂的网络等效成一个普通的3*3卷积层,目的在于对不同的卷积层和bn层进行融合,形成一个堆叠的卷积块,融合的公式为:
[0040][0041]
其中,所述repconv重参化卷积层融合公式中的γ和β是两个需要训练学习的超参数,m是指输入的均值,v是指输入的标准差。
[0042]
优选的,所述加强特征提取网络输出的所述第一强化特征层会输入至所述多分类器检测模块中的所述repconv重参数化卷积层,随即输入至所述第一yolo_head检测头;
[0043]
所述加强特征提取网络输出的所述第二强化特征层会输入至所述多分类器检测模块中的所述repconv重参数化卷积层,随即输入至所述第二yolo_head检测头;
[0044]
所述加强特征提取网络输出的所述第三强化特征层会输入至所述多分类器检测模块中的所述repconv重参数化卷积层,随即输入至所述第三yolo_head检测头;
[0045]
所述加强特征提取网络输出的所述第四强化特征层会输入至所述多分类器检测
模块中的所述repconv重参化卷积层,随即输入至所述第四yolo_head检测头。
[0046]
本发明的有益效果是:本发明通过对输入图片进行马赛克数据增强,在原算法的基础上增加输出尺寸为160*160*256的特征图进行特征堆叠,并且整合了cbam卷积注意力模块和增加多目标分类检测头,提高了小目标检测的精确度和图像信息的利用率;还引入了递归门控卷积gnconv,用于优化特征,并且将原算法的nms非极大值抑制算法和silu激活函数替换为diou-nms非极大值抑制算法和frelu激活函数,能够在保证检测速度的同时,有效提高车辆目标检测的精确度。
附图说明
[0047]
图1是本发明基于yolo v7改进的车辆检测算法的流程图;
[0048]
图2是本发明引入的递归门控卷积gnconv结构图;
[0049]
图3是本发明中cam通道注意力模块结构图;
[0050]
图4是本发明中sam空间注意力模块结构图。
具体实施方式
[0051]
下面将结合附图对本发明的技术方案进行清楚、完整地描述。在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相正对地重要性。
[0052]
下面将结合附图对本发明作进一步说明。
[0053]
如图1所示,一种基于yolo v7改进的车辆检测算法,包括如下步骤:
[0054]
步骤s1,获取vehicle-dataset车辆检测数据集,对获得的所有数据集进行马赛克数据增强扩充样本集。
[0055]
vehicle-dataset车辆检测数据集具有21个检测类别,含有已标注的3000张jpg图像和检测对象类别的txt文本,可直接用于yolo系列算法的训练数据集。
[0056]
马赛克数据增强方法是指在数据集中随机抽取四张照片,将的四张图片进行图像处理,并且按照一定的方框区域进行随机拼接,获得新的样本图片;随机图像处理包括缩放、翻转、错切和平移等等,最后以矩阵的方式拼接四张图片,拼接过程中仍会保留原图像的label标签;马赛克数据增强能够在扩充样本集的基础上,丰富了图片的背景,并且bn计算时能够同时计算原先四张照片的数据,可有效解决小目标对象难以检测的问题。
[0057]
通过马赛克数据增强,能够有效增加数据集数量,在目标检测领域中,大数据样本对模型精确度的提高有着一定的提升效果,能够帮助学习率收敛和让模型达到拟合。
[0058]
步骤s2,基于现有yolo v7算法的网络结构进行优化,得到改进的yolo v7的目标检测算法。
[0059]
yolo v7算法在检测速度和检测精确度上均有着优秀的效果,并且平衡了参数量、计算量和计算性能之间的矛盾,优于yolor、yolov5等多种目标检测器;本发明针对现有的yolo v7算法的网络结构进行优化,构建改进的yolo v7算法,有效提高小目标检测效率和
模型的泛化性。
[0060]
本发明的改进后的yolo v7的具体网络结构包括主干特征提取网络、加强特征提取网络和多分类预测模块。
[0061]
具体地,主干特征提取网络由stem层、第一特征提取模块、第二特征提取模块、第三特征提取模块和第四特征提取模块;stem层包含串行的三层conv卷积,每层conv由卷积层、bn层和frelu激活函数组成,输出一个二倍降采样的特征图;第一特征提取模块包括一个conv卷积层和一个e-elan层,输出一张160*160*256的特征图作为上层特征feat0;第二特征提取模块包括一个downsample层和一个e-elan层,输出一张80*80*512的特征图作为中间层特征feat1;第三特征提取模块包括一个downsample层和一个e-elan层,输出一张40*40*1024的特征图作为中下层特征feat2;第四特征提取模块包括一个downsample层和一个e-elan层,输出一张20*20*1024的特征图,作为底层特征feat3。
[0062]
与现有算法不同的是,本发明所采用的frelu激活函数是一种专门针对视觉任务的非线性函数,frelu计算通过创建空间依赖性,将relu和prelu改进为能够实现像素级空间视觉建模的relu;frelu激活函数比原算法使用的silu激活函数更为有效,且增加的计算量几乎可以忽略,其不仅结构简单,而且可以使yolo v7算法在复杂图像上取得较高的精确度;frelu激活函数公式如下:
[0063]
f(x
c,i,j
)=max(x
c,i,j
,t(x
c,i,j
));
[0064][0065]
其中,x
c,i,j
表示第c个通道上对应二维空间位置为(i,j)的非线性激活函数frelu的输入像素值,函数t表示漏斗条件,表示以二维空间位置(i,j)为中心的参数化窗口,表示同一个通道中的共享系数。
[0066]
e-elan层将四个分支的特征进行堆叠,第一个分支由卷积层、bn层和frelu激活函数组成,第二个分支由卷积层、bn层和frelu激活函数组成,第三个分支由三层串行的卷积层、bn层和frelu激活函数组成,第四个分支由五层串行的卷积层、bn层和frelu激活函数组成,将四个特征层堆叠后再经过一个conv层,在每个分支的操作中,输入通道数与输出通道数保持一致,保证了网络结构的高效性,最后输出一张四倍降采样的特征图。
[0067]
downsample层由多个卷积通道组成,左边分支由maxpool_2d最大降采样层和1*1的卷积层组成;右边分支先用1*1的卷积压缩,再用步长为2的递归门控卷积gnconv完成降采样,最后将结果进行堆叠并输出。
[0068]
与现有算法不同的是,本发明将普通的3*3卷积层替换成为了递归门控卷积gnconv;如图2所示,递归门控卷积gnconv由点乘计算、标准卷积化和线性化投影组成,是视觉领域中一种新型的建模模块,该模块在一阶空间交互卷积gconv的基础上引入了递归等结构,让模型能够超越二阶空间,实现任意阶的显式空间交互。
[0069]
在一阶空间交互卷积gconv中,递归门控卷积的输入特征经过线性化投影层的切分后,通过深度卷积和点乘得到新的特征,最后经过线性投影得到交互输出特征,具体计算公式如下:
[0070][0071]
p1=f(q0)
⊙
p0∈r
hw
×c;
[0072][0073]
其中,x表示输入特征,表示通道中的线性化投影层,p为投影特征,函数f表示深度卷积层,y表示输出特征。
[0074]
递归门控卷积在gconv基础上引入递归和缩放,递归的目的是利用线性投影函数生成多组投影特征,缩放的目的是为了让输出特征y能够在高阶空间交互的过程中保证阶数一致,并且在训练过程中尽快达到收敛状态,具体计算公式如下:
[0075][0076]
p
k+1
=fk(qk)
⊙gk
(pk)/αk=0,1,...,n-1;
[0077][0078]
递归门控卷积gnconv没有增加显著的计算参数,具有良好的可拓展性,与视觉transformer(黑盒模式,相当于一个编码器-解码器架构)相比,递归门控卷积gnconv引入了有效的归纳偏差,以及更为出色的自适应权重生成算法,能够有效地解决点乘在高阶空间交互计算的局限性,并且在降低模型复杂度的同时,将普通卷积层与全连接层等进行高维空间交互以提高模型的泛化性。
[0079]
本发明的加强特征提取网络以上层特征feat0、中间层特征feat1、中下层特征feat2和底层特征feat3作为特征输入,通过cbam卷积注意力模块进行特征优化,构建特征金字塔;加强特征提取网络的目的在于将优化后的不同尺寸的特征层进行融合,获得三个加强后的特征图并输出到多分类检测网络中完成检测任务。
[0080]
本发明的特征金字塔搭建过程如下:
[0081]
底层特征feat3利用sppcspc(优化的空间金字塔池化结构)模块进行特征提取,将底层特征feat3的通道数减少至512,并扩大底层特征feat3的特征图感受野,最后输出特征层p5;其中,由于本发明中的sppcspc模块与现有yolo v7算法中的sppcspc模块相同,故不在此赘述。
[0082]
特征图p5输入至串行的卷积层和上采样upsampling2d层,输出第一拼接特征层。
[0083]
中下层特征feat2输入至cbam卷积注意力模块后,输出的优化特征经过卷积层conv进行通道数调整,输出的特征层与第一拼接特征层进行特征堆叠,再通过一层e-elan层进行多分支特征堆叠,最后输出特征层p4,尺寸为40*40*256;特征层p4输入至串行的conv2d卷积层和上采样upsampling2d层,输出第二拼接特征层。
[0084]
与现有算法不同的是,本发明引入了cbam卷积注意力模块,该模块是一种由通道注意力模块cam和空间注意力模块sam组成的端到端的注意力模块,能够对输入特征依次在空间维度和通道维度上进行特征优化。
[0085]
如图3所示,cbam卷积注意力模块将特征图f输入通道注意力模块cam,该模块能帮助模型学习图片中有意义的物体。特征f先分开两部分计算,分别进行全局最大池化avgpool和最大值池化maxpool,池化结果输入共享全连接层mlp后,将两个输出特征相加和sigmoid激活,生成一维通道注意力mc并与输入特征相乘,最终输出通道优化后的特征图f
′
,具体计算公式如下,其中σ表示sigmoid激活函数;
[0086][0087]
如图4所示,特征图f
′
随后输入空间注意力模块sam,该模块能帮助模型学习图片中物体所处的位置。特征f
′
会通过全局最大池化avgpool和最大值池化maxpool后,将两个输出结果进行堆叠后,使用标准卷积层调整堆叠后的输出特征的通道数,并取sigmoid函数激活后得到空间注意力权重,将该权与特征f
′
相乘,输出空间优化后的特征图feat2,具体计算公式如下:
[0088][0089]
cbam卷积注意力模块引入的计算开销较小可忽略,并且相对比senet注意力模块更关注通道上的有用信息,能够帮助模型精细化分配图像信息和提高信息的利用率,有效帮助yolo检测算法提高检测精确度。
[0090]
中间层特征feat1输入至cbam卷积注意力模块后,输出的优化特征经过卷积层conv进行通道数调整,输出的特征层与第二拼接特征层进行特征堆叠,再通过一层e-elan层进行多分支特征堆叠,最后输出特征层p3,尺寸为80*80*128;特征层p3输入至串行的conv2d卷积层和上采样upsampling2d层,输出第三拼接特征层。
[0091]
中间层特征feat0输入至cbam卷积注意力模块后,输出的优化特征经过conv卷积层进行通道数调整,输出的特征层与第三拼接特征层进行特征结合,再通过一层e-elan层进行多分支特征堆叠,最后输出特征层p2,尺寸为160*160*64;特征层p2输出至多分类预测模块中,作为第一加强特征层。
[0092]
特征层p2并行输入至downsample层进行最大池化,输出的特征层会与特征层p3进行特征结合,并输入至e-elan层对特征进行多分支堆叠,获得特征层p3_out,特征层p3_out输出至多分类预测模块中,作为第二加强特征层。
[0093]
特征层p3_out并行输入至downsample层进行最大池化,输出的特征层会与特征层p4进行特征结合,并输入至e-elan层对特征进行多分支堆叠,获得特征层p4_out,特征层p4_out输出至多分类预测模块中,作为第三加强特征层。
[0094]
特征层p4_out输入至downsample层进行最大池化,输出的特征层会与特征层p5进行特征结合,并输入至e-elan层对特征进行多分支堆叠,获得特征层p5_out,特征层p5_out输出至多分类预测模块中,作为第四加强特征层。
[0095]
与现有算法不同的是,本发明将尺度为160*260*256的特征图引入到特征拼接中,提高特征的利用率,让浅层特征层能够学习多尺度下的物体特征,能够有效地解决小目标的漏检问题,帮助模型提高物体检测的精确度。
[0096]
具体地,本发明中的多分类检测网络包括repconv重参数化卷积层、第一yolo_head检测头、第二yolo_head检测头、第三yolo_head检测头和第四yolo_head检测头;repconv残差块是一个计划型的重数参化卷积层,能够将复杂的网络等效成一个普通的3*3卷积层,目的在于对不同的卷积层和bn层进行融合,形成一个堆叠的卷积块,融合的公式为:
[0097][0098]
其中,repconv重参化卷积层融合公式中的γ和β是两个需要训练学习的超参数,m是指输入的均值,ν是指输入的标准差,repconv重参数化卷积层能够在训练模型的时候引入特殊的残差网络结构,使得多分类检测网络在保证高预测性能的同时,降低整体网络的复杂程度。
[0099]
由加强特征提取网络输出的尺寸为160*160*64的第一强化特征层会输入至多分类器检测模块中的repconv重参数化卷积层,随即输入至第一yolo_head检测头;由加强特征提取网络输出的尺寸为80*80*128的第二强化特征层会输入至多分类器检测模块中的repconv重参数化卷积层,随即输入至第二yolo_head检测头;由加强特征提取网络输出的尺寸为40*40*256的第三强化特征层会输入至多分类器检测模块中的repconv重参数化卷积层,随即输入至第三yolo_head检测头;由加强特征提取网络输出的尺寸为20*20*512的第四强化特征层会输入至多分类器检测模块中的repconv重参化卷积层,随即输入至第四yolo_head检测头;检测头是一个1*1的卷积层。
[0100]
与现有算法不同的是,本发明添加了第四个检测头,目的在于让第一个检测头可以负责小尺度物体的检测,其余三个检测头维持原先算法的任务;在yolo系列算法中,增加检测头可以帮助模型更好的检测多尺度物体,提高模型预测的精确度,但也会引入一定的计算量和增加检测时间。
[0101]
由于本发明所使用的数据集是以vehicle-dataset车辆检测数据集为基础,因此所有强化特征层经过的四个yolo_head检测头的卷积层后,输出第一特征预测层、第二特征预测层、第三特征预测层和第四特征预测层,对应的尺寸分别为(160,160,76)、(80,80,76)、(40,40,76)和(20,20,76)。
[0102]
为了获得每个特征层中的预测框,需要对每个特征层进行解码,第一特征预测层的解码参数为(n,160,160,3,25),其中n指输入图片的尺寸,“160”和“160”表示需要将第一特征预测层分为160*160个特征点,而且每个特征点负责对应区域内的预测任务,“3”表示每个特征点包含预先设定好的先验框个数,“25”可拆解为“4+1+20”,“4”表示每一个先验框通过回归获取预测框的宽、高和中心偏移值,并通过sigmoid激活函数计算得到范围为0到1之间的置信度,“1”表示每一个特征点所负责的预测区域内是否包含物体,“20”表示每一个特征点所包含预测的物体种类个数。
[0103]
由于本发明中,第二特征预测层、第三特征预测层和第四特征预测层的算法流程与第一特征预测层的算法步骤中大致相同,只有每个特征层需要划分的特征点数有所差异,故不展开叙述。
[0104]
为了减少冗余预测框的数量和降低网络运算量,三个特征预测层计算得到的预测框还需要进行初筛、置信度得分对比和nms非极大值抑制。初筛操作指的是,需要将与先验框之间长宽差异较大的预测框去除,若先验框与预测框的长宽比例在0.25与4之间则保留该预测框,反之抛弃该预测框。
[0105]
初筛之后,每一个特征预测层会将置信度低于门限函数框的置信度的预测框舍弃,并在每一个物体种类中循环此操作,以保留每个特征点预测区域中同一种类且置信度得分最高的预测框。随后每一个特征预测层进行diou-nms非极大值抑制,需要将属于同一
物体种类的预测框置信度得分按降序排列,每轮循环取出置信度得分最大的预测框与同种类的其余预测框进行重叠程度计算,本发明选取diou边界框回归损失函数作为重叠程度指标,在iou计算基础上引入距离损失变量,若diou函数计算结果大于设定阈值则抛弃对应的预测框。diou计算公式如下:
[0106][0107][0108]
其中,sa表示当前置信度得分最大的预测框所占面积,sb表示真实框所占面积,b和b
gt
表示预测框与真实框的中心坐标,ρ表示两个中心坐标的欧氏距离,c表示预测框和真实框并集区域的对角线距离。
[0109]
与现有算法不同的是,本发明实施的非极大值抑制算法diou-nms可以有效去除多余的预测框,优化了两个框的中心距离,使模型收敛速度更快,并能够有效提高模型检测的平均准确性。
[0110]
步骤s3、基于马赛克数据增强后的数据集,训练改进后的yolo v7目标检测网络,获取平均精确度最高的权重文件,用于pytorch环境下的目标检测算法。
[0111]
本发明将收集到的数据集以9:1划分训练集和测试集,在pytorch环境下进行网络模型训练,利用gpu(单芯片处理器)加快训练速度,选择对应的预训练模型权重yolo v7_weights.pth文件,设置目标检测网络的图片输入尺寸为640*640,模型迭代次数为300次,使用sgd(随机梯度下降)优化器进行数据优化,通过网络的不断迭代计算损失loss函数值调整参数和正样本匹配,计算每轮迭代得到的map精确度,每10次迭代保存一次权重文件,迭代结束训练得到精确度最高的权重文件,用于改进后的yolo v7模型预测。map为每个类别检测精确度ap的平均值,ap指的是每个类别的检测精确度,两个指标计算公式如下:
[0112][0113][0114]
其中,ri指的是每个插值处对应的recall(召回率)值,p
interp
指的是每轮计算的精确度,k指的是检测类别的数目,在本发明中k为20。
[0115]
训练过程中,本发明使用了马赛克数据增强方式和mixup数据增强方式。默认情况下,本发明将挑选百分之七十的训练集进行马赛克数据增强和mixup数据增强,其余的百分之三十的数据不进行任何数据增强;马赛克数据增强是将随机选取的四张图片进行随即裁剪并拼接到新的图中,作为新的训练集,目的是为了丰富图片背景,让不同的物体在图片的不同位置出现,以提高模型的学习泛化性。mixup数据增强则是随机抽取两张图片,按照一定的比例进行拼接,训练得到的结果也会按照比例进行分配,是一种相对简易的数据增强方式。
[0116]
训练过程中,本发明中使用余弦退火学习率下降方法,学习曲线呈现先上升后下降的趋势,模型学习率的上升有助于模型平稳地搜索并逐渐搜索达到拟合状态。
[0117]
本发明中训练的先验框的宽高尺寸分别为(19,37)、(51,47)、(34,100)、(89,90)、(70,193)、(160,162)、(122,315)、(282,267)、(200,458)、(340,513)、(523,334)和(564,
574),其中前三个先验框对应融合特征层的尺寸为160*160的第一强化特征层,随后三个先验框对应融合特征层的尺寸为80*80的第二强化特征层,接着三个先验框对应融合特征层的尺寸为40*40的第三强化特征层,最后三个先验框对应融合特征层的尺寸为20*20的第四强化特征层;12个先验框尺寸是通过大数据样本在k-means(硬聚类算法)聚类下得到的,在大部分数据集中通用,能够保证了本发明检测算法的稳定性和有效性。
[0118]
通过上述设置,网络训练迭代结束后,获取训练过程中map精确度最高的权重文件,用于改进后yolo v7模型检测算法。
[0119]
本发明将yolov3、yolov5、原yolo v7算法和本发明提出的改进后的yolo v7算法在vehicle-dataset车辆检测数据集上进行精确值的均值map对比,实验结果如下表所示:
[0120][0121]
从对比结果可知,本发明提出的改进后的yolo v7算法所得到的map值最高,对比排名第二的原算法yolo v7高出4.13%,证明了本发明提供方案的有效性。
[0122]
步骤s4、利用改进后的yolo v7目标检测算法检测视频或图片,输出检测后的视频或图片。
[0123]
在目标检测算法领域中,高检测精确度是追求的目标;在本发明中,引入了多尺度检测模块、cbam卷积注意力模块、递归门控卷积gnconv、更替使用frelu激活函数和diou-nms非极大值抑制算法,这些组合有效提升了检测精确度、增强感受野和提高了图像信息的利用率,对小尺度目标有着显著提升的检测效果。
[0124]
以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
技术特征:
1.一种基于yolo v7改进的车辆检测算法,其特征在于,包括:步骤s1,获取vehicle-dataset车辆检测数据集,对获得的所有数据集进行马赛克数据增强扩充样本集;步骤s2,基于现有yolo v7算法的网络结构进行优化,得到改进的yolo v7的目标检测算法;步骤s3,基于所述马赛克数据增强后的数据集,训练改进后的yolo v7目标检测网络,获取平均精确度最高的权重文件,用于pytorch环境下的目标检测算法;步骤s4,利用所述改进后的yolo v7目标检测算法检测视频或图片,输出检测后的视频或图片。2.根据权利要求1所述的一种基于yolo v7改进的车辆检测算法,其特征在于,所述马赛克数据增强方式包括:在vehicle-dataset车辆检测数据集中随机抽取四张照片,将所述的四张图片进行图像处理,并且按照一定的方框区域进行随机拼接,获得新的样本图片,拼接过程中仍会保留原图像的label标签。3.根据权利要求1所述的一种基于yolo v7改进的车辆检测算法,其特征在于,所述改进的yolo v7的目标检测算法包括:主干特征提取网络、加强特征提取网络和多分类检测网络;所述主干特征提取网络由stem层、第一特征提取模块、第二特征提取模块、第三特征提取模块和第四特征提取模块组成,其中第一特征提取模块、第二特征提取模块、第三特征提取模块和第四特征提取模块分别输出160*160*256、80*80*512、40*40*1024和20*20*1024的特征图;所述加强特征提取网络整合了cbam卷积注意力模块,对来自所述主干特征提取网络的四个输入特征进行通道和空间维度上的特征优化,将尺寸为160*160*256、80*80*512、40*40*1024和20*20*1024的特征图进行卷积、特征堆叠和上采样,最后通过下采样和特征堆叠后,分别将尺寸为160*160*64的第一强化特征层、80*80*128的第二强化特征层、40*40*256的第三强化特征层和20*20*512的第四强化特征层输入所述多分类检测网络中;所述多分类检测网络包括repconv重参数化卷积层、第一yolo_head检测头、第二yolo_head检测头、第三yolo_head检测头和第四yolo_head检测头;所述第一强化特征层、第二强化特征层、第三强化特征层和第四强化特征层分别经过所述第一yolo_head检测头、第二yolo_head检测头、第三yolo_head检测头和第四yolo_head检测头的卷积层后,输出第一特征预测层、第二特征预测层、第三特征预测层和第四特征预测层。4.根据权利要求3所述的一种基于yolo v7改进的车辆检测算法,其特征在于,所述主干特征提取网络中,所述stem层包括:串行的三层conv卷积,每层conv由卷积层、bn层和frelu激活函数组成,输出一个二倍降采样的特征图;所述第一特征提取模块包括:一个conv卷积层和一个e-elan层,输出一张160*160*256的特征图作为上层特征feat0;所述第二特征提取模块包括:一个downsample层和一个e-elan层,输出一张80*80*512的特征图作为中间层特征feat1;所述第三特征提取模块包括:一个downsample层和一个e-elan层,输出一张40*40*
1024的特征图作为中下层特征feat2;所述第四特征提取模块包括:一个downsample层和一个e-elan层,输出一张20*20*1024的特征图,作为底层特征feat3。5.根据权利要求4所述的一种基于yolo v7改进的车辆检测算法,其特征在于,所述frelu激活函数公式如下:f(x
c,i,j
)=max(x
c,i,j
,t(x
c,i,j
));其中,x
c,i,j
表示第c个通道上对应二维空间位置为(i,j)的非线性激活函数frelu的输入像素值,函数t表示漏斗条件,表示以二维空间位置(i,j)为中心的参数化窗口,表示同一个通道中的共享系数。6.根据权利要求4所述的一种基于yolo v7改进的车辆检测算法,其特征在于,所述第二特征提取模块、所述第三特征提取模块和所述第四特征提取模块中的downsample层引入了递归门控卷积gnconv,将输入特征经过线性化投影层的切分后,通过深度卷积和点乘得到新的特征,最后经过线性投影得到交互输出特征,计算公式如下:p1=f(q0)
⊙
p0∈r
hw
×
c
;其中,x表示输入特征,表示通道中的线性化投影层,p为投影特征,函数f表示深度卷积层,y表示输出特征。7.根据权利要求4所述的一种基于yolo v7改进的车辆检测算法,其特征在于,所述加强特征提取网络以上层特征feat0、中间层特征feat1、中下层特征feat2和底层特征feat3作为特征输入,通过cbam卷积注意力模块进行特征优化,构建特征金字塔。8.根据权利要求3所述的一种基于yolo v7改进的车辆检测算法,其特征在于,所述多分类检测网络中引入了diou-nms非极大值抑制算法,在边界框损失函数中加入了中心距离损失。9.根据权利要求8所述的一种基于yolo v7改进的车辆检测算法,其特征在于,所述diou-nms非极大值抑制算法中的diou损失函数公式如下:nms非极大值抑制算法中的diou损失函数公式如下:其中,s
a
表示当前置信度得分最大的预测框所占面积,s
b
表示真实框所占面积,b和b
gt
表示预测框与真实框的中心坐标,ρ表示两个中心坐标的欧氏距离,c表示预测框和真实框并集区域的对角线距离;repconv残差块是一个计划型的重数参化卷积层,能够将复杂的网络等效成一个普通的3*3卷积层,目的在于对不同的卷积层和bn层进行融合,形成一个堆叠的卷积块,融合的公式为:
其中,所述repconv重参化卷积层融合公式中的γ和β是两个需要训练学习的超参数,m是指输入的均值,v是指输入的标准差。10.根据权利要求8所述的一种基于yolo v7改进的车辆检测算法,其特征在于,所述加强特征提取网络输出的所述第一强化特征层会输入至所述多分类器检测模块中的所述repconv重参数化卷积层,随即输入至所述第一yolo_head检测头;所述加强特征提取网络输出的所述第二强化特征层会输入至所述多分类器检测模块中的所述repconv重参数化卷积层,随即输入至所述第二yolo_head检测头;所述加强特征提取网络输出的所述第三强化特征层会输入至所述多分类器检测模块中的所述repconv重参数化卷积层,随即输入至所述第三yolo_head检测头;所述加强特征提取网络输出的所述第四强化特征层会输入至所述多分类器检测模块中的所述repconv重参化卷积层,随即输入至所述第四yolo_head检测头。
技术总结
本发明涉及目标检测技术领域,且公开了一种基于YOLO v7改进的车辆检测算法,包括:步骤S1,获取Vehicle-Dataset车辆检测数据集,对获得的所有数据集进行马赛克数据增强扩充样本集;步骤S2,基于现有YOLO v7算法的网络结构进行优化,得到改进的YOLO v7的目标检测算法;步骤S3,基于所述马赛克数据增强后的数据集,训练改进后的YOLO v7目标检测网络,获取平均精确度最高的权重文件,用于Pytorch环境下的目标检测算法;步骤S4,利用所述改进后的YOLO v7目标检测算法检测视频或图片,输出检测后的视频或图片。在保证检测速度的同时,解决小目标漏检、背景识别错误的问题。背景识别错误的问题。背景识别错误的问题。
技术研发人员:周家杰 卢俊颖 谢水生
受保护的技术使用者:广东工业大学
技术研发日:2023.03.09
技术公布日:2023/7/12
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种基坑支护加固装置的制作方法 下一篇:一种抗冲击效果好的铝型材的制作方法
