复杂场景中,小目标的特征容易被弱化,进而导致漏检或检测结果不准确。其特征融合不够精细,多尺度和多维度的特征未能充分互补,这对复杂形状目标的检测产生了不利影响。同时,它对复杂背景的鲁棒性也不够,复杂的背景容易对检测造成干扰。而添加 MSAA 模块可能会带来一些改进。该模块空间细化路径中的多尺度融合能够保留小目标的特征,通道聚合路径可以增强对与目标相关通道特征的关注度。此外,其空间和通道的多尺度融合能够提升特征融合的效果,还可以增强对复杂背景的处理能力,减少背景干扰。
1. 多尺度注意力聚合(MSAA)模块介绍
对来自backbone的特征进行细化处理。通过空间和通道两个路径的操作,增强了空间和通道方面的特征信息,使得输出的特征图在空间和通道维度上都更加优质。
1. 在空间细化路径中,通过对不同核大小的卷积进行求和以及一系列的空间特征聚合操作,实现了多尺度空间信息的融合。
2. 在通道聚合路径中,通过全局平均池化、卷积和激活等操作生成通道注意力图,并与空间细化后的图相结合,实现了通道维度上的多尺度信息融合。
2. 接下来,我们将详细介绍如何将MSAA集成到 YOLOv8 模型中。
这是我的GitHub代码:tgf123/YOLOv8_improve (github.com)
这是改进讲解:YOLOv8模型改进 第十五讲 添加多尺度注意力聚合(MSAA)模块 提升多尺度目标检测_哔哩哔哩_bilibili
2.1 如何添加
1. 首先,在我上传的代码中yolov8_improve中找到MSAA.py代码部分,它包含两个部分一个是MSAA.py的核心代码,一个是yolov8模型的配置文件。
2. 然后我们在modules文件夹下面创建MSAA.py文件,然后将MSAA的核心代码放入其中
3. 在 task.py文件中导入MSAA
from ultralytics.nn.modules.MSAA import MSAA
4. 然后将 MSAA添加到下面当中
5. 最后将配置文件复制到下面文件夹下
6. 运行代码跑通
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
if __name__=="__main__":
# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO(r"D:\bilibili\model\ultralytics-main\ultralytics\cfg\models\v8\yolov8_MSAA.yaml")\
.load(r'D:\bilibili\model\ultralytics-main\tests\yolov8n.pt') # build from YAML and transfer weights
results = model.train(data=r'D:\bilibili\model\ultralytics-main\ultralytics\cfg\datasets\VOC_my.yaml',
epochs=100, imgsz=640, batch=8)