2d卷积、分组卷积与深度可分离卷积

卷积核选取计算

卷积的本质
在这里插入图片描述
卷积核在图像(数据矩阵)上滑动,生成卷积结果;
卷积的相关参数有卷积核的大小(k x k),步长stride,填充padding,常见的卷积核有1 x 1,3 x 3, 5 x 5,图中就是一个3 X 3 卷积核,步长为1 ,无填充。填充可以使卷积前后大小一样。
卷积后大小的计算公式为:

= l − k + 2 p s + 1 = \frac{l-k+2p}{s} + 1 =slk+2p+1
为什么是3 X 3这样的小卷积核,而不是7 X 7,9 X 9这样的大核?
1.节省参数量
一次 5 X 5与2次 3 X 3有相同感受野
对于32 X 32 的矩阵,
用3 X 3进行两次卷积,池化:
32 X 32 ---- 30 X 30 ----15 X 15 ----(p =1)14 X 14 ----7 X 7
用9 X 9进行一次卷积,池化:
32 X 32 ---- 24X 24 ----12 X 12
两次卷积参数量为18,一次为81
2.增加网络深度,网络越深拟合性能越好

分组卷积

分组卷积(Group Convolution) 起源于2012年的 AlexNet - 《ImageNet Classification with Deep Convolutional Neural Networks》,将Feature Maps分给多个GPU(两块rx580,yyds)进行处理,最后把多个GPU的结果进行融合
在这里插入图片描述

标准2D卷积:w × h × C × C’

分组卷积:w × h × C/2 × C’/2 × 2

参数量减少到原来的1/2,而且在某些情况下,分组卷积能带来的模型效果确实要优于标准的2D 卷积,是因为组卷积的方式能够增加相邻层filter之间的对角相关性,而且能够减少训练参数,不容易过拟合,这类似于正则的效果。

深度可分离卷积

深度可分离卷积,在轻量级环境下常用,比如Mobilenet
下面两幅图分别就是depthwise卷积和pointwise卷积的示意图:
在这里插入图片描述

在这里插入图片描述
可以看出depthwise卷积相当于更多分组的的分组卷积,pointwise卷积是1 X 1的2d卷积。
depthwise卷积的计算量更少,常用于轻量级平台,如MobileNet网络
pointwise卷积主要用于升维和降维。

