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

YOLO26改进 - 卷积Conv | SPD-Conv空间深度转换卷积优化空间信息编码,攻克小目标检测难题

前言

本文介绍了一种名为SPD-Conv的新型CNN构建块及其在YOLO26中的结合。传统CNN在处理低分辨率图像或小物体时,因使用步长卷积和池化层导致细粒度信息丢失、性能下降。SPD-Conv由空间到深度(SPD)层和非步长卷积(Conv)层组成,完全消除卷积步长和池化层,避免信息损失。SPD层重排特征图元素将空间信息转换到深度维度,非步长卷积层进一步处理特征图。我们将SPD-Conv集成进YOLO26,实验证明其在低分辨率图像和小物体检测任务上显著优于现有模型。

文章目录: YOLO26改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

专栏链接: YOLO26改进专栏

文章目录

  • 前言
  • 介绍
    • 摘要
    • 创新点
  • 文章链接
  • 基本原理
  • 核心代码
  • YOLO26引入代码
  • tasks注册
    • 步骤1:导包
    • 步骤2
  • 配置 yolo26-SPDConv.yaml
  • 实验
    • 脚本
    • 结果

介绍

摘要

卷积神经网络(CNNs)在许多计算机视觉任务中取得了巨大成功,例如图像分类和目标检测。然而,当面对图像分辨率低或对象较小的更加困难的任务时,它们的性能迅速下降。在本文中,我们指出这一问题根源于现有CNN架构中一个有缺陷但常见的设计,即使用了步长卷积和/或池化层,这导致了细粒度信息的丢失和较不有效的特征表示的学习。为此,我们提出了一种新的CNN构建块,名为SPD-Conv,用以替代每个步长卷积层和每个池化层(从而完全消除它们)。SPD-Conv由一个空间到深度(SPD)层和一个非步长卷积(Conv)层组成,并且可以应用于大多数(如果不是全部的话)CNN架构中。我们在两个最具代表性的计算机视觉任务下解释这一新设计:目标检测和图像分类。然后,我们通过将SPD-Conv应用于YOLOv5和ResNet来创建新的CNN架构,并通过实验证明我们的方法特别是在图像分辨率低和小对象的困难任务上显著优于最先进的深度学习模型。我们已经在开放源代码。

创新点

SPD-Conv的创新点在于其独特的设计理念和结构,它旨在解决当处理低分辨率图像或小物体时,传统卷积神经网络(CNN)性能下降的问题。以下是SPD-Conv的主要创新点:

  1. 完全消除卷积步长和池化层:传统CNN中,卷积步长和池化层被广泛用于减小特征图的空间尺寸,以减少计算量和增加感受野。然而,这种设计会导致细粒度信息的损失,特别是在处理低分辨率图像和小物体时。SPD-Conv通过完全摒弃这些操作,避免了信息损失,有助于保持更多的细节和特征信息。

  2. 空间到深度(SPD)层:SPD-Conv包含一个SPD层,该层通过重排特征图的元素,将空间信息转换到深度(通道)维度,从而实现下采样而不损失信息。这种方法保留了通道维度中的所有信息,避免了传统下采样方法中的信息丢失。

  3. 非步长卷积层:在SPD层之后,SPD-Conv使用非步长(即步长为1)的卷积层进一步处理特征图。这种设计允许网络在不丢失空间信息的前提下,通过可学习的参数精细调整特征表示,有助于提高模型对小物体和低分辨率图像的处理能力。

  4. 通用性和统一性:SPD-Conv不仅可以替代CNN中的卷积步长和池化层,还能广泛应用于各种CNN架构中,提供一种统一的改进策略。这增加了SPD-Conv的适用范围和灵活性,使其能够在不同的深度学习任务和模型中发挥作用。

  5. 性能提升:通过在目标检测和图像分类任务中的应用和验证,SPD-Conv展现了其在处理低分辨率图像和小物体时相比传统CNN模型的显著性能提升。这证明了其设计理念在实际应用中的有效性和优势。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

SPD-Con是一种创新的模块,旨在现有卷积神经网络(CNN)架构中替代传统的步进卷积及池化层。该结构包括一个空间到深度(SPD)层及一个非步进卷积(Conv)层。

空间到深度(SPD)层的功能在于,将输入特征图中的空间维度降维至通道维度,同时确保通道信息的完整性。具体通过将输入特征图的每一像素或特征映射至独立通道来实现,此过程中空间维度缩减,而通道维度相应扩增。

非步进卷积(Conv)层执行标准的卷积操作,紧随SPD层之后进行。不同于步进卷积,非步进卷积不在特征图上进行滑动,而是对每个像素或特征映射执行卷积操作。这有助于缓解SPD层可能导致的过度下采样问题,保留更丰富的细节信息。

