首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >SABR-YOLO:一种用于遥感图像输电塔检测的轻量级检测器,2026年遥感领域最新成果

SABR-YOLO:一种用于遥感图像输电塔检测的轻量级检测器,2026年遥感领域最新成果

原创
作者头像
AI小怪兽
发布2026-05-28 15:31:13
发布2026-05-28 15:31:13
650
举报
文章被收录于专栏:毕业设计毕业设计YOLO大作战

本文核心贡献如下:

  • 构建TTOD数据集:首个面向输电塔形态分类的遥感数据集,含9类塔型、9360张图像,覆盖0.1-0.4m分辨率,最大尺寸跨度超600像素,填补多尺度输电塔检测数据空白。
  • 提出SECBAM注意力模块:融合MA-ECA双池化通道注意力和SECA索贝尔增强坐标注意力,分别强化小目标语义特征与大目标边缘纹理,提升低分辨率下特征表示能力。
  • 设计BRFPN特征金字塔:通过动态分支重加权机制替代固定通道加权,在分支维度自适应融合多尺度特征,增强跨层级信息交互且不破坏分支内一致性。
  • 实现轻量化高精度检测:参数量减少50%,推理速度提升,在RSOD、RS-STOD、TTOD上mAP50分别达96.5%、87.2%、75.6%,抗噪性优于基线。

博主简介

AI小怪兽 | 计算机视觉布道者 | 视觉检测领域创新者

深耕计算机视觉与深度学习领域,专注于视觉检测前沿技术的探索与突破。长期致力于YOLO系列算法的结构性创新、性能极限优化与工业级落地实践,旨在打通从学术研究到产业应用的最后一公里。

🚀 核心专长与技术创新

  • YOLO算法结构性创新:于CSDN平台原创发布《YOLOv13魔术师》、《YOLOv12魔术师》等全系列深度专栏。系统性提出并开源了多项原创自研模块,在模型轻量化设计、多维度注意力机制融合、特征金字塔重构等关键方向完成了一系列突破性实践,为行业提供了具备高参考价值的技术路径与完整解决方案。
  • 技术生态建设与知识传播:独立运营 “计算机视觉大作战” 公众号(粉丝1.6万),成功构建高质量的技术交流社群。致力于将复杂算法转化为通俗易懂的解读与可复现的工程代码,显著降低了计算机视觉的技术入门门槛。

🏆 行业影响力与商业实践

  • 荣获腾讯云年度影响力作者创作之星奖项,内容质量与专业性获行业权威平台认证。
  • 全网累计拥有 7万+ 垂直领域技术受众,专栏文章总阅读量突破百万,在目标检测领域形成了广泛的学术与工业影响力。
  • 具备丰富的企业级项目交付经验,曾为工业视觉检测、智慧城市安防等多个关键领域提供定制化的算法模型与解决方案,驱动业务智能化升级。

💡 未来方向与使命

秉持 “让每一行代码都有温度” 的技术理念,未来将持续聚焦于实时检测、语义分割及工业缺陷检测的商业化闭环等核心方向。愿与业界同仁协同创新,共同推动技术边界,以坚实的技术能力赋能实体经济与行业变革。

0.原理介绍

论文:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=11367292

摘要:遥感图像中的输电塔检测面临着显著挑战,其原因在于特征表示不足以及目标尺寸变化显著,特别是在低空间分辨率下,鲁棒的特征提取与融合能力至关重要。为解决这些局限性,我们提出了融合索贝尔注意力与动态分支重加权的YOLO检测器,一种融合了两个创新轻量级模块的高效检测器:索贝尔增强卷积块注意力模块,通过边缘感知特征学习增强局部感知能力;以及分支重加权特征金字塔网络,以最小计算开销改进多尺度特征融合。为验证SABR-YOLO的有效性,我们构建了一个新的输电塔目标检测数据集,该数据集包含各种类型、形状和空间分辨率的输电塔。为评估其在其他多尺度目标检测任务上的性能,我们在遥感目标检测和遥感超小目标检测公开数据集上进行了实验。实验结果表明,SABR-YOLO在RSOD数据集上达到0.965的mAP50,在RS-STOD数据集上达到0.872,在TTOD数据集上达到0.756,优于多个基线模型和最先进的方法。

代码如下:

代码语言:py
复制
"""
SABR-YOLO: 用于遥感图像电力塔检测的轻量级检测器
完整代码整合:SECBAM注意力 + C2f_SECBAM + BRFPN + SABR-YOLO
"""

import torch
import torch.nn as nn
import torch.nn.functional as F
from ultralytics import YOLO
from ultralytics.nn.modules import Conv, Bottleneck

