深度学习CV方向学习笔记6 —— 深度可分离卷积

目录

1 问题:深度可分离卷积和普通卷积的区别,前者为何提升速度不大?

2 深度可分离卷积和普通卷积的区别

2.1 总述

2.2 普通卷积图像

2.3 深度可分离卷积图像

3 为何提升速度没那么快

3.1 卷积层合并能提升速度

3.2 卷积层存在内存访问成本

4 参考链接


1 问题:深度可分离卷积和普通卷积的区别,前者为何提升速度不大?

 问题描述:MobileNet中使用了深度可分离卷积,与普通卷积的区别?为何速度提升没那么大?

2 深度可分离卷积和普通卷积的区别

 2.1 总述

 标准的普通卷积得到隐藏层的特征图后继续卷,其参数的计算次数是累乘。

 深度卷积的卷积,是对原有卷积的一个优化,得到特征图后,返回到输出结果上,对该特征图进行1*1的卷积核运算。所有其参数的计算次数为两个卷积之和,参数的计算次数要少。

 

 2.2 普通卷积图像

 三通道的图和一个大小为3X3的拥有3个通道的卷积核进行卷积,得到一张特征图,若要实现4张特征图就需要4组3X3的3通道的卷积核。

 普通卷积图像参数量:

  = (3×3) × 3 × 4

 其中,3×3 为卷积核大小 ,3 为通道,4为最终的输出的通道数。

 

 2.3 深度可分离卷积图像

  直接将RBG三个通道分别与三个单通道的卷积核进行卷积,得到3个特征图,可视作一个新的三通道的图像。

  然后对这三通道的特征图,分别使用1×1的3通道卷积核进行升维或降维,若最终要实现输出的通道数为4,则需要使用4个1X1的3通道卷积核。

深度可分离卷积图像参数量:

①: =  (3×3) × 3

其中,3×3为卷积核大小 ,3 为通道。

② : = (1×1) × 3 × 4

其中,1x1为卷积核大小 ,3 为通道,4为最终的输出的通道数。

所以最终的参数量 = ① + ② = (3×3) × 3  +  (1×1) × 3 × 4 ,中间使用加号连接

3 为何提升速度没那么快

 3.1 卷积层合并能提升速度

 拥有多个卷积核的卷积层也可以通过一次矩阵乘法完成运算,im2col+gemm

  将原始的图像像素按卷积核的大小进行展开,例如卷积核为3×3,将图像按照步长为1的形式拆解出每一个3×3的形式,将其拉平成1×9的形式,将每个1×9的进行拼接,成为n×9的矩阵,例如5×5的原始图像,能拆成9个3×3,所以n为9,成为9×9的矩阵。

 

  再将多个卷积核拉平,再排列:

 将两个矩阵相乘,即得到2个特征图拼接而成的矩阵,一行对应着一个特征图,将其还原成3×3即为所求特征图。

 

  而对于矩阵乘法,已经有很多的高效的算法,所以传统的卷积会很快。

 

 3.2 卷积层存在内存访问成本

 结论:在GPU上运行效率不显著,甚至可能更低,在CPU上运行效率提升较快

 原因1:串行与并行

 CPU:由于CPU的计算逻辑是串行的,最终的计算时间取决于计算的总量。而使用深度可分离能显著降低计算的参数量,所以在CPU上效果显著。

 GPU:GPU是进行并行计算的逻辑单元,深度可分离卷积的算法变相的将原来一层卷积变为了两层。而GPU的硬件决定的,计算每一层都是一次并行计算,取决于计算时间最长的那一次运算,一层完了后才下一层,所以最终的计算总时长为所有层数的相加,取决于层数。

 原因2:存在内存访问成本

 层数的增多,训练时就要调用前面的层已经计算好的存储在内存中的数,而内存的读与写相当耗时,成本较高。

 从硬件层面看,GPU只与寄存器进行数据交换,GPU与各存储单元的远近顺序为:

 GPU <------>寄存器 <---->缓存<----->内存

 因为要调用之前的数,就是在内存中寻址,所以耗时比直接在寄存器中差了两个数量级。

 而使用一层卷积,计算过程中是直接在寄存器中进行寻址的,访问效率极高。

4 参考链接

标准卷积_Ming Xu的博客-CSDN博客_标准卷积标准卷积假设特征图大小为 Ci×H×WC_i \times H \times WCi​×H×W , 需要输出的特征图大小为 ×H×W\times H \times W×H×W, 卷积核大小为 3×33\times 33×3, pandding 为 1, 标准卷积计算过程如图所示标准的卷积计算过程对于输入特征图的左上 Ci×3×3C_i \times 3 \times 3Ci​×3×3 特...https://blog.csdn.net/weixin_43862398/article/details/104598286 卷积原理:几种常用的卷积(标准卷积、深度卷积、组卷积、扩展卷积、反卷积)_绛洞花主敏明的博客-CSDN博客_扩展卷积公式0、标准卷积默认你已经对卷积有一定的了解,此处不对标准卷积细讲。举个例子,假设有一个3×3大小的卷积层,其输入通道为16、输出通道为32。那么一般的操作就是用32个3×3的卷积核来分别同输入数据卷积,这样每个卷积核需要3×3×16个参数,得到的输出是只有一个通道的数据。之所以会得到一通道的数据,是因为刚开始3×3×16的卷积核的每个通道会在输入数据的每个对应通道上做卷积,然后叠加每一个通道对应位置的值,使之变成了单通道,那么32个卷积核一共需要(3×3×16)×32 =4068个参数。1、深度卷积https://blog.csdn.net/qq_39852676/article/details/106570089 5分钟科普 | 深度学习 | 卷积网络为什么速度快?im2col是什么?能做什么?五分钟快速了解。_哔哩哔哩_bilibili为什么卷积神经网络的计算更为高效?im2col是什么?能做什么?5分钟快速了解。BGM: 水月陵 - We are alone.mp3配音: 微软Azure语音生成服务动画演示源代码:https://github.com/SmartPolarBear/animate_im2col参考文献:NVIDIA Deep Learning Performance Documentationhttps://d, 视频播放量 5180、弹幕量 2、点赞数 277、投硬币枚数 151、收藏人数 567、转发人数 44, 视频作者 -Zirco-, 作者简介 大三,是个玩玩摄影的写代码的,相关视频:如何通俗理解卷积?,卷积计算优化im2col+pack+sgemm,一天搞懂深度学习,54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读,周六啦!铁汁们,今天来聊聊我的深度学习之路,【人工智能趣味科普】5分钟快速了解深度学习,科技百科 什么是深度学习?,10.4-隐马尔可夫模型的预测问题-维特比算法,神经网络的简单偏好--第一届中国机器学习与科学应用大会报告,5分钟科普 | 深度学习 | 什么是跳跃连接?ResNet结构为什么有效?两篇论文告诉你。https://www.bilibili.com/video/BV1PP4y1f7PJ 薰风读论文:MobileNet 详解深度可分离卷积,它真的又好又快吗? - 知乎这是薰风读论文的第 7 篇投稿,本文的计算有点多,但要耐心看完薰风说虽然MobileNets[1]在结构上与VGGNet[2]类似,属于简单的流线型架构。但其使用深度可分离卷积层替换之前的全卷积层,以达到压缩参数数量并轻量…https://zhuanlan.zhihu.com/p/80177088

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值