news 2026/4/2 17:28:20

YOLO26改进 - 卷积Conv | DualConv( Dual Convolutional):用于轻量级深度神经网络的双卷积核

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLO26改进 - 卷积Conv | DualConv( Dual Convolutional):用于轻量级深度神经网络的双卷积核

前言

本文介绍了一种用于构建轻量级深度神经网络的双卷积核(DualConv)方法及其在YOLO26中的结合。DualConv结合3 × 3 3 \times 33×31 × 1 1 \times 11×1卷积核同时处理输入特征图通道,利用组卷积技术排列卷积滤波器。3 × 3 3 \times 33×3卷积核提取细粒度特征,1 × 1 1 \times 11×1卷积核压缩参数,组卷积减少计算量。该方法可应用于多种CNN模型。我们将DualConv集成进YOLO26,实验表明它显著减少了计算成本和参数数量,提升了YOLO-V3检测速度和准确性,在部分数据集上还提高了分类准确率。

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

专栏链接: YOLO26改进专栏

文章目录

  • 前言
  • 介绍
    • 摘要
  • 文章链接
  • 基本原理
    • 双重卷积核结构 :
    • 组卷积技术 :
  • 核心代码
  • YOLO26引入代码
  • tasks注册
    • 步骤1:
    • 步骤2
  • 配置yolo26-DualConv.yaml
  • 实验
    • 脚本
    • 结果

介绍

摘要

CNN架构通常对内存和计算资源的要求较高,这使得它们在硬件资源有限的嵌入式系统中难以实现。我们提出了一种用于构建轻量级深度神经网络的双卷积核(DualConv)方法。DualConv结合了3 × 3 3 \times 33×31 × 1 1 \times 11×1的卷积核,同时处理相同的输入特征图通道,并利用组卷积技术高效地排列卷积滤波器。DualConv可以应用于任何CNN模型,例如用于图像分类的VGG-16和ResNet-50,用于目标检测的YOLO和R-CNN,或用于语义分割的FCN。在本文中,我们广泛测试了DualConv在分类任务中的表现,因为这些网络架构构成了许多其他任务的骨干。我们还测试了DualConv在YOLO-V3上的图像检测性能。实验结果表明,结合我们的结构创新,DualConv显著减少了深度神经网络的计算成本和参数数量,同时在某些情况下,令人惊讶地实现了比原始模型稍高的准确性。我们使用DualConv进一步减少了轻量级MobileNetV2的参数数量54%,在CIFAR-100数据集上仅下降了0.68%的准确性。当参数数量不是问题时,DualConv在相同数据集上将MobileNetV1的准确性提高了4.11%。此外,DualConv显著提升了YOLO-V3的目标检测速度,并在PASCAL VOC数据集上将其准确性提高了4.4%。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

DualConv是一种创新的深度神经网络技术,旨在构建轻量级的深度神经网络。

双重卷积核结构 :

DualConv结合了3x3和1x1卷积核,同时处理相同的输入特征图通道。通过这种结合,DualConv能够在保持准确性的同时降低网络的计算成本和参数数量。

  1. 3x3卷积核的作用

    • 3x3卷积核通常用于捕获局部特征和空间信息,有助于提取输入特征图的细粒度特征。
    • 在双重卷积核结构中,3x3卷积核负责处理输入特征图的通道维度,从而实现对特征的深度提取和表征。
  2. 1x1卷积核的作用

    • 1x1卷积核通常用于减少特征图的通道数量,降低计算成本和参数数量,同时有助于特征的融合和压缩。
    • 在双重卷积核结构中,1x1卷积核与3x3卷积核结合使用,可以在保持准确性的同时实现参数的有效压缩和计算的高效性。
  3. 同时处理的优势

    • 双重卷积核结构使得3x3和1x1卷积核能够同时处理相同的输入特征图通道,从而加快计算速度,提高网络的效率和性能。
    • 同时处理不同类型的卷积核有助于网络在不同尺度上捕获特征信息,并有效地融合这些信息,提高网络的表征能力和泛化能力。
  4. 参数减少与性能提升

    • 双重卷积核结构通过结合3x3和1x1卷积核,实现了在轻量级深度神经网络中提高准确性、降低计算成本和参数数量的目标。
    • 这种结构的设计使得网络在保持高准确性的同时,具有更高的计算效率和更少的参数量,适合在资源受限的环境中部署和应用。

总的来说,双重卷积核结构的技术原理在于充分利用3x3和1x1卷积核的优势,同时处理输入特征图通道,实现了在深度神经网络中提高效率、准确性和泛化能力的目标。

组卷积技术 :

DualConv利用组卷积技术有效地排列卷积滤波器,进一步提高了网络的效率。组卷积将输入特征图分成多个组,并对每个组应用卷积操作,从而减少了计算量。

组卷积技术是一种卷积神经网络中常用的技术

  1. 分组卷积的概念

    • 在传统的卷积操作中,所有的输入通道都会与所有的输出通道进行卷积操作。而在组卷积中,将输入通道和输出通道分成多个组,每个组内的通道之间进行卷积操作,最后将各组的输出进行拼接。
    • 通过分组卷积,可以减少参数数量和计算量,提高计算效率,尤其适用于深度神经网络中参数较多的情况。
  2. 技术原理

    • 在组卷积中,首先将输入特征图分成多个组,每个组包含一定数量的通道。
    • 对每个组内的通道进行卷积操作,得到各自的输出特征图。
    • 最后将各组的输出特征图进行拼接,得到最终的输出特征图。
    • 通过这种方式,实现了对输入特征图的分组处理,减少了参数数量和计算量,同时保持了网络的表征能力。
  3. 优势

    • 减少参数数量:组卷积可以将参数分组,每个组内共享参数,从而减少整体的参数数量。
    • 提高计算效率:由于参数数量减少,计算量也相应减少,可以加快网络的训练和推理速度。
    • 改善特征表征:组卷积可以帮助网络更好地学习特征表示,提高网络的泛化能力和性能。
  4. 应用

    • 组卷积技术广泛应用于各种深度神经网络结构中,如ShuffleNet等轻量级网络结构中,以提高网络的效率和性能。
    • 在一些需要减少参数数量和计算量的场景下,组卷积技术也可以发挥重要作用,如移动端和嵌入式设备上的模型部署等。

