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

简介: **摘要:**我们提出DualConv,一种融合$3\times3$和$1\times1$卷积的轻量级DNN技术,适用于资源有限的系统。它通过组卷积结合两种卷积核,减少计算和参数量,同时增强准确性。在MobileNetV2上,参数减少54%,CIFAR-100精度仅降0.68%。在YOLOv3中,DualConv提升检测速度并增4.4%的PASCAL VOC准确性。论文及代码已开源。

摘要

CNN架构通常对内存和计算资源的要求较高,这使得它们在硬件资源有限的嵌入式系统中难以实现。我们提出了一种用于构建轻量级深度神经网络的双卷积核(DualConv)方法。DualConv结合了$3 \times 3$和$1 \times 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%。

YOLO目标检测创新改进与实战案例专栏

专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO基础解析+创新改进+实战案例

介绍

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

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

双重卷积核结构 :

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

  1. 3x3卷积核的作用

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

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

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

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

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

image-20240605170130004

核心代码

import torch.nn as nn

class DualConv(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)

    def forward(self, input_data):
        """
        定义 DualConv 如何处理输入图像或输入特征图。
        :param input_data: 输入图像或输入特征图
        :return: 返回输出特征图
        """
        # 同时进行分组卷积和逐点卷积,然后将结果相加
        return self.gc(input_data) + self.pwc(input_data)

task与yaml配置

详见:https://blog.csdn.net/shangyanaf/article/details/139477420

相关文章
|
15天前
|
机器学习/深度学习 人工智能 算法
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
乐器识别系统。使用Python为主要编程语言,基于人工智能框架库TensorFlow搭建ResNet50卷积神经网络算法,通过对30种乐器('迪吉里杜管', '铃鼓', '木琴', '手风琴', '阿尔卑斯号角', '风笛', '班卓琴', '邦戈鼓', '卡萨巴', '响板', '单簧管', '古钢琴', '手风琴(六角形)', '鼓', '扬琴', '长笛', '刮瓜', '吉他', '口琴', '竖琴', '沙槌', '陶笛', '钢琴', '萨克斯管', '锡塔尔琴', '钢鼓', '长号', '小号', '大号', '小提琴')的图像数据集进行训练,得到一个训练精度较高的模型,并将其
27 0
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
|
6天前
|
机器学习/深度学习 数据采集 算法
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
41 19
|
6天前
|
机器学习/深度学习 编解码
深度之眼(二十八)——神经网络基础知识(三)-卷积神经网络
深度之眼(二十八)——神经网络基础知识(三)-卷积神经网络
28 14
|
1天前
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
15 9
|
14天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【YOLOv8改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
YOLO目标检测专栏介绍了SimAM,一种无参数的CNN注意力模块,基于神经科学理论优化能量函数,提升模型表现。SimAM通过计算3D注意力权重增强特征表示,无需额外参数。文章提供论文链接、Pytorch实现代码及详细配置,展示了如何在目标检测任务中应用该模块。
|
6天前
|
机器学习/深度学习 数据采集 算法
Python基于卷积神经网络CNN模型和VGG16模型进行图片识别项目实战
Python基于卷积神经网络CNN模型和VGG16模型进行图片识别项目实战
|
10天前
|
机器学习/深度学习 物联网 区块链
未来触手可及:探索区块链、物联网和虚拟现实的革新之路探索深度学习中的卷积神经网络(CNN)
随着科技的飞速发展,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正不断重塑我们的工作和生活方式。本文将深入探讨这些技术的最新发展趋势,分析它们如何在不同行业实现应用革新,并预测其未来的融合潜力。我们将从技术的基本原理出发,通过案例研究,揭示它们在现实世界中的创新应用场景,并讨论面临的挑战与机遇。 在机器学习领域,卷积神经网络(CNN)已成为图像识别和处理的基石。本文深入探讨了CNN的核心原理、架构以及在多个领域的应用实例,旨在为读者提供从理论到实践的全面理解。
|
1月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
48 1
|
3天前
|
Linux
linux网络统计信息和端口占用情况基本语法
linux网络统计信息和端口占用情况基本语法
|
10天前
|
网络协议 安全 Ubuntu
7 个有用的免费 Linux 网络隧道
【7月更文挑战第4天】
46 0
7 个有用的免费 Linux 网络隧道