SPD-Conv通过串联SPD层与Conv层的方式进行组合。具体而言,输入特征图首先经SPD层转换,其输出随后通过Conv层进行卷积处理。该组合策略在不丧失信息的前提下,有效减少空间维度尺寸,保持通道信息,从而提升CNN在低分辨率图像及小型物体检测上的性能。

通常,对于任意给定的原始特征映射(X),子映射(f_{x,y})由特征图(X(i, j))中,(i + x)和(j + y)可被比例因子整除的所有特征映射组成。因而,每个子图实现了对(X)的比例因子下采样。例如,当比例因子为2时,可以得到四个子映射(f_{0,0}, f_{1,0}, f_{0,1}, f_{1,1}),它们的尺寸为((S/2, S/2, C_1)),对(X)实现2倍下采样。

随后,这些子特征映射沿通道维度进行连接,形成一个新的特征映射(X’),其空间维度按比例因子减少,而通道维度按比例因子2增加。

SPD借鉴了一种原始图像转换技术,用于在CNN内部及其整体中对特征映射进行下采样,如此操作。

考虑任意尺寸为(S \times S \times C_1)的中间特征映射(X),其子特征映射序列按上述方式进行切割。

核心代码

classspace_to_depth(nn.Module):""" space_to_depth类继承自nn.Module,用于实现空间到深度的转换,这种转换通过重排输入张量的元素来降低其空间维度, 同时增加深度维度,常用于深度学习中对图像进行下采样。 参数: dimension: 用于指定转换的维度,默认为1。此参数设置转换操作的深度维度增加的倍数。 """def__init__(self,dimension=1):""" 初始化space_to_depth模块。 参数: dimension: 转换的维度,决定了深度增加的倍数,默认值为1。 """super().__init__()# 调用父类的构造函数来进行初始化self.d=dimension# 保存维度参数defforward(self,x):""" 前向传播函数,实现输入x的空间到深度的转换。 通过将输入张量x的空间维度重新排列到深度维度来实现转换,具体操作是将x的高和宽每隔一个像素取一个,形成四个部分, 然后将这四个部分在深度(通道)维度上进行拼接。 参数: x: 输入张量,需要进行空间到深度转换的数据。 返回: 转换后的张量,其空间维度减小,深度维度增加。 """# 对输入x进行空间到深度的转换操作,并在指定维度上进行拼接returntorch.cat([x[...,::2,::2],x[...,1::2,::2],x[...,::2,1::2],x[...,1::2,1::2]],1)

YOLO26引入代码

在根目录下的ultralytics/nn/目录,新建一个conv目录,然后新建一个以SPDConv为文件名的py文件, 把代码拷贝进去。

importtorch.nnasnnimporttorchclassspace_to_depth(nn.Module):# Changing the dimension of the Tensordef__init__(self,dimension=1):super().__init__()self.d=dimensiondefforward(self,x):returntorch.cat([x[...,::2,::2],x[...,1::2,::2],x[...,::2,1::2],x[...,1::2,1::2]],1)

tasks注册

ultralytics/nn/tasks.py中加入以下代码:

步骤1:导包

from ultralytics.nn.conv.SPDConv import space_to_depth

步骤2

修改def parse_model(d, ch, verbose=True):

只需要添加截图中标明的,其他没有的模块不需要添加

elifmisspace_to_depth:c2=4*ch[f]

配置 yolo26-SPDConv.yaml

ultralytics/cfg/models/26/yolo26-SPDConv.yaml

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license# Ultralytics YOLO26 object detection model with P3/8 - P5/32 outputs# Model docs: https://docs.ultralytics.com/models/yolo26# Task docs: https://docs.ultralytics.com/tasks/detect# Parametersnc:80# number of classesend2end:True# whether to use end-to-end modereg_max:1# DFL binsscales:# model compound scaling constants, i.e. 'model=yolo26n.yaml' will call yolo26.yaml with scale 'n'# [depth, width, max_channels]n:[0.50,0.25,1024]# summary: 260 layers, 2,572,280 parameters, 2,572,280 gradients, 6.1 GFLOPss:[0.50,0.50,1024]# summary: 260 layers, 10,009,784 parameters, 10,009,784 gradients, 22.8 GFLOPsm:[0.50,1.00,512]# summary: 280 layers, 21,896,248 parameters, 21,896,248 gradients, 75.4 GFLOPsl:[1.00,1.00,512]# summary: 392 layers, 26,299,704 parameters, 26,299,704 gradients, 93.8 GFLOPsx:[1.00,1.50,512]# summary: 392 layers, 58,993,368 parameters, 58,993,368 gradients, 209.5 GFLOPs# YOLO26n backbonebackbone:# [from, repeats, module, args]-[-1,1,Conv,[64,3,2]]# 0-P1/2-[-1,1,space_to_depth,[128]]# 1-P2/4-[-1,2,C3k2,[256,False,0.25]]-[-1,1,space_to_depth,[256]]# 3-P3/8-[-1,2,C3k2,[512,False,0.25]]-[-1,1,space_to_depth,[512]]# 5-P4/16-[-1,2,C3k2,[512,True]]-[-1,1,space_to_depth,[1024]]# 7-P5/32-[-1,2,C3k2,[1024,True]]-[-1,1,SPPF,[1024,5,3,True]]# 9-[-1,2,C2PSA,[1024]]# 10# YOLO26n headhead:-[-1,1,nn.Upsample,[None,2,"nearest"]]-[[-1,6],1,Concat,[1]]# cat backbone P4-[-1,2,C3k2,[512,True]]# 13-[-1,1,nn.Upsample,[None,2,"nearest"]]-[[-1,4],1,Concat,[1]]# cat backbone P3-[-1,2,C3k2,[256,True]]# 16 (P3/8-small)-[-1,1,Conv,[256,3,2]]-[[-1,13],1,Concat,[1]]# cat head P4-[-1,2,C3k2,[512,True]]# 19 (P4/16-medium)-[-1,1,Conv,[512,3,2]]-[[-1,10],1,Concat,[1]]# cat head P5-[-1,1,C3k2,[1024,True,0.5,True]]# 22 (P5/32-large)-[[16,19,22],1,Detect,[nc]]# Detect(P3, P4, P5)

