【即插即用涨点模块-卷积】SPDConv空间深度卷积,助力小目标与低分辨有效涨点【附源码+注释】

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】8.【基于深度学习的行人跌倒检测系统】
9.【基于深度学习的PCB板缺陷检测系统】10.【基于深度学习的生活垃圾分类目标检测系统】
11.【基于深度学习的安全帽目标检测系统】12.【基于深度学习的120种犬类检测与识别系统】
13.【基于深度学习的路面坑洞检测系统】14.【基于深度学习的火焰烟雾检测系统】
15.【基于深度学习的钢材表面缺陷检测系统】16.【基于深度学习的舰船目标分类检测系统】
17.【基于深度学习的西红柿成熟度检测系统】18.【基于深度学习的血细胞检测与计数系统】
19.【基于深度学习的吸烟/抽烟行为检测系统】20.【基于深度学习的水稻害虫检测与识别系统】
21.【基于深度学习的高精度车辆行人检测与计数系统】22.【基于深度学习的路面标志线检测与识别系统】
23.【基于深度学习的智能小麦害虫检测识别系统】24.【基于深度学习的智能玉米害虫检测识别系统】
25.【基于深度学习的200种鸟类智能检测与识别系统】26.【基于深度学习的45种交通标志智能检测与识别系统】
27.【基于深度学习的人脸面部表情识别系统】28.【基于深度学习的苹果叶片病害智能诊断系统】
29.【基于深度学习的智能肺炎诊断系统】30.【基于深度学习的葡萄簇目标检测系统】
31.【基于深度学习的100种中草药智能识别系统】32.【基于深度学习的102种花卉智能识别系统】
33.【基于深度学习的100种蝴蝶智能识别系统】34.【基于深度学习的水稻叶片病害智能诊断系统】
35.【基于与ByteTrack的车辆行人多目标检测与追踪系统】36.【基于深度学习的智能草莓病害检测与分割系统】
37.【基于深度学习的复杂场景下船舶目标检测系统】38.【基于深度学习的农作物幼苗与杂草检测系统】
39.【基于深度学习的智能道路裂缝检测与分析系统】40.【基于深度学习的葡萄病害智能诊断与防治系统】
41.【基于深度学习的遥感地理空间物体检测系统】42.【基于深度学习的无人机视角地面物体检测系统】
43.【基于深度学习的木薯病害智能诊断与防治系统】44.【基于深度学习的野外火焰烟雾检测系统】
45.【基于深度学习的脑肿瘤智能检测系统】46.【基于深度学习的玉米叶片病害智能诊断与防治系统】
47.【基于深度学习的橙子病害智能诊断与防治系统】48.【基于深度学习的车辆检测追踪与流量计数系统】
49.【基于深度学习的行人检测追踪与双向流量计数系统】50.【基于深度学习的反光衣检测与预警系统】
51.【基于深度学习的危险区域人员闯入检测与报警系统】52.【基于深度学习的高密度人脸智能检测与统计系统】
53.【基于深度学习的CT扫描图像肾结石智能检测系统】54.【基于深度学习的水果智能检测系统】
55.【基于深度学习的水果质量好坏智能检测系统】56.【基于深度学习的蔬菜目标检测与识别系统】
57.【基于深度学习的非机动车驾驶员头盔检测系统】58.【太基于深度学习的阳能电池板检测与分析系统】
59.【基于深度学习的工业螺栓螺母检测】60.【基于深度学习的金属焊缝缺陷检测系统】
61.【基于深度学习的链条缺陷检测与识别系统】62.【基于深度学习的交通信号灯检测识别】
63.【基于深度学习的草莓成熟度检测与识别系统】64.【基于深度学习的水下海生物检测识别系统】
65.【基于深度学习的道路交通事故检测识别系统】66.【基于深度学习的安检X光危险品检测与识别系统】
67.【基于深度学习的农作物类别检测与识别系统】68.【基于深度学习的危险驾驶行为检测识别系统】
69.【基于深度学习的维修工具检测识别系统】70.【基于深度学习的维修工具检测识别系统】
71.【基于深度学习的建筑墙面损伤检测系统】72.【基于深度学习的煤矿传送带异物检测系统】
73.【基于深度学习的老鼠智能检测系统】74.【基于深度学习的水面垃圾智能检测识别系统】
75.【基于深度学习的遥感视角船只智能检测系统】76.【基于深度学习的胃肠道息肉智能检测分割与诊断系统】
77.【基于深度学习的心脏超声图像间隔壁检测分割与分析系统】78.【基于深度学习的心脏超声图像间隔壁检测分割与分析系统】
79.【基于深度学习的果园苹果检测与计数系统】80.【基于深度学习的半导体芯片缺陷检测系统】
81.【基于深度学习的糖尿病视网膜病变检测与诊断系统】82.【基于深度学习的运动鞋品牌检测与识别系统】
83.【基于深度学习的苹果叶片病害检测识别系统】84.【基于深度学习的医学X光骨折检测与语音提示系统】
85.【基于深度学习的遥感视角农田检测与分割系统】86.【基于深度学习的运动品牌LOGO检测与识别系统】
87.【基于深度学习的电瓶车进电梯检测与语音提示系统】88.【基于深度学习的遥感视角地面房屋建筑检测分割与分析系统】
89.【基于深度学习的医学CT图像肺结节智能检测与语音提示系统】90.【基于深度学习的舌苔舌象检测识别与诊断系统】
91.【基于深度学习的蛀牙智能检测与语音提示系统】92.【基于深度学习的皮肤癌智能检测与语音提示系统】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

