赞
踩
原论文地址:原论文下载地址
主要优点:著降低深度神经网络的计算成本和参数数量,显著提高模型的精度
DualConv是一种创新的卷积网络结构,旨在构建轻量级的深度神经网络。它通过结合3×3和1×1的卷积核处理相同的输入特征映射通道,优化了信息处理和特征提取。DualConv利用组卷积技术高效排列卷积滤波器,大大降低了计算成本和参数数量。
DualConv的基本原理可以总结如下:
1. 结合3×3和1×1卷积核:DualConv使用3×3和1×1的卷积核同时处理相同的输入特征映射通道,结合了两者的优点。
2. 利用组卷积技术:它通过组卷积技术高效地安排卷积滤波器,减少了计算成本和参数数量
卷积介绍:
深度可分离卷积:如图上图(a)所示,标准卷积同时对输入特征映射进行特征提取和通道融合。MobileNetV1中的深度可分离卷积将标准卷积分解为深度卷积和点向卷积,如上图(b)所示。在深度卷积中,单个卷积核应用于每个输入通道。通常,使用3×3卷积进行特征提取。点卷积将1×1卷积应用于深度卷积的输出特征图,进行通道融合。因此,通过分离特征提取和通道融合,深度可分离卷积显着减少了参数数量,从而减少了网络执行的计算量。
分组卷积:在组卷积中,输入和输出特征图被分成多个组,每组的卷积滤波器仅处理对应的输入特征图的一部分,这减少了模型的复杂度。DualConv利用这一技术来进一步降低计算成本,因为它允许组内的不同卷积核(如3×3和1×1)并行处理同一组输入通道,优化了信息流和特征提取效率,同时保持了网络的表征能力。
DualConv的结构布局:3×3和1×1卷积核在输入特征映射通道上的并行布局。具体来说,这种布局利用了组卷积技术将卷积核分组,并在同一组内并行使用不同尺寸的卷积核。这样的设计有助于同时利用大尺寸卷积核的空间特征提取能力和小尺寸卷积核的计算效率,从而在保持准确性的同时减少模型的参数数量和计算成本。
详细内容见论文原文
2.1 在/ultralytics/nn/modules/block.py添加代码到末尾
- def autopad(k, p=None, d=1): # kernel, padding, dilation
- """Pad to 'same' shape outputs."""
- if d > 1:
- k = d * (k - 1) + 1 if isinstance(k, int) else [d * (x - 1) + 1 for x in k] # actual kernel-size
- if p is None:
- p = k // 2 if isinstance(k, int) else [x // 2 for x in k] # auto-pad
- return p
-
-
- class Conv(nn.Module):
- """Standard convolution with args(ch_in, ch_out, kernel, stride, padding, groups, dilation, activation)."""
- default_act = nn.SiLU() # default activation
-
- def __init__(self, c1, c2, k=1, s=1, p=None, g=1, d=1, act=True):
- """Initialize Conv layer with given arguments including activation."""
- super().__init__()
- self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p, d), groups=
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。