实验

脚本

importwarnings warnings.filterwarnings('ignore')fromultralyticsimportYOLOif__name__=='__main__':# 修改为自己的配置文件地址model=YOLO('./ultralytics/cfg/models/26/yolo26-SPDConv.yaml')# 修改为自己的数据集地址model.train(data='./ultralytics/cfg/datasets/coco8.yaml',cache=False,imgsz=640,epochs=10,single_cls=False,# 是否是单类别检测batch=8,close_mosaic=10,workers=0,optimizer='MuSGD',# optimizer='SGD',amp=False,project='runs/train',name='yolo26-SPDConv',)

结果

http://www.jsqmd.com/news/299031/

相关文章:

  • 在线 GIF 生成如何保画质?高效 GIF 制作工具实操指南
  • 自媒体配图GIF大小 怎么弄?高效动图裁剪工具实操教程
  • 日常证件照怎么压缩?符合办事提交要求的 3 个方法
  • Device (PCI0)节点的_HID=PNP0A03说明Device (PCI0)的子节点Device (P2P0)的子节点Device (S1F0)是PCI设备--非常重要
  • 灵活就业简历制作难?项目导向模板下载,HR一眼认可
  • 职场晋升简历怎么制作?专属模板下载+HR认可技巧
  • [python]-循环语句
  • 2026臭氧发生器市场,口碑厂家引领潮流,三维混合机/带式干燥机/大型臭氧发生器/小型臭氧发生器,臭氧发生器企业排行
  • 18.Stack——queue(上) - 详解
  • 2026年目前质量好的手拉式气动葫芦工厂口碑推荐榜单,6吨气动葫芦/固定式气动葫芦,手拉式气动葫芦生产厂家怎么选
  • 在IEEE-14总线系统中执行连续功率流 测试环境:MATLAB 读取IEEE14和 IEEE...
  • 《把脉行业与技术趋势》-102-直流电与交流电的比较:它们不是“优劣之分”,而是物理规律在不同约束下的最优解。如同河流的“直流”奔涌与“交流”潮汐,各循其道,各尽其用。
  • Docker 解决是否运行
  • C++课后习题训练记录Day81
  • 基于用户行为与电影票房混合权重的协同过滤电影推荐平台开题报告
  • 三次工业革命:技术突破、经济转型与全球格局的深度变革
  • 利用Multisite实现WordPress多语言网站
  • 大数据择优出国留学信息推荐系统开题报告
  • Codeforces 96B Lucky Numbers (easy) 题解
  • 2025年青山地区分口石定制厂家综合实力大比拼,服务好的分口石哪家便宜鑫俊熙显著提升服务
  • 2026年上海装修设计公司哪家强?真实评测来揭秘,现代简约大平层设计/现代简约精装房设计,上海装修设计厂家选哪家
  • 聊天室程序(c 代码)
  • select 函数详解
  • 2026年市场头部的大牌保健食品供应链口碑推荐,保健食品集合店/保健食品/大牌热销品,大牌保健食品加盟代理口碑排行
  • 聚焦2026:深度解析防火涂料国标要求与工程选型平衡技巧排行,饰面型防火涂料/电缆防火涂料,防火涂料企业口碑排行
  • 风险评估准备(上)
  • Deepin25用户安装教程
  • Cursor 2.4 重磅发布:Subagents 多智能体协作与 Skills 技能系统上线
  • Java后端开发者的AGI时代学习与职业路径策略
  • JavaWeb企业级开发---用户登录认证