可以在手机上运行的CNN,所以称之为移动网络,主要是运用了深度可分离卷积(depthwise-separable convolution)降低了运算量使得网络能在低算力情境下运行。

文章目录

  • 深度可分离卷积
  • 搭建移动网络
  • EfficientNet

深度可分离卷积

先看看普通的的卷积运算:

上图展示的是一个6×6×36\times 6\times 36×6×3的输入矩阵经过555个3×3×33\times 3\times 33×3×3的过滤器得到4×4×54\times 4\times 54×4×5的输出矩阵需要的计算,次数大概是过滤器大小乘以输出矩阵大小,即3×3×3×4×4×5=21603\times 3\times 3\times 4\times 4\times 5=21603×3×3×4×4×5=2160次。对于一个6×66\times 66×6像素的图片尚且如此,不难想象在正常图片甚至高清大图上应用卷积的计算量。

为了减少计算,深度可分离卷积应运而生。

首先,我们的过滤器不再是3×3×33\times 3\times 33×3×3的整体,而是3个3×33\times 33×3的过滤器,区别就在于现在每个过滤器只与对应通道的输入矩阵卷积,也就是所谓在深度上分离:

所以只需要运算3×3×4×4×3=4323\times 3\times 4\times 4\times 3=4323×3×4×4×3=432次,省掉了过滤器个数这个维度。

下一步,则是通过一个1×11\times 11×1过滤器,这一步用的就是正常卷积,采用5个1×11\times 11×1过滤器得到4×4×54\times 4\times 54×4×5的输出矩阵:

这一步计算需要1×1×3×4×4×5=2401\times 1\times 3\times 4\times 4\times 5=2401×1×3×4×4×5=240次乘法。

所以深度可分离卷积只会用到432+240=672432+240=672432+240=672次运算,只有普通卷积的13\frac{1}{3}31​不到。更一般的,对于滤波器大小为f×f×ncf\times f\times n_cf×f×nc​,个数为nc′n_c'nc′​,输出矩阵大小为n×n×nc′n\times n\times n_c'n×n×nc′​的卷积运算,正常计算需要
f×f×nc×n×n×nc′=f2ncn2nc′f\times f\times n_c\times n\times n\times n_c'=f^2n_cn^2n_c' f×f×nc​×n×n×nc′​=f2nc​n2nc′​次,而采用深度可分离卷积只需要
f×f×n×n×nc+1×1×nc×n×n×nc′=f2ncn2+ncn2nc′=ncn2(f2+nc′)f\times f\times n\times n\times n_c+1\times 1\times n_c\times n\times n\times n_c'=f^2n_cn^2+n_cn^2n_c'=n_cn^2(f^2+n_c') f×f×n×n×nc​+1×1×nc​×n×n×nc′​=f2nc​n2+nc​n2nc′​=nc​n2(f2+nc′​)次,仅为普通卷积的f2+nc′f2nc′=1f2+1nc′\frac{f^2+n_c'}{f^2n_c'}=\frac{1}{f^2}+\frac{1}{n_c'}f2nc′​f2+nc′​​=f21​+nc′​1​倍。而一般而言,nc′n_c'nc′​要远大于f2f^2f2,因此运算量差不多只占19\frac{1}{9}91​或125\frac{1}{25}251​。

搭建移动网络


第一个版本就是上面讲的深度可分离版本的卷积网络,在13次重复以后连接到池化层、全连接层和softmax层。

下方是改进的第二个版本,加入了残差以及扩展层:

在扩展层中,我们用大量的1×11\times 11×1过滤器做卷积,使矩阵通道数增加,然后再做深度可分离卷积,一通操作以后矩阵规模变回原来的大小。因为第二次1×11\times 11×1过滤的时候通道数目减少了,所以这一层又被称为投影层。

通过扩展层,我们向网络中加入了更丰富的运算,使得网络可以实现更复杂的功能,而在瓶颈块结束的时候又用一个投影层还原,使得移动设备不需要储存太多的值,节省内存。

EfficientNet

在结尾,吴恩达还介绍了一下移动网络的变体EfficientNet,它可以根据设备所有的资源自动调整输入图像分辨率、网络深度以及宽度等,从而更充分地利用移动设备资源,也能在资源有限的设备上进行调整使得网络能够运行。

