【YOLOv8改进 - 注意力机制】LS-YOLO MSFE:新颖的多尺度特征提取模块 | 小目标/遥感

简介: YOLO系列目标检测模型的新发展,LS-YOLO专为滑坡检测设计。它使用多尺度滑坡数据集(MSLD)和多尺度特征提取(MSFE)模块,结合ECA注意力,提升定位精度。通过改进的解耦头,利用膨胀卷积增强上下文信息。在滑坡检测任务中,LS-YOLO相对于YOLOv5s的AP提高了2.18%,达到97.06%。论文和代码已开源。

YOLO目标检测创新改进与实战案例专栏

专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO基础解析+创新改进+实战案例

介绍

摘要

摘要——滑坡是一种广泛且具有毁灭性的自然灾害,对人类生命、安全和自然资产构成严重威胁。研究利用遥感影像进行滑坡精准检测的高效方法具有重要的学术和实际意义。本文提出了一种新颖且有效的滑坡检测模型LS-YOLO,利用遥感影像进行滑坡检测。我们首先构建了一个多尺度滑坡数据集(MSLD),并在数据增强中引入随机种子以增加数据的鲁棒性。考虑到遥感影像中滑坡的多尺度特性,设计了基于高效通道注意力、平均池化和空间可分离卷积的多尺度特征提取模块。为了增加模型的感受野,在解耦头中采用了膨胀卷积。具体而言,将由膨胀卷积组成的上下文增强模块添加到解耦头回归任务分支中,然后用改进的解耦头替换YOLOv5s中的耦合头。大量实验表明,我们提出的模型在多尺度滑坡检测方面具有高性能,优于其他目标检测模型(faster RCNN、SSD、EfficientDet-D0、YOLOv5s、YOLOv7和YOLOX)。与基准模型YOLOv5s相比,LS-YOLO在滑坡检测中的AP提升了2.18%,达到了97.06%。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

LS-YOLO

  1. 多尺度滑坡数据集(MSLD)

    • 构建了一个包含大量滑坡样本的MSLD,具有高度的类内变化、广泛的滑坡尺寸范围和复杂的背景,为模型训练提供了丰富的数据资源。
  2. 多尺度特征提取(MSFE)模块

    • MSFE模块包括Efficient Channel Attention(ECA)、平均池化和空间可分离卷积,用于充分提取滑坡特征信息。
    • ECA部分引入了注意力机制,通过全局平均池化聚合特征并自适应地确定核大小,以增强模型对重要特征的关注。
  3. 改进的解耦头

    • LS-YOLO通过引入扩张卷积来改进解耦头,增加模型的感受野,提高滑坡定位的准确性。
    • 扩张卷积有助于捕获多尺度上下文信息,提升模型在滑坡位置定位方面的精度。
  4. 整体框架

    • LS-YOLO的整体框架结合了YOLOv5s的通用目标检测能力,并针对滑坡检测任务进行了优化和改进。
    • 模型在滑坡检测中利用MSFE模块提取多尺度特征,同时通过改进的解耦头提高了滑坡位置的准确性。

    MSFE

MSFE(Multiscale Feature Extraction)模块是论文中提出的一个关键技术,通过五个并行分支从多个感受野充分提取滑坡特征。

  1. 模块结构
    • MSFE模块包含两个分支:
      • 第一个分支是残差连接,有助于减轻梯度消失并加快模型训练速度。
      • 第二个分支包括Efficient Channel Attention(ECA)、平均池化和空间可分离卷积,用于充分提取滑坡特征信息。
  2. Efficient Channel Attention(ECA)
    • ECA是一种通用的插入式块,用于增强CNN的性能。
    • ECA包含一个挤压模块,用于压缩全局空间信息,以及一个激励模块,用于实现通道间的交互。
    • ECA通过全局平均池化聚合特征,自适应确定核大小k。

      核心代码

import torch
import torch.nn as nn