目录

  • 摘要
  • 方法详解
    • 1. SPD-Conv结构
    • 2. 实现细节
  • 创新点
  • SPD-Conv的作用机制
    • 在目标检测中的应用(YOLOv5-SPD)
    • 在图像分类中的应用(ResNet-SPD)
  • 总结与启示
  • SPDConv模块源码与注释

摘要

在这里插入图片描述

  • 核心问题:现有CNN架构在低分辨率图像和小物体检测任务中性能显著下降,根源在于普遍使用的跨步卷积(strided convolution)和池化层会导致细粒度信息丢失。
  • 解决方案:提出新型CNN构建模块SPD-Conv,完全替代跨步卷积和池化层,由空间到深度(SPD)层+非跨步卷积层组成。
  • 效果
    • 在目标检测(YOLOv5改造)和图像分类(ResNet改造)任务中验证
    • 在COCO、Tiny ImageNet等数据集上显著提升AP和top-1准确率
    • 对小物体检测(APs提升最高达19%)和低分辨率图像效果尤为突出

在这里插入图片描述

方法详解

1. SPD-Conv结构

在这里插入图片描述

组件功能数学表达特点
SPD层特征图下采样输入: X ( S , S , C 1 ) X(S,S,C_1) X(S,S,C1) → 输出: X ′ ( S s c a l e , S s c a l e , s c a l e 2 C 1 ) X'(\frac{S}{scale}, \frac{S}{scale}, scale^2C_1) X(scaleS,scaleS,scale2C1)无信息丢失的下采样
非跨步卷积通道数调整使用stride=1的卷积核,输出 X ′ ′ ( S s c a l e , S s c a l e , C 2 ) X''(\frac{S}{scale}, \frac{S}{scale}, C_2) X′′(scaleS,scaleS,C2)保留全部判别性特征

2. 实现细节

  • SPD层工作流程

    1. 按scale因子切片特征图(如scale=2时得到4个子图)
    2. 沿通道维度拼接子图
    3. 示例:640x640输入 → SPD(scale=2) → 320x320输出(通道数×4)
  • 与传统方法对比

    方法信息保留适用场景计算效率
    跨步卷积丢失高频信息高分辨率场景
    最大池化丢失空间细节大物体检测
    SPD-Conv完全保留小物体/低分辨率中等

