首页 > 其他分享 >深度可分离卷积

深度可分离卷积

时间:2024-04-11 22:22:06浏览次数:32  
标签:map Convolution depthwise 卷积 分离 Feature 深度 通道

https://blog.csdn.net/zml194849/article/details/117021815

一些轻量级的网络,如mobilenet中,会有深度可分离卷积depthwise separable convolution,由depthwise(DW)和pointwise(PW)两个部分结合起来,用来提取特征feature map。相比常规的卷积操作,其参数数量和运算成本比较低。

深度可分离卷积主要分为两个过程,分别为逐通道卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。

逐通道卷积(Depthwise Convolution)
Depthwise Convolution的一个卷积核负责一个通道,一个通道只被一个卷积核卷积,这个过程产生的feature map通道数和输入的通道数完全一样。

一张5×5像素、三通道彩色输入图片(shape为5×5×3),Depthwise Convolution首先经过第一次卷积运算,DW完全是在二维平面内进行。卷积核的数量与上一层的通道数相同(通道和卷积核一一对应)。所以一个三通道的图像经过运算后生成了3个Feature map(如果有same padding则尺寸与输入层相同为5×5),如下图所示。(卷积核的shape即为:卷积核W x 卷积核H x 输入通道数)

 

 

其中一个Filter只包含一个大小为3×3的Kernel,卷积部分的参数个数计算如下(即为:卷积核Wx卷积核Hx输入通道数):

N_depthwise = 3 × 3 × 3 = 27

计算量为(即:卷积核W x 卷积核H x (图片W-卷积核W+1) x (图片H-卷积核H+1) x 输入通道数)

C_depthwise=3x3x(5-2)x(5-2)x3=243

Depthwise Convolution完成后的Feature map数量与输入层的通道数相同,无法扩展Feature map。而且这种运算对输入层的每个通道独立进行卷积运算,没有有效的利用不同通道在相同空间位置上的feature信息。因此需要Pointwise Convolution来将这些Feature map进行组合生成新的Feature map。

逐点卷积(Pointwise Convolution)
Pointwise Convolution的运算与常规卷积运算非常相似,它的卷积核的尺寸为 1×1×M,M为上一层的通道数。所以这里的卷积运算会将上一步的map在深度方向上进行加权组合,生成新的Feature map。有几个卷积核就有几个输出Feature map。(卷积核的shape即为:1 x 1 x 输入通道数 x 输出通道数)

 

 

由于采用的是1×1卷积的方式,此步中卷积涉及到的参数个数可以计算为(即为:1 x 1 x 输入通道数 x 输出通道数):

N_pointwise = 1 × 1 × 3 × 4 = 12

计算量(即为:1 x 1 x 特征层W x 特征层H x 输入通道数 x 输出通道数):

C_pointwise = 1 × 1 × 3 × 3 × 3 × 4 = 108

经过Pointwise Convolution之后,同样输出了4张Feature map,与常规卷积的输出维度相同。

四、参数对比
回顾一下,常规卷积的参数个数为:

N_std = 4 × 3 × 3 × 3 = 108

Separable Convolution的参数由两部分相加得到:

N_depthwise = 3 × 3 × 3 = 27

N_pointwise = 1 × 1 × 3 × 4 = 12

N_separable = N_depthwise + N_pointwise = 39

相同的输入,同样是得到4张Feature map,Separable Convolution的参数个数是常规卷积的约1/3。因此,在参数量相同的前提下,采用Separable Convolution的神经网络层数可以做的更深。

五、计算量对比
回顾一下,常规卷积的计算量为:

C_std =3*3*(5-2)*(5-2)*3*4=972

Separable Convolution的计算量由两部分相加得到:

C_depthwise=3x3x(5-2)x(5-2)x3=243

C_pointwise = 1 × 1 × 3 × 3 × 3 × 4 = 108

C_separable = C_depthwise + C_pointwise = 351

相同的输入,同样是得到4张Feature map,Separable Convolution的计算量是常规卷积的约1/3。因此,在计算量相同的情况下,Depthwise Separable Convolution可以将神经网络层数可以做的更深。