<think>好的,我现在需要回答用户关于分组卷积深度可分离卷积区别及应用场景的问题。首先,我得回顾一下用户提供的引用内容,确保准确理解这两个概念。 根据引用[1],分组卷积是将输入特征图按通道分组,每组使用独立的卷积核,输出拼接而成。当分组数等于输入通道数时,就变成了深度卷积,但这里提到深度卷积通常是深度可分离卷积的一部分,可能存在区别。这提示我需要区分分组卷积的不同分组情况,特别是当分组数等于通道数时的特殊情况。 引用[2]详细说明了深度可分离卷积由逐深度卷积和逐点卷积组成。逐深度卷积对每个通道独立处理,而逐点卷积用1x1卷积聚合通道。这里的关键是深度可分离卷积分为两步,而分组卷积可能只涉及其中一部分,比如当分组数等于通道数时,分组卷积相当于逐深度卷积,但缺少后面的逐点卷积步骤。 引用[3]指出MobileNet使用了深度可分离卷积,降低了计算复杂度和模型大小,适合移动端应用。这说明应用场景上,深度可分离卷积适合资源受限的环境,而分组卷积可能在模型如ResNeXt中使用,平衡计算量和性能。 接下来,我需要整理两者的核心区别: 1. **结构组成**:深度可分离卷积包含逐深度卷积和逐点卷积两个步骤;而分组卷积是单一操作,当分组数等于通道数时,只是逐深度卷积,没有后续的逐点卷积。 2. **通道交互**:分组卷积在各组内部处理,不同组之间不交互,输出通道是各组的拼接;深度可分离卷积通过逐点卷积实现跨通道的信息融合,增强了通道间的交互。 3. **参数量计算量**:需要计算两者的参数量差异。例如,输入通道为C,输出为C',卷积核大小为KxK。分组卷积的参数量是 (C/g * K*K) * C',其中g为分组数。当g=C时,参数量为 (1*K*K)*C',但输出通道为C,此时可能需要调整。而深度可分离卷积的逐深度参数量是C*K*K,逐点参数量是C*1*1*C',总参数量为C*K*K + C*C'。对比标准卷积的C*K*K*C',显然深度可分离更高效。 4. **应用场景**:分组卷积常用于减少参数量同时保持一定性能,如ResNeXt;深度可分离卷积用于极度追求轻量化的场景,如MobileNet。 需要注意引用中的描述,特别是当分组数等于通道数时,分组卷积变为深度卷积,但深度可分离卷积还包含逐点卷积。所以两者结构不同,不能直接等同。 可能用户会混淆分组卷积的极端情况深度可分离卷积,需要明确区分。同时,应用场景的例子需要具体模型支持,如引用提到的MobileNet使用深度可分离,而分组卷积用于其他模型。 最后,生成相关问题时要围绕两者的区别、计算量、应用实例展开,确保问题覆盖知识点的不同方面。</think>### 分组卷积深度可分离卷积的区别及应用场景 #### 1. 核心区别 | **特性** | **分组卷积** | **深度可分离卷积** | |-------------------|-----------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| | **结构组成** | 单一操作,将输入通道分组后独立卷积,输出拼接[^1] | 两步操作:逐深度卷积(每组仅一个通道) + 逐点卷积(1x1卷积聚合通道)[^2] | | **通道交互** | 组内独立计算,组间无交互(除非后续添加其他操作) | 通过逐点卷积实现跨通道信息融合[^2] | | **参数量** | 参数量为 $\frac{C_{\text{in}} \times C_{\text{out}} \times K^2}{g}$($g$为分组数) | 逐深度卷积:$C_{\text{in}} \times K^2$;逐点卷积:$C_{\text{in}} \times C_{\text{out}}$;总计显著低于标准卷积[^3] | | **计算效率** | 减少计算量至标准卷积的 $1/g$(分组数为$g$时) | 计算量为标准卷积的 $\frac{1}{K^2} + \frac{1}{C_{\text{out}}}$(假设$C_{\text{out}} \gg K^2$)[^3] | #### 2. 关键差异点 - **分组数的极端情况**: 当分组数 $g = C_{\text{in}}$(输入通道数)时,分组卷积变为**逐深度卷积**,但此时输出通道数仍为 $C_{\text{in}}$,需额外操作才能调整输出维度。而深度可分离卷积通过逐点卷积(1x1卷积)直接控制输出通道数[^1]。 - **功能定位**: 分组卷积通过减少组内连接降低计算量,常用于平衡性能效率(如ResNeXt);深度可分离卷积则通过解耦空间通道特征提取,专为移动端轻量化设计(如MobileNet)[^3]。 #### 3. 应用场景 - **分组卷积**: - 需要中等计算效率的场景(如服务器端模型)。 - 模型设计中需增强局部特征提取(如分组卷积+通道重排)。 - 示例:ResNeXt通过分组卷积实现多分支特征融合。 - **深度可分离卷积**: - 移动端/嵌入式设备等资源受限环境。 - 实时性要求高的任务(如目标检测、图像分类)。 - 示例:MobileNet系列的核心组件。 --- ### 代码示例(分组卷积 vs 深度可分离卷积) ```python # 分组卷积(PyTorch实现) import torch.nn as nn group_conv = nn.Conv2d(in_channels=64, out_channels=64, kernel_size=3, groups=8) # 8组,每组8通道 # 深度可分离卷积(逐深度 + 逐点) depthwise = nn.Conv2d(64, 64, kernel_size=3, groups=64) # 逐深度卷积(每组1通道) pointwise = nn.Conv2d(64, 128, kernel_size=1) # 逐点卷积调整输出通道 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值