深度学习:卷积神经网络之移动网络(MobileNet)相关推荐

  1. 深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)

    1. CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 2. LeNet-5网络 输入尺寸: ...

  2. 毕设 深度学习卷积神经网络的花卉识别

    文章目录 0 前言 1 项目背景 2 花卉识别的基本原理 3 算法实现 3.1 预处理 3.2 特征提取和选择 3.3 分类器设计和决策 3.4 卷积神经网络基本原理 4 算法实现 4.1 花卉图像数 ...

  3. 毕业设计 - 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

    文章目录 0 前言 1 项目背景 2 花卉识别的基本原理 3 算法实现 3.1 预处理 3.2 特征提取和选择 3.3 分类器设计和决策 3.4 卷积神经网络基本原理 4 算法实现 4.1 花卉图像数 ...

  4. 深度学习 卷积神经网络-Pytorch手写数字识别

    深度学习 卷积神经网络-Pytorch手写数字识别 一.前言 二.代码实现 2.1 引入依赖库 2.2 加载数据 2.3 数据分割 2.4 构造数据 2.5 迭代训练 三.测试数据 四.参考资料 一. ...

  5. 深度学习 卷积神经网络原理

    深度学习 卷积神经网络原理 一.前言 二.全连接层的局限性 三.卷积层 3.1 如何进行卷积运算? 3.2 偏置 3.3 填充 3.4 步长 3.5 卷积运算是如何保留图片特征的? 3.6 三维卷积 ...

  6. 深度学习卷积神经网络——经典网络LeNet-5、AlexNet、ZFNet网络的搭建与实现

    一.CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 二.LeNet-5网络 输入尺寸:32 ...

  7. 深度学习-卷积神经网络初识-1

    卷积神经网络 技交部 潘震宇 一.计算机视觉 在计算机视觉领域中,存在着许多问题,各类领域基本都包含着这俩种基础问题: 1. 图像分类 2. 目标检测 除上述之外,最近有一种新颖的技术,也出现在大众的 ...

  8. 深度学习——卷积神经网络的应用——目标检测

    一.理论部分介绍 1. 目标定位和特征点检测 图片检测问题: 分类问题:判断图中是否为汽车: 目标定位:判断是否为汽车,并确定具体位置: 目标检测:检测不同物体并定位. 目标分类和定位: 对于目标定位 ...

  9. 深度学习 --- 卷积神经网络CNN(LeNet-5网络学习算法详解)

    上一节我们详细探讨了LeNet-5网络的架构,但是还没有解释该网络是如何进行学习的,如何更新权值的,本节将接着上一节进一步CNN的学习机制和权值更新过程,这里请大家一定要对CNN网络有一个清晰的认识, ...

  10. 深度学习 --- 卷积神经网络CNN(LeNet-5网络详解)

    卷积神经网络(Convolutional Neural Network,CNN)是一种前馈型的神经网络,其在大型图像处理方面有出色的表现,目前已经被大范围使用到图像分类.定位等领域中.相比于其他神经网 ...

最新文章

  1. IIS6的PHP最佳配置方法
  2. js中期BOM及this指向
  3. 为什么程序员不擅长评估开发时间?(转)
  4. 使用Nginx过滤网络爬虫
  5. 你为什么需要在64位系统下用32位程序
  6. java几点钟_实现 Java 本地缓存,该从这几点开始
  7. 苹果4如何添加时间插件_苹果手机如何添加九键或26键输入法?iPhone怎样快速切换输入法?...
  8. 论文浅尝 | KGAT: 用于推荐的知识图注意力网络
  9. Oracle的执行计划详解
  10. Vegas轻松get制作动态背景技能
  11. js基础知识汇总08
  12. mybatis 为什么每次插入的时候总会创建一个SqlSession?
  13. 【Web技术】(实验一)HTML静态网页设计
  14. 偶极子阵列天线(带反射板)+单层天线罩
  15. MATLAB工具箱概述
  16. 10年外贸人工具:邮件群发软件工具哪个好?
  17. 中文界面blend_Blend Modes v3.4 – unity混合模式插件
  18. 微信公众号运营都有哪些实用小技巧,你学会了吗
  19. 安装 macbook 双系统( OS X 和 Ubuntu )
  20. SQL注入学习日记(一)

热门文章

  1. CISCO防火墙自动配置、备份脚本
  2. 信息安全收集注意事项
  3. 用swift写的一款小游戏,模仿的僵尸危机
  4. 51nod 1022 石子归并 V2(四边形不等式)
  5. mysql增删改处理
  6. 装机吧盘点电脑自动重启的解决办法
  7. Centos中安装memcached
  8. MyCat分片规则之按自然月分片
  9. Java中的类加载器ClassLoader
  10. javascript实现继承的几种主要方法