标签:map,Convolution,depthwise,卷积,分离,Feature,深度,通道
From: https://www.cnblogs.com/Dongmy/p/18130139

相关文章

  • 【论文随笔】深度推荐系统的自动化_一项调查(Automl for deep recommender systems_ A
    前言今天读的论文为一篇于2021年1月发表在ACMTransactionsonInformationSystems的论文,本文是一篇关于深度推荐系统自动化机器学习(AutoML)的综述,由RuiqiZheng、LiangQu、BinCui、YuhuiShi和HongzhiYin共同撰写。文章首先提出了一个抽象概念——AutoMLforDeepRecommende......
  • 卷积神经网络中的 “全连接层”
    原文链接:https://blog.csdn.net/nanhuaibeian/article/details/100532038、https://cloud.tencent.com/developer/article/2299601改进:https://www.bilibili.com/read/cv28976895/    CNN中的逐点卷积:替换全连接层它利用转置卷积层来替换CNN最后的全连接层,从而可以实现......
  • 卷积神经网络-激活函数
    原文链接:https://zhuanlan.zhihu.com/p/508741909?utm_id=0、https://zhuanlan.zhihu.com/p/476373735?utm_id=0、https://blog.csdn.net/purple_love/article/details/134620930https://www.zhihu.com/question/60650016/answer/2441796198?utm_id=0卷积神经网络中的卷积和池化......
  • 卷积神经网络中池化层的详细介绍
    原文链接:https://blog.csdn.net/a486259/article/details/131311587https://zhuanlan.zhihu.com/p/476242144池化层的本质是一个下采样,因为数据经过卷积之后维度越来越高,而且特征图没有多大改变,在连续多个卷积之后,会产生一个很大的参数量,不仅会大大的增加网络训练的难度,还容易造......
  • 深度 学习
    深度学习入门数据是学习的核心引入:深度学习是机器学习的一个子领域,而机器学习的研究目标是让人工智能具备学习的能力。深度学习,机器学习,人工智能字里行间透漏着理性和高大尚的味道。(对于这种看着高大尚感觉距离现实很远的东西一般下一句都是“其实就在身边”吧)其实,图像识别(人脸......
  • 一个PDF文件含有多篇不同的内容,如何把这些内容分离出来?
    一,PDF的含义PDF,全称PortableDocumentFormat,即便携式文档格式,是一种由AdobeSystems开发的文件格式,用于呈现文档,包括文本、图像、向量图形、字体、颜色、页面布局等,并可在不同的操作系统、设备和软件平台上进行查看和打印。PDF文件的设计初衷是为了解决不同操作系统和应用程......
  • 深度学习-nlp-循环神经网络RNN--69
    目录1.概述2.RNN的模型参考:https://zhuanlan.zhihu.com/p/308449051.概述输出会反馈到输入的神经网络:循环神经网络(RecurrentNeuralNetworks,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域。在前面讲到的DNN和CNN中,训练样本的输入和输出......
  • 数据是一维数据,利用tensorflow深度学习框架,写一个带自注意力机制的卷积神经网络,并进行
    下面是一个使用TensorFlow框架的带有自注意力机制的卷积神经网络(Self-AttentionConvolutionalNeuralNetwork)的示例代码,包括数据处理、模型定义和训练过程:importtensorflowastffromtensorflow.keras.layersimportConv1D,Dense,GlobalMaxPooling1D,Concatenate#......
  • 1*1卷积核的作用
    1*1卷积核是卷积神经网络中的一种特殊类型的卷积核。它可以用于以下几个方面:降维:通过使用1*1卷积核,可以将输入特征图的通道数进行降维。这对于减少模型参数和计算量非常有用,特别是在深层网络中。通过降维,可以减少后续层的计算负担。增加非线性:1*1卷积核可以引入非线性变......
  • 前后端分离开发和接口文档管理平台YAPI以及前端工程化(Vue-cli)
    前后端分离开发和接口文档管理平台YAPI以及前端工程化(Vue-cli)前后端分离开发需求分析=>接口定义(API接口文档)=>前后端并行开发(遵守规范)=>测试(前端、后端)=>前后端联调测试YApi1.介绍:YApi是高效、易用、功能强大的api管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服......