YOLO11改进-模块-引入核选择融合注意力KSFA 增大感受野,提高多尺度 小目标检测能力

        高光谱图像包含丰富的空间 - 光谱信息,在分类任务中具有重要价值。然而,现有 Transformer 模型在处理 HSI 场景时面临挑战,固定感受野无法适应不同 HSI 对象所需的有效上下文尺度,影响分类精度。例如,不同土地覆盖类型在 HSI 中呈现出不同的空间和光谱特征,需要不同大小的感受野来准确识别 。

上面是原模型,下面是改进模型

改进后模型

1. Kernel Selective Fusion Attention (KSFA)介绍 

        KSFA 通过一系列操作实现对多尺度特征的选择和融合,以适应不同土地覆盖类型的上下文尺度需求。首先,利用扩张深度卷积构建大感受野获取特征,再通过空间 - 光谱选择机制,根据不同土地覆盖类型的特点,自适应地融合合适感受野大小的特征。在空间选择方面,通过对不同感受野卷积核提取的特征进行拼接、池化和卷积操作,生成空间选择掩码;在光谱选择方面,利用全局平均池化和全连接层生成光谱注意力特征,再通过 softmax 操作得到光谱选择掩码,最终通过矩阵乘法得到空间 - 光谱选择权重,对特征图进行加权融合 。

从提供的图片来看,调制融合模块KSFA模块主要包含以下几个部分:

        KSFA 主要由两部分组成。一是通过两个解耦的深度卷积(DwConv)对输入特征进行处理,使用不同大小的卷积核(如 3×3 和 5×5)和扩张率(如 d = 1 和 d = 2),并经过 1×1 卷积层整合通道信息和统一维度,得到不同感受野的上下文特征;二是空间 - 光谱选择机制,包括空间选择和光谱选择。空间选择通过对不同感受野特征进行拼接、池化、卷积和激活操作生成空间选择掩码;光谱选择通过全局平均池化、全连接层和 softmax 操作生成光谱选择掩码,最终将两者结合得到空间 - 光谱选择权重,对特征图加权融合得到输出 。

2. YOLOv11与调制融合模块MFM的结合           

        将 KSFA 添加到 YOLOv11 的 C3K2 模块时,先在C3K2模块的卷积层后接入 KSFA。利用 KSFA 的多尺度卷积和空间 - 光谱选择机制,自适应调整感受野,融合不同尺度特征,增强C3K2 模块对不同尺寸目标特征的捕捉能力,提升 YOLOv11在复杂场景目标检测中的性能。

3. 调制融合模块MFM代码部分

视频讲解:

YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve · GitHub

用一篇论文教您如何使用YOLOv11改进模块写一篇1、2区论文_哔哩哔哩_bilibili

YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili

YOLOv11全部代码,现有几十种改进机制。

 4. 调制融合模块MFM引入到YOLOv11中

第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_model路径下,如下图所示。

                     

第二:在task.py中导入

 ​​​                  

第三:在YOLOv11\ultralytics\nn\tasks.py中的模型配置部分下面代码

   ​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​    ​​​​​​​ ​​​​​​​  ​​​​​​​​​​​​​​​​​​​​​​​​​​​​         

第四:将模型配置文件复制到YOLOV11.YAMY文件中

     ​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​          

     第五:运行成功

from sympy import false

from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld

if __name__=="__main__":

    # 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
    model = YOLO(r"E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\models\11\yolo11_KSFA.yamy")\
        .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt')  # build from YAML and transfer weights

    results = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\datasets\VOC_my.yaml',
                          epochs=300,
                          imgsz=640,
                          batch=64,
                          # cache = False,
                          # single_cls = False,  # 是否是单类别检测
                          # workers = 0,
                          # resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',
                          amp = True
                          )
### YOLOv11 小目标检测改进技术 对于小目标检测YOLO系列算法一直在不断优化。在早期版本中,如YOLOv2和YOLOv3,在处理小目标时遇到了挑战,主要由于cell预测机制的影响[^1]。 为了提升小目标检测性能,YOLOv11引入了几项关键技术: #### 1. 多尺度特征融合 通过结合不同层次的卷积层输出,可以有效增强网络对多尺寸对象的理解能力。特别是针对小目标,低级特征图提供了更丰富的细节信息,有助于提高定位精度。 ```python def fuse_multi_scale_features(features): fused_feature = [] for i in range(len(features)): upsampled = tf.image.resize_images( features[i], (features[-1].shape[1]*2**(len(features)-i-1), features[-1].shape[2]*2**(len(features)-i-1)) ) fused_feature.append(upsampled) return tf.concat(fused_feature, axis=-1) ``` #### 2. 增加锚框数量与调整策略 适当增加预设锚框的数量并合理设置其比例尺,能够更好地匹配各种大小的目标形状分布情况。此外,动态调整锚框参数也有助于适应不同的数据集特点。 #### 3. 引入注意力机制 利用通道注意(Channel Attention)或空间注意(Spatial Attention),可以使模型更加关注图像中的重要区域,从而小目标识别效果。 ```python import tensorflow as tf class SpatialAttention(tf.keras.layers.Layer): def __init__(self, kernel_size=7): super(SpatialAttention, self).__init__() assert kernel_size in (3, 7), 'kernel size must be 3 or 7' padding = 3 if kernel_size == 7 else 1 self.conv1 = tf.keras.layers.Conv2D(1, kernel_size, padding='same', activation=None) def call(self, inputs): avg_out = tf.reduce_mean(inputs, axis=[3]) max_out = tf.reduce_max(inputs, axis=[3]) out = tf.stack([avg_out, max_out], axis=-1) out = self.conv1(out) scale = tf.sigmoid(out) return inputs * scale ``` 这些改进措施共同作用下,使得YOLOv11相比之前版本显著提升了小目标检测的效果[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值