学习笔记(一)Mobilenetv1的解读

1.Mobilenetv1

paper地址:https://arxiv.org/abs/1704.04861?context=cs

(1) 简介

MobileNet V1论文是google 在2017年4月提出的,作者先描述了现在的网络越来越网深层,准确率在不断的提高,伴随计算量越来越大,网络的效率并没有得到提升,表现在模型的大小(size)和速度(speed)方面,于是提出了这个轻量化网络模型。并在移动端或者嵌入式设备上得到广泛的应用。

(2) mobilenetv1详细介绍

1. 深度可分离卷积(depthwise separable convolutions)

作者从卷积下手,提出了一种新的卷积方法——深度可分离卷积(depthwise separable convolutions),就是将原本标准的卷积操作因式分解成一个depthwise convolution和一个1*1的pointwise convolution操作。简单讲就是将原来一个卷积层分成两个卷积层,其中前面一个卷积层的每个filter都只跟input的每个channel进行卷积,然后后面一个卷积层则负责combining,即将上一层卷积的结果进行合并。
图示详细说明:

图(a):所示是使用标准卷积核,计算一个标准的卷积层计算量为:

D_K* D_K是kernel size,M为input channel,N为output channel,D_F* D_F 是feature map的大小。

图(b):是使用深层卷积核,它每个输入通道只使用单个过滤器(filter),故执行一次卷积运算的计算量为:


图(c):是分解成的1x1 conv点卷积。kernel size: D_K\cdot D_K = 1,所以它的计算量为:

这样就得到我们深度可分离卷积的总计算量,即为两者相加:

计算量减少到原来的倍数:

如果使用3x3的深度可分离卷积,大约减少8~9倍的计算量。

2. Mobilenet网络结构

MobileNet的网络结构如表1所示。首先是一个3x3的标准卷积,然后后面就是堆积depthwise separable convolution,并且可以看到其中的部分depthwise convolution会通过strides=2进行down sampling。然后采用average pooling将feature变成1x1,根据预测类别大小加上全连接层,最后是一个softmax层。如果单独计算depthwise
convolution和pointwise convolution,整个网络有28层(这里Avg Pool和Softmax不计算在内)。

前面讲述了depthwise separable convolution,这是MobileNet的基本组件,但是在真正应用中会加入batchnorm,并使用ReLU激活函数,所以depthwise separable convolution的基本结构如图所示。

表2 MobileNet网络的计算与参数分布

3. Mobilenet瘦身

3.1. 宽度缩放因子(Width Multiplier)

为了模型更小、计算量更少,作者引入一个简单的参数α,让输入通道变为αM,输出通道变为αN,整个计算量就变为了:

其中α∈ (0, 1],一般取值为1,0.75,0.5或者0.25。如果为1就是基本的mobilenet,如果小于1就是缩减了的mobilenet。宽度因子会缩小网络的计算量和参数,能够让原来的模型变成一个更小的模型,但是在精确度和模型尺寸之间需要权衡。而且如果修改了宽度因子,网络需要重头开始训练。

3.2. 宽度缩放因子(Resolution Multiplier)

第二个减少计算量的超参数就是分辨率因子ρ,这个因子是和input的长宽相乘,会缩小input的长宽而导致后面的每一层的长宽都缩小。

其中ρ ∈(0, 1],得到典型的分辨率为224, 192, 160, 128 等。

References:

[1] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
[2]深刻解读MobileNet网络结构

