一种基于改进YOLOv8n的小目标检测方法
文献发布时间:2023-11-17 06:30:03
技术领域
本发明属于深度学习目标检测领域,涉及一种基于改进YOLOv8n的小目标检测方法。
背景技术
随着深度学习理论与实践的结合,目标检测技术也取得了快速的发展。目标检测任务的目的是获取图像中目标的位置与类型,目前已应用于目标跟踪等多个领域。然而在小目标检测中,由于小目标像素少、特征表达能力弱,导致其在特征提取时信息丢失严重,使得小目标检测面临着巨大的困难和挑战。
在快速发展的深度学习目标检测领域,从两阶段的RCNN系列算法到单阶段的YOLO系列算法、SSD系列算法,都相继产生了针对小目标检测的相关改进模型。文献《郭璠,张泳祥,唐琎等.YOLOv3-A:基于注意力机制的交通标志检测网络[J].通信学报,2021,第42卷(1):87-99.》在YOLOv3检测层引入通道注意力机制和基于语义分割引导的空间注意力机制,在TT100K交通标志数据集上,使mAP提升了3.5%,但该算法引入大量参数,速度仅为1.3frame/s。文献《张朝阳1,2,张上2,3,王恒涛2,3等.多尺度下遥感小目标多头注意力检测[J].计算机工程与应用,2023,第59卷(8):227-238.》在YOLOv5模型中增加小目标检测层、加入双向特征金字塔、添加SwinTransformer多头注意力机制模块、使用Varifocalloss,在NWPUVHR-10遥感目标数据集上,使mAP提升了3.05%,但该算法未曾考虑浅层特征已在下采样的时候有所损失。文献《郭磊1,王邱龙2,薛伟2等.基于改进YOLOv5的小目标检测算法[J].电子科技大学学报,2022,第51卷(2):251-258.》在YOLOv5基础上,使用Mosaic-8数据增强,通过增加一个浅层特征图、调整损失函数和目标框回归公式,在密集情景下的防护面具佩戴检测中,使mAP提升了4.55%,但该算法忽略了主干特征提取网络中深层语义信息的有效提取。
发明内容
1.发明目的:
本发明的目的在于,提出一种基于改进YOLOv8n的小目标检测方法,用于增强小目标在主干特征提取网络的特征表达能力,缓解小目标信息丢失严重的问题,加强网络对小目标的关注度,提高小目标的平均精度均值。
2.技术方案:
一种基于改进YOLOv8n的小目标检测方法,其特征在于包括以下步骤:
步骤1:构建小目标数据集,并对其进行训练集、验证集的划分;
步骤2:将YOLOv8n主干特征提取网络的前两层Conv下采样模块全部替换为过渡下采样模块;
步骤3:在YOLOv8n主干特征提取网络第二层的下采样操作前面插入上采样模块,在主干特征提取网络第五层的C2f模块后面插入下采样模块;
步骤4:将YOLOv8n主干特征提取网络深层的后两个C2f模块全部替换为改进的C3模块,改进的C3模块由原始C3模块通过替换其中的全部Bottleneck模块为改进的SwinTransformer-V2模块得到;
步骤5:利用步骤1中的训练集、验证集对改进的YOLOv8n模型进行训练、验证、评价。
根据一种基于改进YOLOv8n的小目标检测方法,其特征在于,步骤2中过渡下采样模块结构的构建方法是:在普通的卷积下采样Conv模块前面添加k=3×3、s=1、p=1的过渡卷积Conv模块,使输入通道数数量提前变化到输出通道数数量,在整合了更多小目标信息的基础上,再对特征图进行普通卷积下采样操作,可以缓解小目标信息的丢失。
根据一种基于改进YOLOv8n的小目标检测方法,其特征在于,步骤3中上采样模块和下采样模块分别使用近邻插值算法和普通卷积下采样Conv模块。
根据一种基于改进YOLOv8n的小目标检测方法,其特征在于,步骤4中改进SwinTransformer-V2模块的构建步骤是:
步骤4.1:在SwinTransformer-V2模块前端添加卷积核为1×1的通道错位卷积,并进行归一化和SiLU激活函数激活操作,使窗口间的信息提前得到交互,也引入了隐式位置编码的思想,使模块结构更加健壮;
步骤4.2:在SwinTransformer-V2模块输出端添加窗口通道注意力机制,通过乘以权重,使窗口中所有通道的重要程度得到体现,间接增加了窗口间的交互,其中窗口通道注意力机制的权重生成来自于SwinTransformer-V2模块中自注意力机制Attention模块的输出特征图,窗口通道注意力的权重生成模块可用下式表示:
z′
z″
z″′
其中,z
步骤4.3:在SwinTransformer-V2模块输出端添加卷积核为1×1的卷积Conv模块操作,以便与后续卷积输出进行Concat融合。
3.创新点:
与原始YOLOv8n模型相比较,本发明在网络浅层部分引入过渡下采样模块,在网络较浅层部分分别插入上采样模块和下采样模块,并且本发明将部分C2f模块替换为融合了改进SwinTransformer-V2模块的改进C3模块;
总体而言,本专利引入了如下方法和思想:
(1)针对输入图像由于连续下采样导致小目标信息丢失的问题,引入过渡下采样模块替代模型前两层连续下采样操作,使连续下采样被隔断,模型可以在下采样之前整合更多小目标特征,从而缓解小目标信息的丢失;
(2)针对模型较浅层下采样导致小目标信息丢失的问题,在模型较浅层部分前后分别插入上采样模块和下采样模块,使其间原本的小目标特征信息能够被放大提取,从而缓解小目标信息的丢失,其间的特征提取操作全部完成后,特征图的形状恢复至原本该有的大小,以便后续的特征提取任务不受影响;
(3)针对模型对小目标关注度不够导致小目标信息丢失的问题,将模型部分的C2f模块替换为融合了改进SwinTransformer-V2模块的改进C3模块,使模型对小目标的关注度增加。
4.有益效果:
本发明公开了一种基于改进YOLOv8n的小目标检测方法,通过本发明的过渡下采样模块、分别插入上采样模块和下采样模块有效缓解了小目标在浅层网络的信息丢失,通过本发明的融合了改进SwinTransformer-V2模块的改进C3模块,使小目标的被关注程度增加。
附图说明
图1为一种基于改进YOLOv8n的小目标检测方法流程图,首先构建小目标数据集,在YOLOv8n模型中引入过渡下采样模块,在YOLOv8n模型中插入上采样模块和下采样模块,在YOLOv8n模型中引入融合了改进SwinTransformer-V2模块的改进C3模块,最后利用小目标数据集对改进的YOLOv8n模型进行训练、验证、评价;
图2为原始YOLOv8n网络结构图,其主要包括主干特征提取网络的Backbone部分、用于特征融合的Neck部分和用于任务预测的Head部分;
图3为改进YOLOv8n网络结构图,其主要在原始YOLOv8n模型的基础上进行了三点改进,将模型前两层普通卷积下采样Conv模块替换为过渡下采样模块,在模型第二层下采样模块的前面和第五层C2f模块的后面分别插入上采样模块和下采样模块,将主干特征提取网络的后两个C2f模块替换为融合了改进SwinTransformer-V2模块的改进C3模块;
图4为过渡下采样模块结构图,其主要在普通卷积下采样Conv模块的前面增加了k=3×3、s=1、p=1的过度卷积Conv模块,使通道数数量提前变化为输出通道数数量;
图5为融合了改进SwinTransformer-V2模块的改进C3模块结构图,其主要是将原始C3模块中的Bottleneck模块全部替换为改进的SwinTransformer-V2模块;
图6为原始SwinTransformer-V2模块与改进SwinTransformer-V2模块结构对比图,在原始SwinTransformer-V2模块的基础上进行了三点改进,增加通道错位卷积,增加窗口通道注意力,增加后置过渡融合卷积;
图7为原始YOLOv8n模型与改进YOLOv8n模型在卷包车间小目标数据集上的训练损失曲线对比图,相比于原始YOLOv8n模型,改进YOLOv8n模型的损失收敛效果更好;
图8为原始YOLOv8n模型与改进YOLOv8n模型检测效果对比图,通过第一张图片的检测效果对比,可以看出原始YOLOv8n模型对手机这一类产生了部分误检,改进的YOLOv8n模型消除了这部分误检;通过第二张图片的检测效果对比,可以看出原始YOLOv8n模型对领口开这一类产生了部分漏检,改进的YOLOv8n模型消除了这部分漏检;通过第三张图片的检测效果对比,可以看出原始YOLOv8n模型在检测密集的物料盒时产生了一物多框的情况,改进的YOLOv8n模型消除了一物多框情况的发生。
具体实施方式
为了使本发明的目的、技术方案、创新点及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。
参见图1,本发明提供一种基于改进YOLOv8n的小目标检测方法,具体实施方式如下:
步骤1:构建卷包车间小目标数据集,具体操作如下:
定义板凳(BD)、物料盒(WLH)、领口未知(LKWZ)、领口闭(LKB)、领口开(LKK)、口罩未知(KZWZ)、口罩戴(KZD)、口罩未戴(KZWD)、长头发(CTF)、手机(SJ)共十个卷包车间小目标类别,从摄像头捕获的卷包车间图像中筛选出500张包含小目标类别的有效图像,对有效图像进行训练集、验证集的划分,划分比例为1:1,利用labelImg标注工具对训练集、验证集进行类别标注;
步骤2:将YOLOv8n主干特征提取网络的前两层Conv下采样模块全部替换为过渡下采样模块,过渡下采样模块参见图4,其构建方法是:在普通的卷积下采样Conv模块前面添加k=3×3、s=1、p=1的过渡卷积Conv模块,使输入通道数数量提前变化到输出通道数数量;
步骤3:在YOLOv8n主干特征提取网络第二层的下采样操作前面插入上采样模块,在主干特征提取网络第五层的C2f模块后面插入下采样模块,其中上采样模块采用近邻插值算法,下采样模块采用普通卷积下采样Conv模块;
步骤4:将YOLOv8n主干特征提取网络深层的后两个C2f模块全部替换为改进的C3模块,改进的C3模块由原始C3模块通过替换其中的全部Bottleneck模块为改进的SwinTransformer-V2模块得到,参见图6,改进SwinTransformer-V2模块的构建步骤是:
步骤4.1:在SwinTransformer-V2模块前端添加卷积核为1×1的通道错位卷积,并进行归一化和SiLU激活函数激活操作,其中,通道错位卷积通过将输入特征图的通道均分为四份,分别向宽高四个不同的方向进行偏移,偏移量分别为对应SwinTransformer-V2模块中窗口宽高的一半,最后再对特征图进行普通卷积Conv模块操作;
步骤4.2:在SwinTransformer-V2模块输出端添加窗口通道注意力机制,通过乘以权重,使窗口中所有通道的重要程度得到体现,间接增加了窗口间的交互,其中窗口通道注意力机制的权重生成来自于SwinTransformer-V2模块中自注意力机制Attention模块的输出特征图,窗口通道注意力的权重生成模块可用下式表示:
z′
z″
z″′
其中,z
步骤4.3:在SwinTransformer-V2模块输出端添加卷积核为1×1的卷积Conv模块操作,其并不改变特征图的输出通道数;
步骤5:利用步骤1中的训练集、验证集对改进的YOLOv8n模型进行训练、验证、评价:
在Linux平台Red Hat 4.8.5-28上,通过Python3.6.6,应用深度学习框架torch1.7.1+cu101搭建网络模型,设置训练Epoch为600、Batchsize为8,其它采用默认YOLOv8n参数设置,利用卷包车间小目标数据集分别对原始YOLOv8n模型和改进的YOLOv8n模型进行训练、验证,相对于原始YOLOv8n模型,改进的YOLOv8n模型mAP0.5:0.95提升了4.6个百分点,并且能够满足实时检测要求。