当前位置: 首页 > article >正文

【Block总结】LSKNet,大核卷积|即插即用

论文信息

LSKNet(Large Selective Kernel Network)是一种轻量级的骨干网络,专为遥感图像处理而设计。该论文提出了一种新的网络架构,旨在解决遥感图像分类、目标检测和语义分割等任务中的挑战。LSKNet能够动态调整其大的空间感受野,以更好地模拟遥感场景中各种对象的范围上下文。

论文链接:https://arxiv.org/pdf/2403.11735

GitHub链接:
在这里插入图片描述

创新点

  1. 动态感受野:LSKNet的核心创新在于其能够根据不同对象的需求动态调整感受野,这使得网络在处理复杂的遥感图像时更加灵活和高效。

  2. 选择性卷积核:该网络采用了选择性卷积核机制,能够在不同的上下文中选择最合适的卷积核,从而提高特征提取的准确性。

  3. 轻量化设计:LSKNet的设计注重轻量化,确保在保持高性能的同时,减少计算资源的消耗。

方法

LSKNet的架构包括以下几个关键组件:

  • 大选择性卷积核:通过引入大卷积核,LSKNet能够捕捉更广泛的上下文信息,从而提高对小目标的检测能力。

  • 上下文建模:网络通过分析遥感图像中的先验知识,优化了对不同目标的上下文建模能力,确保在复杂场景中能够准确识别目标。

  • 多任务学习:LSKNet支持多任务学习,能够同时处理分类、检测和分割任务,提高了模型的通用性和适应性。
    在这里插入图片描述

效果

在多个标准数据集上进行的实验表明,LSKNet在遥感图像分类、目标检测和语义分割等任务上均取得了新的最高水平表现。具体来说,LSKNet在以下方面表现突出:

  • 准确率:在遥感图像分类任务中,LSKNet的准确率显著高于现有的主流方法。

  • 计算效率:尽管模型复杂度较低,LSKNet仍能在实时应用中保持高效的推理速度。

实验结果

实验结果显示,LSKNet在多个基准测试中均设立了新的状态-of-the-art(SOTA)记录。具体的实验设置包括:

  • 数据集:使用了多个遥感图像数据集进行评估,包括分类、检测和分割任务。

  • 性能指标:通过平均精度(mAP)、F1分数等指标对模型性能进行评估,结果表明LSKNet在各项指标上均优于对比模型。

总结

LSKNet作为一种创新的轻量级骨干网络,成功地解决了遥感图像处理中的多个挑战。其动态感受野和选择性卷积核的设计,使得网络在处理复杂场景时表现出色。通过实验验证,LSKNet不仅提高了任务的准确性,还在计算效率上表现优异,为遥感领域的研究和应用提供了新的思路和方法。

代码

import torch
import torch.nn as nn




class LSKblock(nn.Module):
    def __init__(self, dim):
        super().__init__()
        self.conv0 = nn.Conv2d(dim, dim, 5, padding=2, groups=dim)
        self.conv_spatial = nn.Conv2d(dim, dim, 7, stride=1, padding=9, groups=dim, dilation=3)
        self.conv1 = nn.Conv2d(dim, dim // 2, 1)
        self.conv2 = nn.Conv2d(dim, dim // 2, 1)
        self.conv_squeeze = nn.Conv2d(2, 2, 7, padding=3)
        self.conv = nn.Conv2d(dim // 2, dim, 1)

    def forward(self, x):
        attn1 = self.conv0(x)
        attn2 = self.conv_spatial(attn1)

        attn1 = self.conv1(attn1)
        attn2 = self.conv2(attn2)

        attn = torch.cat([attn1, attn2], dim=1)
        avg_attn = torch.mean(attn, dim=1, keepdim=True)
        max_attn, _ = torch.max(attn, dim=1, keepdim=True)
        agg = torch.cat([avg_attn, max_attn], dim=1)
        sig = self.conv_squeeze(agg).sigmoid()
        attn = attn1 * sig[:, 0, :, :].unsqueeze(1) + attn2 * sig[:, 1, :, :].unsqueeze(1)
        attn = self.conv(attn)
        return x * attn



if __name__ == "__main__":
    # 如果GPU可用,将模块移动到 GPU
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    # 输入张量 (batch_size, channels, height, width)
    x = torch.randn(1,32,40,40).to(device)
    # 初始化 pconv 模块
    dim=32
    block = LSKblock(dim)
    print(block)
    block = block.to(device)
    # 前向传播
    output = block(x)
    print("输入:", x.shape)
    print("输出:", output.shape)

输出结果:
在这里插入图片描述


http://www.kler.cn/a/526659.html

相关文章:

  • 从巫师求雨说起
  • LINUX部署微服务项目步骤
  • 渗透测试技法之口令安全
  • DRF开发避坑指南01
  • 【学术会议征稿-第二届生成式人工智能与信息安全学术会议(GAIIS 2025)】人工智能与信息安全的魅力
  • 全面解析文件上传下载删除漏洞:风险与应对
  • opencv裁剪视频区域
  • 白嫖DeepSeek:一分钟完成本地部署AI
  • Linux工具使用
  • Golang 并发机制-2:Golang Goroutine 和竞争条件
  • 【RocketMQ 存储】- broker 端存储单条消息的逻辑
  • 算法随笔_31:移动零
  • DeepSeek-R1 模型及GRPO算法学习
  • 浅谈网络 | 容器网络之Flannel
  • 21.3-启动流程、编码风格(了解) 第21章-FreeRTOS项目实战--基础知识之新建任务、启动流程、编码风格、系统配置 文件组成和编码风格(了解)
  • 雅思写作(支持句)
  • 告别重启!Vue CLI 动态代理配置实战:实现热更新与灵活配置
  • Redis实战(黑马点评)——redis存储地理信息、位图、HyperLogLog 用法
  • 【视频+图文详解】HTML基础1-html和css介绍、上网原理
  • 从零开始学习电池SOC算法
  • MySQL知识点总结(十五)
  • Deep Seek R1本地化部署
  • 如何解决Unit sshd.service could not be found
  • Vue.js组件开发-实现全屏背景图片滑动切换特效
  • 自动备案批量查询脚本
  • 系统思考—蝴蝶效应