深度学习:卷积神经网络之移动网络(MobileNet)
可以在手机上运行的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′=f2ncn2nc′次,而采用深度可分离卷积只需要
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′=f2ncn2+ncn2nc′=ncn2(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)相关推荐
- 深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
1. CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 2. LeNet-5网络 输入尺寸: ...
- 毕设 深度学习卷积神经网络的花卉识别
文章目录 0 前言 1 项目背景 2 花卉识别的基本原理 3 算法实现 3.1 预处理 3.2 特征提取和选择 3.3 分类器设计和决策 3.4 卷积神经网络基本原理 4 算法实现 4.1 花卉图像数 ...
- 毕业设计 - 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉
文章目录 0 前言 1 项目背景 2 花卉识别的基本原理 3 算法实现 3.1 预处理 3.2 特征提取和选择 3.3 分类器设计和决策 3.4 卷积神经网络基本原理 4 算法实现 4.1 花卉图像数 ...
- 深度学习 卷积神经网络-Pytorch手写数字识别
深度学习 卷积神经网络-Pytorch手写数字识别 一.前言 二.代码实现 2.1 引入依赖库 2.2 加载数据 2.3 数据分割 2.4 构造数据 2.5 迭代训练 三.测试数据 四.参考资料 一. ...
- 深度学习 卷积神经网络原理
深度学习 卷积神经网络原理 一.前言 二.全连接层的局限性 三.卷积层 3.1 如何进行卷积运算? 3.2 偏置 3.3 填充 3.4 步长 3.5 卷积运算是如何保留图片特征的? 3.6 三维卷积 ...
- 深度学习卷积神经网络——经典网络LeNet-5、AlexNet、ZFNet网络的搭建与实现
一.CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 二.LeNet-5网络 输入尺寸:32 ...
- 深度学习-卷积神经网络初识-1
卷积神经网络 技交部 潘震宇 一.计算机视觉 在计算机视觉领域中,存在着许多问题,各类领域基本都包含着这俩种基础问题: 1. 图像分类 2. 目标检测 除上述之外,最近有一种新颖的技术,也出现在大众的 ...
- 深度学习——卷积神经网络的应用——目标检测
一.理论部分介绍 1. 目标定位和特征点检测 图片检测问题: 分类问题:判断图中是否为汽车: 目标定位:判断是否为汽车,并确定具体位置: 目标检测:检测不同物体并定位. 目标分类和定位: 对于目标定位 ...
- 深度学习 --- 卷积神经网络CNN(LeNet-5网络学习算法详解)
上一节我们详细探讨了LeNet-5网络的架构,但是还没有解释该网络是如何进行学习的,如何更新权值的,本节将接着上一节进一步CNN的学习机制和权值更新过程,这里请大家一定要对CNN网络有一个清晰的认识, ...
- 深度学习 --- 卷积神经网络CNN(LeNet-5网络详解)
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈型的神经网络,其在大型图像处理方面有出色的表现,目前已经被大范围使用到图像分类.定位等领域中.相比于其他神经网 ...
最新文章
- IIS6的PHP最佳配置方法
- js中期BOM及this指向
- 为什么程序员不擅长评估开发时间?(转)
- 使用Nginx过滤网络爬虫
- 你为什么需要在64位系统下用32位程序
- java几点钟_实现 Java 本地缓存,该从这几点开始
- 苹果4如何添加时间插件_苹果手机如何添加九键或26键输入法?iPhone怎样快速切换输入法?...
- 论文浅尝 | KGAT: 用于推荐的知识图注意力网络
- Oracle的执行计划详解
- Vegas轻松get制作动态背景技能
- js基础知识汇总08
- mybatis 为什么每次插入的时候总会创建一个SqlSession?
- 【Web技术】(实验一)HTML静态网页设计
- 偶极子阵列天线(带反射板)+单层天线罩
- MATLAB工具箱概述
- 10年外贸人工具:邮件群发软件工具哪个好?
- 中文界面blend_Blend Modes v3.4 – unity混合模式插件
- 微信公众号运营都有哪些实用小技巧,你学会了吗
- 安装 macbook 双系统( OS X 和 Ubuntu )
- SQL注入学习日记(一)