创新点

  1. 架构革新

    • 首次完全消除CNN中的跨步操作
    • 统一处理下采样(替代池化和跨步卷积)
  2. 理论突破

    • 证明传统下采样是性能瓶颈的理论依据
    • 提出信息无损下采样范式
  3. 工程价值

    • 即插即用:兼容主流CNN架构(YOLO/ResNet等)
    • 开源实现:提供PyTorch/TensorFlow支持
  4. 性能优势

    • COCO数据集小物体AP提升最高达19%
    • Tiny ImageNet分类准确率提升2.84%

SPD-Conv的作用机制

在目标检测中的应用(YOLOv5-SPD)

在这里插入图片描述

  1. 改造点

    • 替换7个stride=2卷积层(Backbone 5层 + Neck 2层)
    • 保持原网络宽度/深度缩放策略
  2. 效果增强原理

    • 多尺度特征保留:SPD层将空间信息转化为通道信息
    • 小物体检测:1/4分辨率下仍保持有效特征
  3. 可视化对比

    • 传统YOLOv5:漏检被遮挡物体(长颈鹿)
    • YOLOv5-SPD:成功检测微小物体(人脸+长椅)

在图像分类中的应用(ResNet-SPD)

在这里插入图片描述

  1. 改造策略

    • 移除原始max pooling层(因输入分辨率已较低)
    • 替换4个stride=2卷积
  2. 分类优势

    • 低分辨率图像(64x64)纹理特征保留更完整
    • 错误案例分析:ResNet18误分类样本被SPD版本正确识别

总结与启示

  1. 核心结论

    • 传统下采样方法是小物体检测的性能瓶颈
    • SPD-Conv在同等参数量下实现显著性能提升
  2. 应用指导

    • 推荐场景:监控摄像头、医学影像、卫星图像等小物体/低分辨率任务
    • 慎用场景:高分辨率大物体检测(可能增加不必要计算量)

SPDConv模块源码与注释

#论文地址:https://arxiv.org/pdf/2208.03641.pdf
#代码地址:https://github.com/LabSAINT/SPD-Convimport torch
import torch.nn as nn# 自动填充函数,用于确保卷积操作后输出的特征图尺寸与输入相同
def autopad(k, p=None, d=1):  # kernel, padding, dilation"""计算填充大小,使得卷积操作后输出尺寸与输入相同。参数:k (int or list): 卷积核大小p (int or list, optional): 填充大小,默认为Noned (int or list, optional): 膨胀因子,默认为1返回:p (int or list): 计算后的填充大小"""if d > 1:k = d * (k - 1) + 1 if isinstance(k, int) else [d * (x - 1) + 1 for x in k]  # 计算实际卷积核大小if p is None:p = k // 2 if isinstance(k, int) else [x // 2 for x in k]  # 自动计算填充大小return p# 定义SPDConv类,继承自nn.Module
class SPDConv(nn.Module):"""标准卷积层,支持多种参数配置,包括输入通道数、输出通道数、卷积核大小、步幅、填充、分组、膨胀因子和激活函数。参数:c1 (int): 输入通道数c2 (int): 输出通道数k (int, optional): 卷积核大小,默认为1s (int, optional): 步幅,默认为1p (int or list, optional): 填充大小,默认为Noneg (int, optional): 分组数,默认为1d (int or list, optional): 膨胀因子,默认为1act (bool or nn.Module, optional): 是否使用激活函数,默认为True"""default_act = nn.SiLU()  # 默认激活函数为SiLUdef __init__(self, c1, c2, k=1, s=1, p=None, g=1, d=1, act=True):"""初始化卷积层。参数:c1 (int): 输入通道数c2 (int): 输出通道数k (int, optional): 卷积核大小,默认为1s (int, optional): 步幅,默认为1p (int or list, optional): 填充大小,默认为Noneg (int, optional): 分组数,默认为1d (int or list, optional): 膨胀因子,默认为1act (bool or nn.Module, optional): 是否使用激活函数,默认为True"""super().__init__()c1 = c1 * 4  # 将输入通道数乘以4self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p, d), groups=g, dilation=d, bias=False)  # 定义卷积层self.bn = nn.BatchNorm2d(c2)  # 定义批量归一化层self.act = self.default_act if act is True else act if isinstance(act, nn.Module) else nn.Identity()  # 定义激活函数def forward(self, x):"""前向传播函数,对输入进行卷积、批量归一化和激活操作。参数:x (torch.Tensor): 输入张量返回:torch.Tensor: 处理后的张量"""# 将输入张量按通道维度进行切片并拼接,增加通道数x = torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1)# 应用卷积、批量归一化和激活函数return self.act(self.bn(self.conv(x)))def forward_fuse(self, x):"""前向传播函数(融合版本),对输入进行卷积和激活操作,不包含批量归一化。参数:x (torch.Tensor): 输入张量返回:torch.Tensor: 处理后的张量"""# 将输入张量按通道维度进行切片并拼接,增加通道数x = torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1)# 应用卷积和激活函数return self.act(self.conv(x))