学习笔记(一)Mobilenetv1的解读相关推荐

  1. yolov1-v5学习笔记及源码解读

    目录 深度学习网络分类 评价指标 原理 yolov1 yolov2 yolov3 yolov4 yolov5 源码解读(v3为例) 深度学习网络分类 深度学习经典检测方法 通常分为 two-stage ...

  2. 学习笔记之——非线性优化的解读

    SLAM问题中,非线性优化是非常重要的,本博文是本人复习非线性优化时做的学习记录,博客部分内容来自网络,仅仅供本人学习记录用,不作任何商业用途~ 目录 优化算法 迭代求解 凸函数的概念 梯度下降(Gr ...

  3. 35.FFmpeg学习笔记 - ffplay源码解读3之读文件

    本篇文章看看ffplay是如何读取packet放入队列中的. 一.先看入口函数: int main(int argc, char **argv) {VideoState *is;...av_init_ ...

  4. 学习笔记(1):深蓝解读区块链技术-五大要素

    立即学习:https://edu.csdn.net/course/play/31640/478913?utm_source=blogtoedu 区块链定义:区块链(Blockchain)是一种由多方共 ...

  5. 学习笔记(1):深蓝解读区块链技术-开题

    立即学习:https://edu.csdn.net/course/play/31640/478911?utm_source=blogtoedu 123

  6. 即时通讯学习笔记003---Tigase代码框架解读

    JAVA技术交流QQ群:170933152 在java下实现的xmpp开源实现,除了openfire外,tigase是另一个牛逼的项目. 实际的实验室压力下,50万人同时在线的单机,tigase的gc ...

  7. 34.FFmpeg学习笔记 - ffplay源码解读2之数据结构

    本篇分析一下ffplay的数据结构. (1)VideoState VideoState结构体,正如名字的含义,管理了一些全局的播放状态. typedef struct VideoState {SDL_ ...

  8. Opencv学习笔记 - imread源码解读

    一.打开图片流程分析 1.读取图片头,进行解码器的寻找 2.根据参数flags,确定图像通道和是否缩放 3.给解码器指定缩放参数和源 4.使用解码器读取图像的头,确保没有问题,失败则输出错误并返回 5 ...

  9. 学习笔记之——VIO与VINS-Mono

    本博文为本人学习VIO与VINS的学习笔记,部分内容来源于网上的资料,文末给出参考.本博文仅仅为本人学习记录用,不作任何商业用途~ 先给出复现的demo 视觉惯导紧融合VINS-Mono的复现 目录 ...

最新文章

  1. IDEA注释模板,动作要快,姿势要帅!
  2. 十六进制时间戳转换成十进制时间戳
  3. Linux下安装 Indy 到 Lazarus
  4. wsl2 Ubuntu 18.04 安装 ROS
  5. Git(9)-diff
  6. MAT分析android内存泄漏
  7. MySQL Membership
  8. html5小说阅读器源码,文本源码阅读器(NexusTextView)
  9. 位运算中的一些数学原理
  10. 求余函数mod和fmod
  11. 商业智能系统具有的主要功能
  12. oracle数据库连接时报12514_Oracle数据库之Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务...
  13. 百度AI 开放平台API调用
  14. 360漏洞修复的提取
  15. java service层怎么写_我是如何写Service的
  16. “犯强汉者,虽远必诛!”----遥想伟大汉人当年
  17. 任正非谈成功秘诀:28年只对准一个城墙口冲锋
  18. Java编程:随机生成数字串
  19. 广东未来科技:书写立体显示事业传奇的行业独角兽
  20. 调用聚合数据新闻头条API接口

热门文章

  1. 全国高校恋爱关系图谱:北大受宠爱,浙大最孤独
  2. 进制转换(未完待续)
  3. 计算机科学丛书20周年——20本跨世经典 夯筑科技基石
  4. 社会神经网络有哪些,神经网络的神经网络
  5. wps英文参考文献怎么对齐_wps英文参考文献怎么对齐_【论文攻略】排版技巧——如何用 Word 编辑参考文献......
  6. nginx过滤HttpHeader的 中划线
  7. Daphne以10%的单利投资了100美元。也就是说,每一年的利润都是投资额的10%,即每年10美元:利息 = 0.10 * 原始存款而Cleo以5%的复利投资了100美元。也就是说,
  8. 十五章、KPI(千峰网络安全300课时笔记)
  9. Windows 筛选平台 (WFP)
  10. 微信小程序拼团进度,显示当前刻度,未到刻度点时显示在中间