深度可分离卷积Dwconv

深度可分离卷积主要分为两个部分:逐通道卷积(Depthwise Convolution)、逐点卷积(Pointwise Convolution)

1.逐通道卷积

含义:每个通道都被一个卷积核负责(一个卷积核仅对一个通道负责),即卷积核数量和特征图输入、输出通道数相同。

本质:在不同通道上分别独立地进行特征提取

缺点:缺少空间上的相关性

以Win=Hin=3,CN(输入通道数)=3,Kw=Kh=3,ON(输出通道数)=3,Wo=Ho=3

参数量:Kw*Kh*CN(ON) = 3x3x3=27

计算量:Kw*Kh*Wo*Ho*CN(ON)=3x3x3x3x3=243

2.逐点卷积

含义:使用一个1x1xM,M为输入的通道数,将上一步得到的特征图进行深度的加权组合产生新的特征图,点卷积的shape(1x1xMxN),N为输出的通道数

本质:空间上一致的不同通道的特征进行加权融合,最终在同一个通道得到整合的特征。

Win=Hin=3, Kh=Kw=1,M=3,N=4, Wo=Ho=3

参数量:Kh*Kw*M*N=1x1x3x4=12

计算量:Kh*Kw*M*N*Wo*Ho=1x1x3x4x3x3=108

最终:经过逐通道卷积和逐点卷积,得到与使用普通卷积一样的通道数、长宽的特征图

3.与普通卷积对比

设普通卷积为regular,参数量为P,计算量为F

P_r=108

F_r=972

深度可分离卷积:

P_dw=27+12=39

F_dw=243+108=351

可以发现,相同的输入,分别经过普通卷积和深度可分离卷积可以得到长宽相同、通道相同的特征图,但是深度可分离卷积的参数量、计算量远小于卷积的。

因此在计算量相同的情况下,使用深度可分离卷积可以将网络做的更深

4.代码实现(未来补)

### 关于深度可分离卷积 (Depthwise Separable Convolution) 在深度学习领域,特别是针对卷积神经网络(CNN),深度可分离卷积(Depthwise Separable Convolution)是一种高效的替代传统标准卷积的方法[^1]。这种技术通过分解标准卷积操作来减少计算量并提高模型效率。 #### 深度可分离卷积的工作原理 传统的二维卷积层会同时处理输入数据的空间维度(宽度和高度)以及通道维度(颜色通道)。相比之下,深度可分离卷积分为两个阶段: 1. **逐通道卷积(depthwise convolution)**:在这个过程中,每个输入图像的单个通道被单独地应用一个小内核进行滤波。这意味着如果有一个三通道RGB图片,则会对红、绿、蓝三个平面分别施加相同的过滤器[^2]。 ```python import tensorflow as tf # 定义一个简单的逐通道卷积层 depthwise_conv_layer = tf.keras.layers.DepthwiseConv2D( kernel_size=(3, 3), padding='same' ) ``` 2. **逐点卷积(pointwise convolution)**:紧接着,在经过逐通道卷积之后的数据上再执行一次普通的1×1卷积,这一步骤用来调整特征图数量,并允许不同通道间的信息交流。 ```python pointwise_conv_layer = tf.keras.layers.Conv2D( filters=64, kernel_size=(1, 1), strides=(1, 1), padding='same', activation='relu' ) ``` 这种方法不仅减少了参数数目还降低了运算复杂度,从而使得训练更大更深的CNN成为可能,同时也提高了硬件资源利用率[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风的暖色调

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值