核心代码

importtorch.nnasnnclassDualConv(nn.Module):def__init__(self,in_channels,out_channels,stride,g=2):""" 初始化 DualConv 类。 :param in_channels: 输入通道数 :param out_channels: 输出通道数 :param stride: 卷积步幅 :param g: 用于 DualConv 的分组卷积组数 """super(DualConv,self).__init__()# 分组卷积self.gc=nn.Conv2d(in_channels,out_channels,kernel_size=3,stride=stride,padding=1,groups=g,bias=False)# 逐点卷积self.pwc=nn.Conv2d(in_channels,out_channels,kernel_size=1,stride=stride,bias=False)defforward(self,input_data):""" 定义 DualConv 如何处理输入图像或输入特征图。 :param input_data: 输入图像或输入特征图 :return: 返回输出特征图 """# 同时进行分组卷积和逐点卷积,然后将结果相加returnself.gc(input_data)+self.pwc(input_data)

YOLO26引入代码

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

importtorch.nnasnnclassDualConv(nn.Module):def__init__(self,in_channels,out_channels,stride,g=2):""" Initialize the DualConv class. :param input_channels: the number of input channels :param output_channels: the number of output channels :param stride: convolution stride :param g: the value of G used in DualConv """super(DualConv,self).__init__()# Group Convolutionself.gc=nn.Conv2d(in_channels,out_channels,kernel_size=3,stride=stride,padding=1,groups=g,bias=False)# Pointwise Convolutionself.pwc=nn.Conv2d(in_channels,out_channels,kernel_size=1,stride=stride,bias=False)defforward(self,input_data):""" Define how DualConv processes the input images or input feature maps. :param input_data: input images or input feature maps :return: return output feature maps """returnself.gc(input_data)+self.pwc(input_data)

tasks注册

ultralytics/nn/tasks.py中进行如下操作:

步骤1:

fromultralytics.nn.conv.DualConvimportDualConv

步骤2

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

DualConv

配置yolo26-DualConv.yaml

ultralytics/cfg/models/26/yolo26-DualConv.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,DualConv,[128,2]]# 1-P2/4-[-1,2,C3k2,[256,False,0.25]]-[-1,1,DualConv,[256,2]]# 3-P3/8-[-1,2,C3k2,[512,False,0.25]]-[-1,1,DualConv,[512,2]]# 5-P4/16-[-1,2,C3k2,[512,True]]-[-1,1,DualConv,[1024,2]]# 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-DualConv.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-DualConv',)

结果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 23:01:00

电气设计的隐藏外挂:1:1元器件图库实战

电气高低压成套元器件 几乎每个厂家的元器件都画出来了尺寸大小电气高低压成套元器件 几乎每个厂家的元器件都画出来了尺寸大小型号都有,应有尽有,全部1:1尺寸,直接标注就OK配电柜设计现场最要命的场景:左手抓着某厂家的断路器样本…

作者头像 李华
网站建设 2026/3/21 10:19:04

珲春推荐烤肉哪家无广

珲春无广烤肉推荐:延炭乳酸菌烤肉 在珲春这座美食之城,烤肉是当地极具特色的美食之一。若想寻找一家无广且高品质的烤肉店,延炭乳酸菌烤肉是不可错过的选择。 主打健康概念 延炭乳酸菌烤肉以其独特的健康理念脱颖而出。店内用乳酸菌腌制肉类…

作者头像 李华
网站建设 2026/4/2 15:50:24

基于BP神经网络的迭代优化实现(MATLAB)

一、MATLAB实现代码 1. 网络结构定义 %% 网络参数设置 input_neurons 2; % 输入层神经元数 hidden_neurons 3; % 隐藏层神经元数 output_neurons 1; % 输出层神经元数 learning_rate 0.1; % 学习率 epochs 10000; % 迭代次数%% 权重初始化(He初始化…

作者头像 李华
网站建设 2026/3/27 2:30:42

Java分布式系统开发与实践!

我们都知道,目前大型网站跟企业级应用目前的要求都是达到“互联网三高”,这时传统的集中式系统肯定是无法满足基本的需求的,越来越多的企业的系统架构目前都是向着分布式系统的方向演进。分布式系统的特征分布式系统相对于传统的集中式系统来…

作者头像 李华
网站建设 2026/4/1 14:35:18

灵活就业简历制作难?项目导向模板下载,HR一眼认可

不同求职场景,简历误区各不相同?校招应届生分不清实习和校招简历重点,要么堆砌校园经历,要么遗漏实习成果;跨行业转行想突破壁垒,却不会衔接过往经历、突出可迁移技能;职场深耕3-5年&#xff0c…

作者头像 李华
网站建设 2026/3/30 4:02:53

利用Multisite实现WordPress多语言网站

利用WordPress Multisite(多站点)实现多语言网站,核心是将每种语言对应为一个独立子站点,通过统一的网络管理实现多语言布局,同时兼顾站点隔离性与基础的语言互通性。以下是完整、可落地的实操步骤,从开启多站点到SEO优化、功能增…

作者头像 李华