深度可分离卷积

1. 常规卷积运算

假设输入层为一个大小为64×64像素、三通道彩色图片。经过一个包含4个Filter的卷积层,最终输出4个Feature Map,且尺寸与输入层相同。整个过程可以用下图来概括:
在这里插入图片描述
卷积层共有4个Filters,每个Filter有3个kernel,每个Kernel的大小为3x3,因此卷积层的参数数量为:4 x 3 x 3 x 3 = 108

2. 深度可分离卷积

深度可分离卷积将常规卷积分成两步(Depthwise Convolution与Pointwise Convolution)来提取Feature Map,其优点是通过减少参数量,降低运行成本。

2.1 Depthwise Convolution

一个大小为64×64像素、三通道彩色图片首先经过第一次卷积运算,不同之处在于此次的卷积完全是在二维平面内进行,且Filter的数量与上一层的Depth相同。相当于对每个Channel先进行一次卷积运算,所以一个三通道的图像经过运算后生成了3个Feature map,如下图所示:

在这里插入图片描述
其中,一个Filter只有一个kernel,每个kernel的大小为3 x 3,经过DepthWise Convolution后的Feature Map数量与输入层的Depth相同,这种运算对输入层的每个Channel进行一次单独的卷积运算,没有有效利用不同Map在相同空间位置上的有效信息,因此需要经过Pointwise Convolution来将这些Map组合成新的Feature Map。

2.2 Pointwise Convolution

Pointwise Convolution的卷积核尺寸为1 x 1 x M,M为前一层的Depth,因此该层卷积会将上一层的Feature在深度上进行加权组合,生成新的Feature Map,有几个Filter就有几个Feature Map。

在这里插入图片描述

2.3 参数对比

普通卷积参数量:4 x 3 x 3 x 3 = 108;
深度可分离卷积参数量:3 x 3 x 3 + 4 x 3 = 39;
使用深度可分离卷积参数量大概为普通卷积的三分之一。

3. 实际应用

在产品上适配MobileNetv2时,遇到了大量的深度可分离卷积操作。MobileNet通过使用深度可分离卷积在牺牲部分精度的情况下,极大的降低了参数量。

产品源码似乎是通过将group参数从1改为输入通道数来实现的深度可分离卷积。但是编译过程中,由于修改group参数的值,该层的权重数据也扩大了group倍,导致实际编译出来的模型比原始模型大了三倍左右,后续可能需要进行优化。

深度可分离卷积部分参考了:https://yinguobing.com/separable-convolution/#fn2,本文只做个人参考,侵删。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值