# MSFE模块定义
class MSFE(nn.Module):

    def __init__(self, c_in, c_out):
        super(MSFE, self).__init__()

        c_ = int(c_in // 4)  # 计算每个分支的输出通道数

        self.ECA = ECA(c_in, k_size=5)  # ECA模块
        self.branch1 = Conv(c_in, c_, 1, 1)  # 分支1,1x1卷积

        # 分支2,3x3平均池化
        self.branch2 = nn.AvgPool2d(kernel_size=3, stride=1, padding=1)

        # 分支3,串联两个卷积层
        self.branch3 = nn.Sequential(
            Conv(c_in, c_, (3, 1), s=1, p=(1, 0)),  # 3x1卷积
            Conv(c_, c_, (1, 3), s=1, p=(0, 1))  # 1x3卷积
        )

        # 分支4,串联四个卷积层
        self.branch4 = nn.Sequential(
            Conv(c_in, c_, (3, 1), s=1, p=(1, 0)),  # 3x1卷积
            Conv(c_, c_, (1, 3), s=1, p=(0, 1)),  # 1x3卷积
            Conv(c_, c_, (3, 1), s=1, p=(1, 0)),  # 3x1卷积
            Conv(c_, c_, (1, 3), s=1, p=(0, 1))  # 1x3卷积
        )

        # 分支5,串联四个卷积层
        self.branch5 = nn.Sequential(
            Conv(c_in, c_, (5, 1), s=1, p=(2, 0)),  # 5x1卷积
            Conv(c_, c_, (1, 5), s=1, p=(0, 2)),  # 1x5卷积
            Conv(c_, c_, (5, 1), s=1, p=(2, 0)),  # 5x1卷积
            Conv(c_, c_, (1, 5), s=1, p=(0, 2))  # 1x5卷积
        )

        self.conv = Conv(c_in * 2, c_out, k=1)  # 1x1卷积,用于整合所有分支的输出

    def forward(self, x):
        x1 = self.ECA(x)  # 通过ECA模块
        y1 = self.branch1(x1)  # 分支1的输出
        y2 = self.branch2(x1)  # 分支2的输出
        y3 = self.branch3(x1)  # 分支3的输出
        y4 = self.branch4(x1)  # 分支4的输出
        y5 = self.branch5(x1)  # 分支5的输出

        # 将所有分支的输出在通道维度上拼接,并通过1x1卷积层,然后与输入x相加
        out = x + self.conv(torch.cat([y1, y2, y3, y4, y5], 1))
        return out

task与yaml配置

详见:https://blog.csdn.net/shangyanaf/article/details/140092794

相关文章
|
7月前
|
机器学习/深度学习 Go 计算机视觉
YOLOv8改进 | Neck篇 | 利用ASF-YOLO改进特征融合层(适用于分割和目标检测)
YOLOv8改进 | Neck篇 | 利用ASF-YOLO改进特征融合层(适用于分割和目标检测)
489 1
|
7月前
|
机器学习/深度学习
YOLOv8改进 | 注意力篇 | ACmix自注意力与卷积混合模型(提高FPS+检测效率)
YOLOv8改进 | 注意力篇 | ACmix自注意力与卷积混合模型(提高FPS+检测效率)
349 0
|
机器学习/深度学习 算法 数据挖掘
即插即用 | 通过自适应聚类Transformer来提升DERT目标检测器的速度(文末附论文下载)(一)
即插即用 | 通过自适应聚类Transformer来提升DERT目标检测器的速度(文末附论文下载)(一)
861 0
|
2月前
|
机器学习/深度学习 数据可视化 测试技术
YOLO11实战:新颖的多尺度卷积注意力(MSCA)加在网络不同位置的涨点情况 | 创新点如何在自己数据集上高效涨点,解决不涨点掉点等问题
本文探讨了创新点在自定义数据集上表现不稳定的问题,分析了不同数据集和网络位置对创新效果的影响。通过在YOLO11的不同位置引入MSCAAttention模块,展示了三种不同的改进方案及其效果。实验结果显示,改进方案在mAP50指标上分别提升了至0.788、0.792和0.775。建议多尝试不同配置,找到最适合特定数据集的解决方案。
386 0
|
5月前
|
编解码 Go 文件存储
【YOLOv8改进 - 特征融合NECK】 DAMO-YOLO之RepGFPN :实时目标检测的创新型特征金字塔网络
【YOLOv8改进 - 特征融合NECK】 DAMO-YOLO之RepGFPN :实时目标检测的创新型特征金字塔网络
|
7月前
|
编解码 算法 计算机视觉
YOLO特征融合的原理是怎样的?
YOLO特征融合的原理是怎样的?
|
5月前
|
机器学习/深度学习 计算机视觉
YOLOv10实战:红外小目标实战 | 多头检测器提升小目标检测精度
本文改进: 在进行目标检测时,小目标会出现漏检或检测效果不佳等问题。YOLOv10有3个检测头,能够多尺度对目标进行检测,但对微小目标检测可能存在检测能力不佳的现象,因此添加一个微小物体的检测头,能够大量涨点,map提升明显; 多头检测器提升小目标检测精度,1)mAP50从0.666提升至0.677
958 3
|
6月前
|
计算机视觉
【YOLOv8改进 - 特征融合NECK】 HS-FPN :用于处理多尺度特征融合的网络结构,降低参数
MFDS-DETR是针对白细胞检测的创新方法,它通过HS-FPN和可变形自注意力解决规模差异和特征稀缺问题。HS-FPN利用通道注意力模块增强特征表达,改善多尺度挑战。代码和数据集可在给定链接获取。此方法在WBCDD、LISC和BCCD数据集上表现优越,证明了其有效性和通用性。YOLO系列文章提供了更多目标检测改进和实战案例。
|
7月前
|
编解码 计算机视觉 网络架构
【YOLOv8改进】BiFPN:加权双向特征金字塔网络 (论文笔记+引入代码)
该专栏深入研究了YOLO目标检测的神经网络架构优化,提出了加权双向特征金字塔网络(BiFPN)和复合缩放方法,以提升模型效率。BiFPN通过双向跨尺度连接和加权融合增强信息传递,同时具有自适应的网络拓扑结构。结合EfficientNet,构建了EfficientDet系列检测器,在效率和准确性上超越先前技术。此外,介绍了YOLOv8如何引入MPDIoU并应用BiFPN进行可学习权重的特征融合。更多详情可参考提供的专栏链接。
|
7月前
|
机器学习/深度学习 编解码 算法
【论文解析】CFPNet:用于目标检测的集中特征金字塔
【论文解析】CFPNet:用于目标检测的集中特征金字塔
444 0
【论文解析】CFPNet:用于目标检测的集中特征金字塔
下一篇
无影云桌面