# ========== 1. SECBAM 注意力模块 ==========
class SECBAM(nn.Module):
    """
    Sobel-Enhanced Convolutional Block Attention Module (SECBAM)
    融合 MA-ECA(多尺度高效通道注意力)+ SECA(索贝尔增强坐标注意力)
    """
    def __init__(self, channels, reduction=16):
        super().__init__()
        # 分支1:MA-ECA 多尺度高效通道注意力
        self.conv1 = nn.Conv2d(channels, channels, 3, padding=1, groups=channels)
        self.conv3 = nn.Conv2d(channels, channels, 5, padding=2, groups=channels)
        self.gap = nn.AdaptiveAvgPool2d(1)
        self.eca_conv = nn.Conv1d(1, 1, kernel_size=3, padding=1, bias=False)

        # 分支2:SECA 索贝尔增强坐标注意力
        # 定义 Sobel 核(固定权重)
        sobel_kernel_x = torch.tensor([[[-1,0,1],[-2,0,2],[-1,0,1]]], dtype=torch.float32)
        sobel_kernel_y = torch.tensor([[[-1,-2,-1],[0,0,0],[1,2,1]]], dtype=torch.float32)
        self.register_buffer('sobel_kernel_x', sobel_kernel_x.unsqueeze(0).repeat(channels,1,1,1))
        self.register_buffer('sobel_kernel_y', sobel_kernel_y.unsqueeze(0).repeat(channels,1,1,1))

        # 坐标注意力 (CoordAttention)
        self.ca_h = nn.Sequential(
            nn.AdaptiveAvgPool2d((None, 1)),
            nn.Conv2d(channels, max(8, channels//reduction), 1),
            nn.ReLU(),
            nn.Conv2d(max(8, channels//reduction), channels, 1),
            nn.Sigmoid()
        )
        self.ca_w = nn.Sequential(
            nn.AdaptiveAvgPool2d((1, None)),
            nn.Conv2d(channels, max(8, channels//reduction), 1),
            nn.ReLU(),
            nn.Conv2d(max(8, channels//reduction), channels, 1),
            nn.Sigmoid()
        )
        # 融合权重
        self.fusion_weight = nn.Parameter(torch.ones(1) * 0.5)

    def forward(self, x):
        # 分支1:MA-ECA
        x1_m = self.conv1(x)
        x3_m = self.conv3(x)
        ma_out = x1_m + x3_m
        eca = self.gap(ma_out).squeeze(-1).transpose(-1, -2)
        eca_weight = self.eca_conv(eca.unsqueeze(1)).squeeze(1).transpose(-1, -2).unsqueeze(-1)
        eca_out = ma_out * eca_weight.expand_as(ma_out)

        # 分支2:SECA 索贝尔增强 + 坐标注意力
        sobel_x = F.conv2d(x, self.sobel_kernel_x, padding=1, groups=x.shape[1])
        sobel_y = F.conv2d(x, self.sobel_kernel_y, padding=1, groups=x.shape[1])
        edge = torch.sqrt(sobel_x**2 + sobel_y**2 + 1e-6)
        edge_enhanced = x + 0.3 * edge
        h_att = self.ca_h(edge_enhanced)
        w_att = self.ca_w(edge_enhanced)
        seca_out = edge_enhanced * h_att * w_att

        # 动态融合
        alpha = torch.sigmoid(self.fusion_weight)
        out = alpha * eca_out + (1 - alpha) * seca_out
        return out


# ========== 2. 带 SECBAM 的 C2f 模块 ==========
class C2f_SECBAM(nn.Module):
    """C2f with SECBAM Attention:在 Bottleneck 路径后融入 SECBAM"""
    def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5):
        super().__init__()
        self.c = int(c2 * e)
        self.cv1 = Conv(c1, 2 * self.c, 1, 1)
        self.cv2 = Conv((2 + n) * self.c, c2, 1)
        self.m = nn.ModuleList(Bottleneck(self.c, self.c, shortcut, g, k=((3,3),(3,3)), e=1.0) for _ in range(n))
        self.secbam = SECBAM((2 + n) * self.c)

    def forward(self, x):
        y = list(self.cv1(x).chunk(2, 1))
        y.extend(m(y[-1]) for m in self.m)
        concat = torch.cat(y, 1)
        attended = self.secbam(concat)
        return self.cv2(attended)


# ========== 3. BRFPN(分支重加权特征金字塔)==========
class BranchReweightedFPN(nn.Module):
    """Branch Reweighting FPN (BRFPN) 动态分支重加权机制"""
    def __init__(self, in_channels_list=[256, 512, 1024], out_channels=256):
        super().__init__()
        self.lateral_convs = nn.ModuleList()
        self.fpn_convs = nn.ModuleList()
        for in_c in in_channels_list:
            self.lateral_convs.append(nn.Conv2d(in_c, out_channels, 1))
            self.fpn_convs.append(nn.Conv2d(out_channels, out_channels, 3, padding=1))

        # 分支权重生成器
        self.branch_weights = nn.ModuleList()
        for _ in range(len(in_channels_list)):
            self.branch_weights.append(
                nn.Sequential(nn.AdaptiveAvgPool2d(1), nn.Conv2d(out_channels, 1, 1), nn.Sigmoid())
            )

    def forward(self, xs):
        laterals = [conv(x) for conv, x in zip(self.lateral_convs, xs)]
        # 自上而下融合 + 动态分支重加权
        out = [laterals[-1]]
        for i in range(len(laterals)-2, -1, -1):
            up = F.interpolate(out[-1], size=laterals[i].shape[2:], mode='nearest')
            weight = self.branch_weights[i](laterals[i])
            fused = laterals[i] + weight * up
            out.append(self.fpn_convs[i](fused))
        return list(reversed(out))


# ========== 4. 完整 SABR-YOLO 模型 ==========
class SABR_YOLO(nn.Module):
    """SABR-YOLO 主干网络:YOLOv8 + SECBAM + BRFPN"""
    def __init__(self, base_model_path='yolov8n.pt'):
        super().__init__()
        # 加载 YOLOv8 预训练模型
        base = YOLO(base_model_path).model.model
        # 提取 Backbone 各部分
        self.stem = base[:4]          # 前4层
        self.stage1 = base[4:6]       # 后续两层
        self.stage2 = base[6:7]
        self.stage3 = base[7:8]
        # 替换 C2f 为 C2f_SECBAM(输入128,输出256,可根据实际调整)
        self.secbam_c2f = C2f_SECBAM(128, 256, n=1)
        # BRFPN(此处简化,使用两尺度特征,实际可按论文调整)
        self.brfpn = BranchReweightedFPN(in_channels_list=[256, 512], out_channels=256)
        # 检测头(直接复用基线的检测头,需适配输入维度)
        self.detect = base[-1]

    def forward(self, x):
        # Backbone 前向
        x = self.stem(x)
        x = self.stage1(x)
        x = self.stage2(x)
        x = self.stage3(x)
        x = self.secbam_c2f(x)
        # BRFPN 融合(示例用两个相同尺度的特征)
        multi_feats = self.brfpn([x, x])
        # 检测头输出
        return self.detect(multi_feats)


# ========== 5. 测试代码 ==========
if __name__ == "__main__":
    # 测试模型前向传播
    model = SABR_YOLO()
    dummy_input = torch.randn(1, 3, 640, 640)
    with torch.no_grad():
        outputs = model(dummy_input)
    print("模型前向测试成功!输出尺寸:", [o.shape for o in outputs])

I. 引言

随着光学遥感技术和人工智能在应用领域的飞速发展,遥感图像中的目标检测研究取得了显著增长,特别是在交通监控、搜索救援、安防等领域[1]-[6]。在输电网巡检领域,无人机遥感技术近年来得到了广泛应用[7]。输电塔作为输电网的基础,需要通过巡检技术对其进行高效可靠的检测。传统的输电塔检测方法侧重于对单个输电塔的局部部件(如绝缘子、导线等)进行故障和缺陷检测[8, 9]。然而,输电塔形状和结构的多样性,使得对部件(如绝缘子)进行单一模型检测可能导致漏检或误检。我们将输电塔的检测划分为上游任务下游任务。借助无人机遥感图像,上游任务是在更大的视野中检测输电塔并对其进行分类。下游任务则是根据不同类型的输电塔,调用不同的模型进行缺陷检测。

输电塔检测存在三个挑战:特征表示不足、目标尺寸变化显著以及缺乏相应的数据集

首先,遥感图像通常分辨率相对较低且质量较差,导致感兴趣的目标对比度低、特征模糊且信息不足[10, 11]。在输电塔检测任务中,特征表示不足在不同类型的输电塔上表现出不同的问题。检测木制电线杆和其他小型输电设备属于小目标检测范畴,其感兴趣目标的特征容易被背景噪声淹没[12, 13]。而各种大型输电塔虽然通常具有足够大的特征区域,但其纹理特征在遥感图像上表现出相似性。这导致经过多个卷积层后,多通道特征图间的区分度不足[14]。其次,小型输电设备与大型输电塔之间的尺寸差异超过600像素,这使得输电塔检测任务成为一个多尺度目标检测任务。YOLOv5的特征融合策略在这种尺寸差异下表现不佳。改进特征融合策略可以提升模型在检测尺寸变化显著的目标时的性能。第三,现有关于上游任务的研究并未区分输电塔的类型,也缺乏相应的数据集[15]。

特征表示不足的挑战可以通过特征增强方法来缓解。注意力机制是一种广泛应用的特征增强方法,能有效抑制背景噪声并突出目标物体的特征[16]。注意力机制可以应用于通道维度、空间维度,或两者同时使用,从而增强特征表示的适应性。通道注意力增强了模型理解语义特征的能力,这对于识别纹理特征少、容易被忽略的小目标很有效。空间注意力提升了模型识别纹理特征的能力,这使其适用于检测纹理细节丰富的大目标。通道注意力和空间注意力分别增强了小目标和大目标的特征表示。

多尺度目标检测需要有效的特征融合,以增强模型同时检测不同尺度目标的能力。在大多数视觉模型中,图像经过特征提取网络后会得到多个不同层级的特征图。较低层级的特征图包含丰富的纹理信息但语义信息较少,而较高层级的特征图则相反。特征融合方法,如特征金字塔网络,涉及跨不同层级融合特征图,使得特征图能够同时兼顾语义和纹理信息[20]。在特征金字塔网络中拼接特征图时,添加可学习的逐通道权重系数,能使模型在感知不同尺寸目标时关注不同的通道特征图[21]。

我们的动机在于设计一个鲁棒的目标检测器,能够高速、高精度地处理遥感图像输电塔检测任务。在特征增强方面,我们设计了一个结合通道和空间注意力机制的块注意力模块,命名为索贝尔增强卷积块注意力模块。SECBAM由最大-平均高效通道注意力索贝尔增强坐标注意力组成。MA-ECA在ECA注意力的基础上增加了双池化设计,保留了更多小目标的信息。SECA在CA的基础上引入了不同方向的索贝尔算子,使得大型输电塔的纹理信息更加突出,并展现出更好的抗噪性。在特征融合方面,我们提出了分支重加权特征金字塔网络。我们将不同层级的输入特征图视为不同的分支。该网络能够基于输入特征图在分支维度上进行重加权,而不是在通道维度上。此外,权重与输入特征动态相关,在训练后并非固定不变。这两个模块被集成到YOLO中,开发出融合索贝尔注意力与动态分支重加权的YOLO检测器,这是一个专门用于遥感图像中输电塔检测的模型,同时保持了在多尺度目标检测通用任务上的强劲性能。在数据集方面,我们构建了一个新的用于输电塔目标检测的遥感图像数据集,包含了九种不同类型的输电设备,具有多种角度、不同空间分辨率和多样的形态。

本文的主要贡献如下:

  1. 我们设计了一个高效可靠的用于遥感图像输电塔检测的目标检测器SABR-YOLO。我们提出了两个新颖的轻量级模块:SECBAM和BRFPN。SECBAM通过双池化设计和索贝尔算子增强了模型对语义和纹理信息的感知能力,而BRFPN通过动态分支重加权机制强化了多尺度特征融合能力。
  2. 我们构建了输电塔目标检测数据集,这是一个从Google Earth遥感图像中构建的新颖多尺度目标检测数据集,具有混合空间分辨率。TTOD展示了目标的自然尺度分布,其中约30%为小目标,70%为中大目标。该数据集覆盖了从仅几个像素到宽度或高度超过600像素的极端目标尺寸范围,使其适用于评估遥感应用中的多尺度目标检测算法。
  3. 我们进行了对比实验和消融实验来验证SABR-YOLO的检测性能。与基线模型和其他最先进方法相比,SABR-YOLO以更少的参数实现了优越的检测精度,同时保持了抗噪性。消融研究表明,所提出的MA-ECA、SECA和BRFPN模块从互补的角度共同提升了模型性能,且互不干扰。SABR-YOLO在多尺度目标检测任务中展现出先进的能力,并显示出在实时机载应用中具有潜力。

本文的其余部分组织如下:第二部分首先回顾了输电塔检测和多尺度目标检测的相关工作。第三部分介绍了所提出的SECBAM、BRFPN和SABR-YOLO架构,随后在第四部分介绍了实验配置以及与基线和最先进方法的对比分析。还进行了消融研究以评估各个模块的贡献。第五部分总结了研究,并指出了局限性和潜在的未来应用。

II. 相关工作

本节简要概述相关工作,涵盖三个方面:基于YOLO的方法在遥感目标检测任务中的应用、目标检测框架中的注意力机制,以及多尺度特征融合方法。

A. YOLO在遥感领域的应用

随着深度学习的进步,现代目标检测系统能够在端到端学习框架内自主提取特征并准确定位目标位置。当前的目标检测方法主要分为两类:两阶段检测器和单阶段检测器。与两阶段方法相比,单阶段检测器计算速度更快且精度损失最小,使其更适合于机载应用。YOLO系列作为单阶段检测器的代表,在处理多尺度目标检测挑战方面表现出优越的能力。目前已涌现出多种用于遥感目标检测的YOLO变体算法。这些发展突显了YOLO在遥感应用中的可扩展性和效率方面的固有优势。基于这些优势,我们采用YOLO作为基础框架,并引入专为增强多尺度目标特征表示和特征融合而设计的新颖模块。

B. 目标检测任务中的注意力机制

为了进一步增强网络的语义表示,可以在特征融合之前进行特征增强。类似的研究利用双重注意力机制在融合前进行特征增强,使网络能够选择性地关注不同的目标特征。这种架构有助于增强对图像细节的关注,同时有效抑制无关区域。其他研究将坐标注意力纳入C3模块以增强空间特征编码。针对遥感图像中超小目标的特征增强,提出了前后视图融合策略,以抑制背景信息并聚焦于目标区域的特征。除了注意力机制,通过多分支卷积扩展感受野是另一种典型的特征增强方法。

为了在输电塔检测任务中获取更多纹理信息,本文提出了一种新的双重注意力机制,采用通道注意力和空间注意力的级联结构。

C. 面向多尺度目标检测的特征融合方法

基于深度学习的目标检测严重依赖骨干网络来提取高维特征。然而,在遥感多尺度目标检测中,目标间显著的尺寸变化以及潜在的分辨率限制,使得单尺度特征图在检测头中表现不足。因此,多尺度特征融合对于鲁棒检测变得至关重要。受人工设计的金字塔特征结构启发,特征金字塔网络被提出,用于有效聚合高分辨率的低层特征与语义丰富的高层特征。后续的改进包括PANet、NAS-FPN、ASFF和BiFPN,都证明了检测性能的提升。AugFPN解决了特征图中低层纹理信息与高层语义信息之间的不一致性。对于小目标检测,HRDNet被开发用于结合多深度图像金字塔与增强的FPN结构。有研究提出了一种基于Transformer的架构,用于有效聚合来自不同网络层的全局多尺度语义信息,并随后利用残差结构连接输入和输出特征。张等人提出了FFM,在BiFPN的基础上增加了通道重加权拼接模块。CRC可以在多级特征拼接时进行通道重加权。然而,CRC的参数在训练后保持不变,并且沿通道维度应用重加权可能会损害同一分支内特征的一致性。

这些研究共同表明,增强的多尺度特征融合策略能够在检测尺寸变化显著的目标时带来可测量的性能提升。通过改进BiFPN的多尺度融合策略,本文提出了一种新的拼接模块——分支重加权拼接,使其在融合多尺度特征时能够自适应地搜索最优的分支权重组合。BRC的优势在于其重加权策略是动态的,并应用于分支维度,从而保留了同一分支内特征的内在关系。通过将BRC模块嵌入BiFPN,本文提出了一种新的特征金字塔网络BRFPN,以增强特征融合的性能。

III. 提出的方法

A. 概述

我们选择YOLOv5作为基线框架,因为与最新的YOLOv10相比,其参数量相对较少,同时在目标检测任务中保持了一定的精度。我们提出了SABR-YOLO模型,用于遥感图像中输电塔的检测与分类。SABR-YOLO模型保持了与YOLOv5n相同的骨干网络和检测头。我们提出了一种新的颈部结构,通过添加新颖的注意力模块和改进特征金字塔网络,来增强模型在特征表示不足和目标尺寸变化显著场景下的性能。我们设计了索贝尔增强卷积块注意力模块来处理三个不同层级的输入特征图。SECBAM模块由最大-平均高效通道注意力索贝尔增强坐标注意力组成,分别对应于通道注意力和空间注意力机制。YOLOv5n使用路径聚合网络进行特征融合[45]。在SABR-YOLO中,我们提出了一种新的特征金字塔结构来替换YOLOv5n中的PANet,称为BRFPN。SABR-YOLO的整体架构如图1所示。

B. 最大-平均高效通道注意力

在遥感图像中,像电线杆这样的小型电力设备目标通常只占据几个像素,且存在特征微弱和背景杂乱的问题。像SENet这样的通道注意力机制在执行降维时,往往会丢失关键的细粒度通道依赖关系,这对小目标检测尤其不利。而高效通道注意力模块虽然使用卷积层替代全连接层来学习通道间关系,但它仅考虑了通道内像素的均值,这可能会稀释关键特征。为了保留每个通道内最大像素值的特征,我们提出了MA-ECA模块,它通过引入全局最大池化层对ECA模块进行了扩展。MA-ECA模块的架构如图2(a)所示。

给定一个输入特征图 X ∈ R^(C×H×W),其中C、H和W分别表示通道数、高度和宽度,MA-ECA模块应用全局平均池化层和全局最大池化层生成通道分数 Z_a ∈ R^(C×1×1),Z_m ∈ R^(C×1×1)。MA-ECA模块的数学表达式如下:

通过将全局最大池化与ECA的平均池化相结合,MA-ECA模块保留了遥感图像中小目标的稀疏但关键的特征。双池化设计增强了对嘈杂背景的鲁棒性,因为GMP强调了GAP可能稀释的感兴趣目标的特征。

C. 索贝尔增强坐标注意力

大型输电塔的检测任务对物体的结构和边缘特征高度敏感。然而,在低分辨率遥感图像中,这些特征可能不够清晰。传统的图像处理边缘检测算子,如Sobel算子,可以增强边缘特征,但它们往往会放大噪声干扰。为了解决这个问题,空间注意力机制提供了一个有效的解决方案。应用边缘检测算子生成空间注意力掩码,而不是直接处理原始特征图,可以显著提高模型对噪声的鲁棒性。

Sobel算子是图像处理中常用的离散微分工具,主要用于边缘检测。该运算通过应用两个方向性的3×3卷积滤波器来近似图像梯度:一个用于捕捉水平变化,另一个用于垂直变化,如公式(4)和(5)所示。

坐标注意力[53]是一种空间注意力,它通过利用坐标特征编码将位置细节整合到通道注意力中。这种方法将2D全局池化分解为两个独立的1D方向特征编码步骤,有助于在高度和宽度维度上建模长程空间依赖关系,同时保持位置感知能力。此外,由于CA是双向聚合特征(沿水平和垂直轴),它自然地适应了将方向性Sobel算子集成到其计算流程中,从而进一步增强边缘感知特征表示。

SECA将方向性Sobel算子集成到CA框架中,以增强边缘感知特征表示。此外,SECA在特征聚合期间保持双池化设计,以保留更丰富的纹理信息,确保即使在低分辨率条件下也能进行鲁棒的特征提取。SECA模块的架构如图2(b)所示。

给定一个输入特征图 X_o ∈ R^(C×H×W),SECA首先将空间注意力过程分解为沿高度和宽度方向的边缘感知特征编码。对于每个通道c,经过垂直和水平Sobel卷积层后的特征图 g_h^c 和 g_v^c 可以用公式(6)和(7)表示。对 g_h^c 应用双池化后的特征图可以用公式(8)和(9)表示。类似地,对于垂直特征图 g_v^c,采用相同的池化方法,如公式(10)和(11)所示。

通过在通道维度上拼接池化层后的特征,我们可以获得四个并行的分支特征图,分别表示为 Z_h,avg ∈ R^(C×H×1),Z_h,max ∈ R^(C×H×1),Z_v,avg ∈ R^(C×1×W) 和 Z_v,max ∈ R^(C×1×W)。对于水平和垂直特征图,分别采用两个具有相同核大小的卷积层进行特征提取。需要注意的是,对于相同方向的特征,相应的卷积层参数是共享的,如公式(12)和(13)所示。其中 Z_h ∈ R^(C/r × H × 1) 和 Z_v ∈ R^(C/r × 1 × W) 表示经过卷积层后的水平和垂直方向特征图,卷积核大小 k = ψ(C) = ⌊(log2(C) + 1)/2⌋。

然后,水平和垂直特征图分别通过两个1×1卷积层和sigmoid激活函数独立处理,生成沿每个轴的方向注意力权重。这些空间注意力系数随后通过矩阵乘法应用于原始特征图,生成具有增强轴感知表示的细化输出特征图,如公式(14)、(15)和(16)所示。

与CA模块相比,SECA在水平和垂直方向都引入了Sobel卷积,使其对纹理信息更加敏感。同时,注意力机制抑制了直接对特征图应用Sobel卷积时可能产生的锐化噪声。

D. 分支重加权特征金字塔网络

在卷积神经网络中,不同层级上的特征表示表现出不同程度的语义抽象,深层编码更高级的语义信息,而浅层保留更多的低级纹理信息。通过侧向连接聚合多级特征,可以整合来自不同抽象层次的互补信息,从而增强物体的语义表示。在检测头实现中,层级特征对于不同尺度物体的检测精度具有不同的贡献权重。

本文提出了分支重加权特征金字塔网络,它根据输入特征在不同分支上动态调整权重,并在分支级别而非通道级别执行加权。所提出的BRFPN通过设计一个分支重加权拼接模块扩展了BiFPN的双向特征融合,该模块在拼接期间动态重新校准跨级特征的贡献。为了减少BRC的参数开销,我们在每个分支内采用全局平均池化层进行特征提取。BRFPN的结构如图3所示。

BRC模块接收来自不同分支的M个输入特征图,表示为 X = {X_1, X_2, ... , X_M},其中来自第m个分支的特征图 X_m ∈ R^(c_m × h_m × w_m),c_m、h_m 和 w_m 分别表示 X_m 的通道数、高度和宽度。每个分支 X_m 通过全局平均池化层和后续的1D全卷积层进行特征提取和聚合,如公式(17)所示。我们得到 Z = {z_1, z_2, ... , z_M}。分支权重 W 通过对变换后的特征 Z 应用激活函数得到,如公式(18)所示,其中 W ∈ R^(1×M)。BRC的输出公式化为学习到的权重 W 与所有分支的输入特征图 X 进行逐分支相乘后的拼接结果,如公式(19)所示,其中输出特征图 Y_o 的尺寸为 Y_o ∈ R^((c1+...+cM) × H × W)。

与FFM相比,BRFPN中的分支重加权是动态的,并且与输入特征图相关联。

IV. 实验结果

在本文中,我们使用公开数据集RSOD[54]、RS-STOD[42]和我们自建的TTOD数据集,评估了SABR-YOLO模型与几个基线模型的性能。选择YOLOv5框架作为基线,它包含五个网络宽度和深度逐步增加的模型:YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x。为了确保与无人机等资源受限设备的兼容性,我们选择YOLOv5n作为基础模型并进行增强和优化。

A. 数据集描述

  1. RSOD是一个遥感目标检测数据集,包含四个类别:飞机、操场、立交桥和油罐。图像主要收集自Google Earth和天地图,共946张图像,包含6,950个实例。图像尺寸范围为1024×768到1044×915像素,空间分辨率在每像素0.3−3米之间。实验中,我们将数据集随机划分为70%用于训练,10%用于验证,20%用于测试。
  2. RS-STOD的图像来源于新西兰土地信息和Amap,空间分辨率范围为0.45m–8m,涵盖机场、港口、城市区域、农田和水域等多种场景。RS-STOD包含五个常见的遥感目标类别:小型车辆、大型车辆、飞机、船舶和储罐,共2,354张图像,包含50,854个标注实例。每个目标的平均像素数为13.4,远小于主流数据集。数据集随机划分为70%训练、10%验证和20%测试。RS-STOD中小目标比例很高:81%的目标小于16像素,50%小于8像素,最大目标也低于64像素。
  3. 现有的输电塔检测公开数据集主要关注近地视角,针对绝缘子、导线等部件级任务。为满足广域、高空输电塔检测的需求,我们构建了输电塔目标检测数据集,这是一个从Google Earth图像构建的遥感数据集。我们通过拼接大尺度原始图像并手动标注目标来构建它。该数据集包含9,360张图像,根据结构形态分为9种类型:猫头塔、杯形塔、鼓形塔、门形塔、T形塔、V形塔、钢管塔、木制电线杆和其他杂项类型。数据按70%训练、10%验证和20%测试划分。如图4(b)所示,TTOD中约30%的对象小于32×32像素[22, 23]。我们将每张图像的实例数限制在6个以内,以保持足够的空间分辨率用于塔形态分析。额外的实例会将分辨率降低到低于输电塔结构辨别所需的阈值。

TTOD数据集具有以下特点:

  1. TTOD引入了一个细粒度的输电塔形态分类体系,根据结构特征将其划分为9个不同的类别。
  2. TTOD数据集表现出显著的尺度变化,最大和最小实例之间的目标尺寸差异超过600像素,使其成为一个具有挑战性的多尺度检测基准。
  3. TTOD中相同类别的输电塔目标分布在不同空间分辨率下,这使得能够更稳健地评估模型在不同质量水平的遥感图像上的检测性能。

B. 模型训练与评估指标

SABR-YOLO模型使用PyTorch开发,并在配备两张NVIDIA RTX 3090 GPU的工作站上进行训练。训练采用Adam优化器,初始学习率为0.001,动量为0.9,权重衰减因子为1e-5,批量大小为64。

性能评估方面,我们使用平均精度均值作为评估指标,并根据置信度阈值进一步细分:mAP50、mAP75和mAP50−95。我们的主要指标包括mAP50和mAP50−95,以全面评估跨不同阈值的检测精度。

我们评估了SABR-YOLO模型的推理速度。在NVIDIA 3090 GPU上,模型每张图像的推理速度约为6.9毫秒,对应帧率约为145。对于其在边缘计算平台上的推理速度,我们根据算力进行了相应预测。在算力约为200 TOPS的NVIDIA Jetson AGX Orin平台上,模型的推理速度将降至每张图像约8毫秒,FPS降至约125。在实际场景中,这样的推理延迟符合要求标准。

为了分析模型不同组件的延迟,我们将SABR-YOLO分为三部分:特征提取、特征融合和检测头。在TTOD测试数据集上,这三个部分的平均每张图像推理延迟分别为3.79毫秒、1.73毫秒和1.38毫秒。

C. 与先前方法的比较

我们展示了SABR-YOLO在RSOD、RS-STOD和TTOD数据集上的实验结果,并与现有先进方法和最先进方法进行了全面比较。SABR-YOLO在不同数据集代表性场景下的检测结果如图5所示。为了进一步验证所提模型的性能,我们在TTOD数据集上进行了不同SOTA模型的对比实验,可视化结果如图6所示。

在图6(b)中,YOLOv5n模型同时出现漏检和重复检测现象,检测到的目标置信度相对较低。如图6(c)和6(d)所示,FFCA-YOLO和LEAD-YOLO模型检测到的目标多于YOLOv5n,但仍存在误检和重复检测的问题。从图6(e)和6(f)可以观察到,FBVF-YOLO和SABR-YOLO都正确检测到了最多的目标,且SABR-YOLO实现了更高的平均精度。在遥感图像输电塔识别与分类场景中,所提模型表现出最优性能。

为了验证SABR-YOLO模型在不同场景下的性能,我们在RSOD、RS-STOD和TTOD数据集上将SABR-YOLO与其他SOTA模型进行了比较。

  1. RSOD:我们在RSOD数据集上将SABR-YOLO与其他模型进行了比较。表I所示的测试集结果进一步证实了SABR-YOLO的优越性,其在精确率、召回率、mAP50和mAP50−95上均取得了最高分。这表明SABR-YOLO在多尺度遥感目标检测场景中更好地平衡了真正例检测和假正例抑制。所有模型的mAP50−95增益都很小,这表明SABR-YOLO的架构改进主要提升了标准IoU阈值下的性能,而对于更严格的定位标准可能需要进一步优化。这些发现验证了SABR-YOLO在多尺度遥感目标检测中的有效性,特别是在优先考虑检测精度而非精确边界框拟合时。

为了展示SABR-YOLO的性能,我们使用梯度加权类激活映射来可视化特征图中不同区域对检测结果的贡献,如图7(a)所示。颜色越暖表示对模型预测的贡献越高。与基线模型相比,SABR-YOLO在推理过程中表现出更集中的注意力区域,导致检测结果中假阴性和假阳性更少,边界框定位更精确,这通过更紧密的锚点对齐得以证明。

  1. RS-STOD:为了评估所提出的SABR-YOLO的性能,在RS-STOD数据集上进行了对比实验,结果如表II所示。SABR-YOLO在关键指标上表现出优越性。在其他SOTA模型中,FBVF-YOLO取得了最佳性能。在此场景下,LEAD-YOLO的所有指标均低于基线YOLOv5n模型,尽管其参数量更大。这可能归因于RS-STOD包含大量极小的目标。

从图7(b)的注意力热图可以观察到,对于复杂背景下的小目标检测,基线YOLOv5n模型往往更多地关注非感兴趣区域。相比之下,SABR-YOLO模型的注意力更加集中。

  1. TTOD:我们在TTOD数据集上将SABR-YOLO模型与其他模型进行了比较。表III显示了模型在测试集上的实验结果。对于输电塔检测任务,SABR-YOLO模型的所有评估指标均取得了最优性能。

图7(c)直观地展示了为什么SABR-YOLO在TTOD上取得优越性能。输电塔常常投下各种阴影,可能被误检测为目标。与YOLOv5n模型相比,SABR-YOLO有效区分了塔架结构与其阴影,消除了背景包含的问题。

为了对图7中的注意力热图进行量化分析,我们提出了一种注意力分数的计算方法。我们将热图划分为感兴趣区域和非感兴趣区域,然后计算两个区域的归一化像素强度总和并取比值——得到的值就是注意力分数。分数越高表示模型越关注感兴趣目标。在图7(a)、7(b)和7(c)中,YOLOv5的注意力分数分别为1.23、0.26和1.21,而SABR-YOLO的分别为1.57、0.73和2.39。SABR-YOLO的注意力分数始终高于YOLOv5。

SABR-YOLO是一个轻量级模型,通过减少原始模型中的C3模块数量实现——其C3模块数量是原始模型的三分之一。在TTOD数据集上测试,原始模型的mAP50为0.762,而SABR-YOLO略有下降至0.756。但其参数量减少了约50%,推理速度显著提高。

D. 消融实验结果

为了评估SABR-YOLO中各个组件的贡献,我们系统地将SECBAM和BRFPN模块集成到基线模型中进行有效性验证。为了进行更细粒度的分析,我们将SECBAM分解为子模块MA-ECA和SECA,并检查它们各自的影响。在RSOD、RS-STOD和TTOD数据集上进行了全面的消融研究。表IV、V和VI通过评估指标量化了每个模块的影响,其中✓表示包含模块,×表示排除。

  1. MA-ECA:MA-ECA的引入在数据集上带来了检测召回率的显著提升:RS-STOD从0.760到0.788,RSOD从0.871到0.933,TTOD从0.687到0.723。这种增强伴随着精确率的轻微下降:RS-STOD从0.812到0.793,RSOD从0.936到0.918,TTOD从0.748到0.703。这是因为MA-ECA沿着特征图的通道维度操作,可能会损害某些空间信息。总体而言,添加MA-ECA仍然在一定程度上提高了mAP50和mAP50−95分数。这些结果表明MA-ECA有效地引导模型关注目标,从而减少了漏检的可能性。这一观察结果由图7(a)呈现的热图可视化进一步证实。
  2. SECA:该模块也有助于提高模型的召回率:在RS-STOD上,该指标从0.760增加到0.773;在RSOD上,从0.871上升到0.923;在TTOD上,从0.687上升到0.711。与MA-ECA相比,伴随的精确率下降较小:RS-STOD从0.812到0.805,RSOD从0.936到0.922,TTOD从0.748到0.724。虽然它仍然应用可能丢失一些重要空间信息的通道级加权,但这种影响不如MA-ECA严重,后者可能抑制整个通道。总体而言,SECA在mAP50和mAP50−95上取得了与MA-ECA相似的改进。这证实了SECA也有助于模型更好地聚焦于目标,有效减少漏检。
  3. BRFPN:该模块在数据集上带来了检测精确率的显著提升:RS-STOD从0.812上升到0.841,RSOD从0.936上升到0.953,TTOD从0.748上升到0.763。相比之下,代价是召回率略有下降:RS-STOD从0.760到0.752,RSOD从0.871到0.870,TTOD从0.687到0.681。与基线相比,它也提高了mAP50和mAP50−95。这种改进源于BRFPN的动态分支加权策略,它能更好地融合高层语义和低层空间特征,从而增强多尺度目标检测能力。

结果表明,每个模块对提升检测性能都有独特且互补的贡献。当三个模块一起使用时,模型达到了最优性能。值得注意的是,在所有消融实验中,MA-ECA和SECA的组合始终在mAP50和mAP50−95指标上取得次优性能,进一步验证了我们提出的注意力机制的有效性。

为了评估我们提出的SECBAM和BRFPN模块,我们与现有的注意力机制和特征金字塔结构进行了对比实验。结果证实,这两个模块在我们低分辨率遥感图像输电塔检测任务中都达到了最优性能。

  1. SECBAM:如表VII所示,SECBAM在所有注意力机制中取得了最高的mAP50和mAP50−95分数。虽然坐标注意力模块取得了最佳精确率,但其较低的召回率导致平均精度性能次优。
  2. BRFPN:如表VIII所示,BRFPN优于所有其他特征金字塔网络,在精确率、召回率、mAP50和mAP50−95所有指标上均取得最高分。

对于构成SECBAM的MA-ECA和SECA模块,我们进一步分别研究了它们的有效性。

  1. MA-ECA:在通道注意力机制中应用双池化设计可以增强模型对感兴趣目标所在通道的感知,因为GMP强调了可能被GAP稀释的感兴趣目标的特征。为了验证这一点,我们在TTOD测试集上比较了三个模型的性能:YOLOv5n模型、仅含GAP的SABR-YOLO模型和完整的SABR模型。结果如图8和表IX所示。从图8的注意力热图可以看出,与YOLOv5n和SABR-YOLO相比,SABR-YOLO在目标上的注意力分布最集中、最准确。YOLOv5n的注意力相对分散。虽然不含GMP的SABR-YOLO模型可以关注到感兴趣目标,但它也分配了相当多的注意力到非感兴趣的阴影区域。表IX中的对比实验进一步证实了这一观察:不含GMP的SABR-YOLO的mAP50指标相比完整模型下降了0.004,而其mAP50−95指标下降了0.010。这表明当应用更高的置信度阈值时,缺少GMP导致的性能下降更为明显。

  1. SECA:为了验证SECA模块中滤波核的有效性,我们在TTOD数据集上使用了不同的核进行了对比实验,结果如表X所示。使用这三种核的模型分别命名为RABR-YOLO、LABR-YOLO和CABR-YOLO。从检测结果来看,SABR-YOLO在所有方法中取得了最高的mAP分数。CABR-YOLO的mAP50和mAP50−95略低于SABR-YOLO。相比之下,RABR-YOLO和LABR-YOLO表现较差。具体来说,LABR-YOLO的mAP50−95甚至低于基线YOLOv5n模型。使用Laplacian算子作为滤波核未能显著提高检测精度,反而导致模型在高置信度阈值下性能恶化。CABR-YOLO在TTOD数据集上达到了接近SABR-YOLO的检测精度,但其时间复杂度更高。与其他算子相比,Sobel算子显著增强了坐标注意力提取感兴趣目标空间特征的能力,实现了最优的性能和效率。

此外,我们还讨论了双分支Sobel核的方向问题。在SECA中,两个Sobel核的方向设置为与坐标注意力中的池化方向一致。为了验证该设计的有效性,我们进行了一个使用反向方向Sobel核的实验。实验结果表明,与SABR-YOLO相比,使用反向方向Sobel核的模型mAP50下降了0.013,同时精确率和召回率也都有一定程度的下降。

E. 鲁棒性实验

遥感图像在成像过程中受到多种退化因素的影响,包括传感器噪声、大气扰动和环境变化,常常导致目标与背景区域之间的边界模糊。为了评估SABR-YOLO对图像退化的鲁棒性,我们处理了部分TTOD测试集,引入了四种常见的退化类型:图像模糊、高斯噪声、条带噪声和雾。对于图像模糊方法,我们采用高斯模糊,其参数包括核大小k和标准差σ_b。高斯噪声的标准差记为σ_n。条带噪声和雾的密度分别用d和A表示。不同退化条件对图像的影响如图9所示。

我们选择SABR-YOLO和YOLOv5n进行鲁棒性实验。表XI显示了不同退化水平下的实验结果。在大多数退化条件下,SABR-YOLO模型的mAP50指标下降幅度较小。在少数情况下,YOLOv5n的抗噪性能略好。然而,在所有退化场景下,其mAP50分数仍然低于SABR-YOLO。

因此,为减轻噪声干扰,我们建议在目标检测前实施图像预处理技术,如去噪算法或非均匀性校正,以提高输入图像质量。

V. 结论

本文设计了一种名为融合索贝尔注意力与动态分支重加权的YOLO检测器的高效检测器,用于遥感图像中输电塔的检测与分类。具体来说,提出了两个轻量级模块:索贝尔增强卷积块注意力模块分支重加权特征金字塔网络,以提升模型在多尺度目标检测场景下的性能。SECBAM是一个结合了MA-ECA和SECA的混合注意力机制。BRFPN提出了一种新颖的特征融合策略,通过对输入分支进行自适应加权来增强多尺度目标表示。

实验结果表明,SABR-YOLO在RSOD和RS-STOD数据集上取得了优越的性能,mAP50分别达到0.965和0.872。此外,我们构建了一个新的输电塔目标检测数据集,其中包含跨不同空间分辨率的多种类型输电塔实例。在TTOD数据集上,SABR-YOLO实现了0.756的mAP50,显著优于其他模型。

在研究过程中,我们发现现有的深度学习网络在使用单一模态数据源检测多尺度目标时遇到性能瓶颈。我们认为多源数据融合可以使检测器学习到更有效的特征表示。因此,未来的研究方向可能包括针对多尺度目标检测任务的多平台协同检测或单平台多波段检测。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.原理介绍
  • I. 引言
  • II. 相关工作
  • III. 提出的方法
  • IV. 实验结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档