在这里插入图片描述

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43150.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE4学习笔记 FPS游戏制作26 UE中的UI

文章目录 几个概念创建一个UI蓝图添加UI获取UI的引用 切换设计器和UI蓝图将UI添加到游戏场景锚点轴点slotSizeToContent三种UI数据更新方式函数绑定属性绑定事件绑定 九宫格分割图片 几个概念 UMG:UE的UI编辑器 slate UI: UE的UI的编辑语言 创建一个UI蓝图 右键用…

WebGL图形编程实战【3】:矩阵操控 × 从二维到三维的跨越

上一篇文章:WebGL图形编程实战【2】:动态着色 纹理贴图技术揭秘 仓库地址:github…、gitee… 矩阵操控 矩阵变换 回到前面关于平移缩放、旋转的例子当中,我们是通过改变传递进去的xy的值来改变的。 在进行基础变换的时候&…

目标识别与双目测距(1)环境搭建:Ubuntu+yolov5+pcl库

环境情况 ubuntu 18.04 → 20.04(最终) 安装Ubuntu1804虚拟机系统 Anaconda:可参考我的另一篇文章 Python 3.6.13 → 3.8(最终)Anaconda3-2021.05 目标识别:YOLOv5相关 1、安装git sudo apt install gi…

GAMES101-现代计算机图形学入门(Animation/simulation)

目录 一些科普Keyframe AnimatorPhysical Simulation质点弹簧系统 Mass Spring Rope粒子系统运动学 Forward Kinematics逆运动学Inverse KinematicsRiggingMotion Capture 第二次课 cont.Single Particle Simulation流体模拟 Fluid Simulation GitHub主页:https://g…

[C++] 智能指针 进阶

标题:[C] 智能指针 进阶 水墨不写bug 在很久之前我们探讨了智能指针的浅显认识,接下来会更加深入,从源码角度认识智能指针,从而了解智能指针的设计原理,并应用到以后的工作项目中。 本文将会按照C智能指针的发展历史&…

Linux系统中应用端控制串口的基本方法

在编写应用程序的时候,我们需要将上面提到的串口参数如波特率、数据位、奇偶校验位、停止位 等设置好,通讯双方才能在预定好的参数下相互通讯。哪里设置参数,通过什么设置参数,还有 如何设置这些参数,接下来我们分别来实现。 1:linux系统中termios结构体用法 POS…

高效加盖骑缝章:PDF文件处理的实用解决方案

今天为大家推荐一款实用的PDF骑缝章加盖工具,它能一键生成精准骑缝章,无需复杂操作,极大提升办公效率。 01 软件介绍 这款软件就是PDF加盖骑缝章: 绿色免费且无需安装,解压即用,不占用系统资源 支持Windo…

LLM架构解析:NLP基础(第一部分)—— 模型、核心技术与发展历程全解析

本专栏深入探究从循环神经网络(RNN)到Transformer等自然语言处理(NLP)模型的架构,以及基于这些模型构建的应用程序。 本系列文章内容: NLP自然语言处理基础(本文)词嵌入&#xff0…

黑马点评Feed流推送帖子zset实现

什么是Feed流? 顾名思义就是投喂流 传统的信息查找方式用户需要手动去搜寻 Feed流就是不再是用户自己找 而是服务端主动投喂他喜欢/想看到的信息 考虑以下场景: 张三关注了李四 王五关注了李四 当李四发了动态时 它的粉丝们在我的关注列表里就能看到自己关注的人发的动态且最…

