轻量级网络之mobilenet_v1详解
轻量级网络之mobilenet_v1详解
前言:学习网络结构有一段时间了,记录下mobilenet_v1的结构
论文地址:https://arxiv.org/pdf/1704.04861.pdf
一、mobilenet_v1 研究背景
1.随着Alexnet 获得2012年的 ILSVRC 2012的挑战冠军,通常的趋势是通过搭建更深的和更复杂的网络来获得更高的准确率。这些进步虽然可以提高精度,但在推理速度和模型大小却不一定是高效的。
2.考虑在有限算力的平台上需要实时获得识别任务, 提出在移动端或者嵌入式中的轻量级神经网络。
二、如何实现轻量级神经网络
1.将标准的卷积核改成深度可分离卷积。
1.1 标准卷积(以3*3 为例子)
标准卷积计算量 = H * W * Dk * Dk * M * N
1.2 深度可分离卷积对比
参数计算量:包括深度卷积和逐点卷积
其中深度卷积计算量 = H * W * Dk * Dk * M
逐点卷积计算量 = M * N * 1 * 1 * H * W
1.3 标准卷积与深度可分离卷积计算量之比
倍率 = (H * W * Dk * Dk * M + M * N * 1 * 1 * H * W ) / (H * W * Dk * Dk * M * N )
= 1/N +1/( Dk * Dk)
1.4结论
深度可分离卷积的计算量是标准卷积 的 1/N +1/( Dk * Dk)倍。通常情况下,N (输出通道)远大于卷积核尺寸,故1/N +1/( Dk * Dk) 近似等于 1/( Dk * Dk)。当卷积核的大小为Dk =3 时,深度可分离卷积的计算量约为标准卷积的1/9倍。
2.提供宽度因子和图像分辨率因子来控制模型的大小及输入图片的大小。
2.1宽度因子
在有些应用场景中,可能需要更小的模型。因此引入了一个称为宽度因子的非常简单的参数α。宽度因子α的作用是在每层均匀地缩小网络。对于给定的层并且宽度乘法器α,那么输入通道M的数量变为αm,输出通道n的数量变为αn。α的取值范围通常为(0,1],当然大于1也可以。在速度、大小和精度上做权衡。
2.2图像分辨率因子
减少计算的第二个超参数,分辨率因子ρ。通过减少图片的输入尺寸来减少计算量。
原来图像大小为H * W,加入分辨率因子后图像大小为 ρH * ρW。通常取值范围为(0,1]
2.3 宽度因子和分辨率因子结合,深度可分离卷积的计算量如下所示
计算量 = DK · DK · αM · ρDF · ρDF + αM · αN · ρDF · ρDF。
三、网络结构介绍
1.mobilenet_v1 网络结构如下:
2.参数量如图所示
四、网络模块介绍
1.Conv (标准卷积)
2. Depthwise Conv + Pointwise Conv (深度可分离卷积)
3.Avg Pool (平均池化)
平均池化:计算图像区域的平均值作为该区域池化后的值。常规的平均池化计算过程如下图所示
注意:mobilenet_v1中平均池化采用的步长(stride =1)、卷积核尺寸为7*7。步长为1,平均池化后输入的特征图大小不变,依然为7 * 7 * 1024。
4.FC(全连接层)
全连接层将前面平均池化层的特征图拉成一维的向量:7 * 7 * 1024 ——> 1 * 1 * 50176
将一维向量 1 * 1 * 50176 乘以 权重,然后加上偏置,获得 1 * 1 * 1024 的向量。
5.SoftMax
将全连接层的一维向量 通过公式 获得每一类的分数,公式如下:
其中,Zi为第i个节点的输出值,C为输出节点的个数。通过以e为底数的Zi 次方,将第i 个节点的输出值(实数)映射到0到正无穷;通过归一化的方法,将映射的值转换成0-1的概率值,也就是类别的分数值。
轻量级网络之mobilenet_v1详解相关推荐
- 【轻量级网络】MobileNet-v2详解
论文:<Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification, Detection and ...
- 【轻量级网络】MobileNet-v1详解
论文:<MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications> 论文链接:h ...
- 科普:5G网络关键技术详解
不久前,中国华为公司主推的Polar Code(极化码)方案,成为5G控制信道eMBB场景编码方案.消息一出,在网络上就炸开了锅,甚至有媒体用"华为碾压高通,拿下5G时代"来形容这 ...
- openstack架构详解图_英特尔顶级技术专家合力缔造精品:Linux开源网络全栈详解...
日常水开篇 自1991年诞生起,Linux已经走过了接近三十年.Linux早已没有了问世时的稚气,正在各个领域展示自己成熟的魅力. 以Linux为基础,也衍生出了各种开源生态,例如网络和存储.而生态离 ...
- 2020中级计算机工程师,2020年上半年中级网络工程师报考详解
原标题:2020年上半年中级网络工程师报考详解 软考全称叫做"全国计算机技术与软件专业技术资格(水平)考试"已经开展了十多年了,所受到的欢迎程度也是越来越高,据统计累计参加软考的人 ...
- iOS开发——使用Charles进行https网络抓包详解
我在前面两篇博客中<网络抓包工具Charles的介绍与使用><iOS开发--使用Charles进行http网络抓包详解>对Charles的http抓包进行了详细的讲解.今天我们 ...
- Incremental-Network-Quantization增量网络量化论文详解
Incremental-Network-Quantization增量网络量化论文详解 笔者将从以下几个方面分析该论文的原理及其实现,由于笔者能力有限,如有错误望诸公指正. 论文作者代码:https:/ ...
- linux网络服务详解,Linux网络服务器配置基础详解 (3)
Linux网络服务器配置基础详解 (3) Linux网络服务器配置基础详解 (3) 第三步:编辑"inetd.conf"文件(vi /etc/inetd.conf),禁止所有不需要 ...
- 看完之后保证你对socket编程步骤胸有成竹。 C++ Socket网络编程基础详解(TCP)
C++ Socket网络编程基础详解(TCP版) 网络编程,就是编写程序使得两台计算机交换数据,其实从本质上来讲,网络编程最终所实现的功能,和我们文件的输入输出很相似,只是文件输入输出的对象 ...
最新文章
- 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(五)分水岭算法(watershed algorithm)
- Listen error 错误和 limit of inotify watches was reached
- 网络管理员常见九大问题快速解决方法
- 008 selenium html报告
- 只允许运行一个实例的方法
- 每个计算机主机有且只能有一块硬盘对不对,电子科技大学计算机基础试卷.doc...
- 《极客学院 --NSAttributedString 使用详解-4-UITextKit 简介》学习笔记(待处理)...
- (大一)——自学计划
- 如何完全卸载oracle和删除oracle在注册表中的注册信息
- 【OpenCV学习笔记】【异常处理】一(The Matrix is not continuous, thus its number of rows can not be changed)
- 挖矿病毒zz.sh——记一次linux(centos)成为矿机后的排查与修复过程
- layer数据加载中,loading的显示
- Microsoft Store下载应用奇慢无比的解决方案
- 【遥感影像处理与分析】遥感影像校正详解-辐射校正、几何校正流程与方法比较
- 华三交换机配置access命令_华三交换机配置中,shutdown这条命令怎么用?
- 毕业生签约时必须知道三件事:三方协议、干部身份、派遣证
- STM32 HAL us delay(微秒延时)的指令延时实现方式及优化
- 用热点上网属于计算机网络吗,如何使用手机热点连接笔记本电脑上网?
- mac safari java插件_如果提示您信任或更新 Mac 上 Safari 浏览器中的插件
- 黑客主要学习python的什么_黑客最常用的黑客语言——Python!