详解CountDownLatch底层源码

大家好,我是此林。 今天来分享一下CountDownLatch的底层源码。 CountDownLatch 是 Java 并发包 (java.util.concurrent) 中的线程之间同步工具类,主要用于协调多个线程的执行顺序。其核心思想是通过计数器实现线程间的"等待-唤醒"机制&#…

Ubuntu24.04 离线安装 MySQL8.0.41

一、环境准备 1.1 官方下载MySQL8.0.41 完整包 1.2 上传包 & 解压 上传包名称是:mysql-server_8.0.41-1ubuntu24.04_amd64.deb-bundle.tar # 切换到上传目录 cd /home/MySQL8 # 解压: tar -xvf mysql-server_8.0.41-1ubuntu24.04_amd64.deb-bundl…

【算法应用】基于粒子群算法PSO求解无人机集群路径规划问题

目录 1.无人机路径规划模型2.粒子群算法PSO原理3.结果展示4.参考文献5.代码获取 1.无人机路径规划模型 路径最优性 为了实现UAV的高效运行,计划的路径需要在某一特定标准上达到最优。UAV飞行路径Xi表示为UAV需要飞过的一系列n个航路点,每个航路点对应搜…

电脑ip地址每次开机会换吗?全面解析

在探讨“电脑IP地址每次开机会换吗”这一问题时,我们首先需要明确的是,IP地址的更换情况并非一成不变,而是受到多种因素的影响,其中最核心的是IP地址的类型——动态IP还是静态IP。这两种类型的IP地址在分配方式、稳定性以及使用场…

sqli-labs靶场 less 8

文章目录 sqli-labs靶场less 8 布尔盲注 sqli-labs靶场 每道题都从以下模板讲解,并且每个步骤都有图片,清晰明了,便于复盘。 sql注入的基本步骤 注入点注入类型 字符型:判断闭合方式 (‘、"、’、“”&#xf…

docker-Dify外接Fastgpt知识库

参考地址:https://mp.weixin.qq.com/s/crQrneHZ0sT-c04YanofSw 总体步骤 部署fda(fastgpt-dify-adapter)docker 部署dify,fastgpt在fastgpt创建open apikey,复制知识库id;在dify外接fastgpt知识库; docker安装 下载…

Django学习笔记

Django学习笔记 安装django pip install django创建APP 用django来写后端的时候,要把各个功能分散到各个创建好的APP去实现 在终端输入 python manage.py startapp app01(APP名称)APP内部文件 admin.py django默认提供了admin后台管理 apps.py app启动类 mo…

向量数据库是什么,它有什么作用?

环境: 向量数据库 问题描述: 向量数据库是什么,它有什么作用 解决方案: 向量数据库是一种专门设计用于高效处理高维向量数据的系统,主要用于存储、索引、查询和检索高维向量数据,特别适合处理非结构化数…

【SPP】蓝牙串口协议应用层深度解析:从连接建立到实战开发

目录 一、SPP应用层协议框架与角色模型 1.1 分层协议栈模型 1.2 设备角色模型(DevA 与 DevB 交互) 二、连接建立流程:从 SDP 到 RFCOMM 2.1 服务发现(SDP)流程(SDP 记录关键参数) 2.2 连接…

【Portainer】Docker可视化组件安装

Portainer Portainer 是用于管理容器化环境的一体化平台工程解决方案,提供广泛的定制功能,以满足个人开发人员和企业团队的需求。 官方地址: https://www.portainer.io/ 安装 在 WSL / Docker Desktop 上使用 Docker 安装 Portainer CE 通过命令或UI页…

【第33节】windows原理:初探PE文件

目录 一、PE文件概述 二、DOS头部 三、DOS头部与NT头部之间 四、NT头部 五、文件头区段 六、了解个别概念 七、扩展头 八、区段头表 一、PE文件概述 PE文件是有特定格式的文件,像后缀名是EXE的可执行文件、后缀名是DLL的动态链接库文件、sys格式的驱动文件&…