【论文阅读】MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications_mobilenets: efficient convolutional neural network-程序员宅基地

技术标签: 论文阅读  MobileNet  深度学习  神经网络  

论文简介:

《MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications》中的MobileNets是Google针对手机等计算资源有限的嵌入式设备提出的轻量级的深层神经网络结构,其特点是在牺牲较少精度的情况下获得较快的运行速度(较少计算量和较少参数)。其核心思想是将传统卷积分解为深度分离卷积(depthwise separable convolutions)和1x1点卷积两步来实现。

一、Introduction 介绍

目前CNN在计算机视觉领域无所不在,为了获得更高的性能,往往都是在设计更深、更复杂的网络模型。面对计算资源较少的嵌入式设备,或具有实时运行需求的应用场景,多参数、多计算量的大型网络往往无法得到实用,机器人,自动驾驶,增强现实。

当前构建小而高效网络模型的技术大概可以分为两类,一、压缩预训练好的模型,二、直接训练小型网络。模型压缩技术主要有,网络剪枝,对预训练完成的网络模型,分析去掉不重要的一部分模型参数及结构,参数量化,float型的模型参数进行取整,采用8bit uchar存储,可降低模型大小及加速计算(较轻微精度损失),模型参数聚类,采用huffman编码(出现概率较多的数采用短的编码)。知识蒸馏(distillation),采用预训练好的大型网络作为“老师”,再训练小型网络(小型网络不是直接使用数据集标签进行训练,而是使用大型网络的输出作为标签进行训练)。

二、MobileNet

MobileNet使用深度分离卷积(depthwise separable convolutions)和1x1点卷积两步来近似等价实现传统卷积,从而减少参数及计算量,加快模型推理速度(时间,latency)。

传统3D卷积是将每个通道的卷积和每个通道卷积结果的融合,两个步骤放在一起进行的,MobileNet将其分解为两步,一、使用深度分离卷积分别进行每个通道的独立卷积,然后使用1x1卷积将各个通道的卷积结果进行融合,作为输出。这种处理方法切断了二维大的卷积核与输出feature map个数之间的联系,降低了计算量和参数量。该方法如下图所示。

标准卷积旨在使用卷积核对上一层的feature进行卷积处理,然后将卷积处理后的feature进行融合得到新的表示。depthwise convolution对每一个通道单独进行卷积,pointwise convolution(1x1 卷积),使用一个线性组合得到新的特征。MobileNet中主要计算量基本集中在1x1卷积上,卷积的底层实现一般通过一种im2col方式实现,其需要内存重组,当卷积核为1x1时,就不需要这种操作了,底层可以有更快的实现。

MobileNet是一个小型网络,小型网络训练时不容易过拟合,不需要使用dropout,正则化,数据集预处理增强等手段(加畸变,翻转,裁剪等)。

MobileNet网络结构,MobileNet使用BN和RELU,以及最后使用Average pooling将空间分辨率缩小为1,再连接全连接层,softmax层进行分类输出。

三、宽度因子和分辨率因子

width multiplier主要是按比例减少通道数,α取值范围为(0,1],那么输入与输出通道数将变成αM和αN,降低通道数,降低网络宽度,让网络变瘦。相同参数量下,深瘦型网络比浅胖型网络效果好。

Resolution multiplier控制输入图片以及各层的feature map的大小,能够减小计算量,但是不能减小参数量,因为这个对于卷积核的大小没有影响

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MoFMan/article/details/107347881

智能推荐

Linux下scrapy安装问题汇总_linux安装scrapy的问题-程序员宅基地

文章浏览阅读3.8k次。首先,在安装scrapy之前,需要用apt-get以及pip安装以下依赖包:apt-get install build-essential python3-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev在Linux系统下python3.4版本下成功安装scrapy:pip install_linux安装scrapy的问题

pfm格式转png格式_将深度图像(.pfm格式)转换为深度图像数据(.png格式)-程序员宅基地

文章浏览阅读6.1k次,点赞8次,收藏29次。PFM是一种用浮点数存储图片的文件格式,包含文件信息header和二进制数据raster。在一些数据集中经常可以看到以pfm格式存储的视差图。pfm格式的文件不利于浏览,可以转成png格式文件已方便浏览。PFM的头文件共有3行:二进制数据区:图像的读取顺序按照从下到上,从左到右进行的顺序进行读取。当pfm文件只有一张图片的矩阵时,代码如下:# -*- coding: UT..._将深度图像(.pfm格式)转换为深度图像数据(.png格式)

win10使用roLabelimg(可标注旋转矩形)保存带有汉字的label及xml转txt(含文件)_rolabellmg下载-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏22次。win10使用roLabelimg保存带有汉字的label(含文件)简介roLabelimg可以标注旋转矩形,虽不太好用,但比不能标注强太多太多,转载请注明出处。文件地址源文件修改&编译将roLabelImg.py中的#!/usr/bin/env python# -*- coding: utf8 -*-更改为#!/usr/bin/env python# -*- coding: utf-8 -*-编译pyrcc5 -o resources.py resources.qrc_rolabellmg下载

对Neo4j导出数据做知识图谱可视化 D3库实现_neo4jd3-程序员宅基地

文章浏览阅读2.5w次,点赞52次,收藏360次。知识图谱可视化 D3库的使用引言Neo4j导出数据引言好久没用D3库作可视化了,现在主要是用百度的echarts库,在项目中做简单的图表太方便了。但像是做关系图其实用echarts也很方便,这次用D3实现主要是复习一下以前做的东西,顺便记录一下。以下是我参考到的实例代码:D3官方图实例参考echarts做关系图实例参考Neo4j导出数据我们先通过Cypher查询将数据从Neo4j中查询出来,Neo4j构建和查询可以参考我上篇博客基于Neo4j的外贸企业关系图谱做企业相似度查询查询后的结果如下_neo4jd3

拓扑空间、距离空间、向量空间和内积空间_拓扑和距离的关系-程序员宅基地

文章浏览阅读7.5k次。拓扑空间是最基本的,是集合+开集构成,这个空间里没有距离。就像人群+关系=社会一样。距离空间=拓扑空间+距离。这个距离的来源主要是定义出来的。距离空间是拓扑空间的一个子集,也可以理解为是一个子概念。同理向量空间又是距离空间的一个子集,子概念。对拓扑向量空间来说,它是一个度量空间当且仅当其有可数局部拓扑基(见Rudin的泛函分析,对一般拓扑空间来说的充要条件还要多一个,这就是NS度量化定理,见Munk_拓扑和距离的关系

dubbo实战之一:准备和初体验,Java进阶-程序员宅基地

文章浏览阅读923次,点赞21次,收藏15次。Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

随便推点

Qt 项目(CMake)设置国际化支持_qt5 cmake 多语言-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏17次。文章目录国际化原理操作步骤注意:项目提交:参考:简 述: 准备将我写的悬浮网速窗口上面支持国际化(多语言);记录一下通过 CMake + Qt 来对项目设置国际化。本文初发于 “偕臧的小站” ifmet.cn,同步转载于此。编程环境:  ???? uos20 amd64 ???? Qt 5.11.3 ???? cmake 3.13.4 ???? gdb8.0国际化原理​ Qt 实现多语言的关键原理如图,先扫描所有的源码文件 .cpp、.ui 文件,找到被 tr() 包裹的字符_qt5 cmake 多语言

游戏编程模式------套路_数独套路女朋友-程序员宅基地

文章浏览阅读156次。https://blog.csdn.net/lhcmt1/article/details/80601414 //原文https://gpp.tkchu.me/behavioral-patterns.html //博客一:序列模式:1. 双缓冲模式工作原理: 例如计算机的渲染系统。一帧代表显卡读取的帧,一帧代表显卡写入的帧。何时使用: 可能有可见的错误(撕裂之类..._数独套路女朋友

如何轻松利用FUSB340TMX USB Type-C方案快速地助你实现完美的解决方案-程序员宅基地

文章浏览阅读154次。安森美深力科 10Gbps USB3.1超高速开关FUSB340TMX是 10Gbps USB3.1 超高速开关,典型带宽达 10 GHz,具有 1.5 V 至 5 V 的宽 VDD 范围,提供 2KV HBM ESD 保护,符合 Jedec 标准,有源功耗低于 12 uA,关断功耗低于1 uA,在2.5GHz时的插入损耗仅-1 dB,采用18引脚的 TMLP 小型封装(2.0mm x 2.8mm x 0.4mm),是适用于手机、平板电脑、笔记本电脑、超便携应用所需的可正反逆插的 Type-C USB 3_fusb340tmx

android nfc框架分析,Android NFC读写Tag快速框架-程序员宅基地

文章浏览阅读310次。这篇文章只讲NFC读写非接卡、读写标签的方式,且这里只讲符合TypeA和IsoDep技术标准的Tag,其他类型的Tag框架类似,只是有些许差别添加权限AndroidManifests.xml中添加:添加intent filterAndroidManifests.xml中添加:android:name=".MainActivity"android:label="@string/app_name"an..._android 卡片类型框架

1863. 找出所有子集的异或总和再求和 01.11(五)-程序员宅基地

文章浏览阅读352次,点赞10次,收藏7次。[5,1,6] 的异或总和为 5 XOR 1 XOR 6 = 2。- [1,3] 的异或总和为 1 XOR 3 = 2。- [5,1] 的异或总和为 5 XOR 1 = 4。- [5,6] 的异或总和为 5 XOR 6 = 3。- [1,6] 的异或总和为 1 XOR 6 = 7。每个子集的全部异或总和值之和为 480。- [1] 的异或总和为 1。- [3] 的异或总和为 3。- [5] 的异或总和为 5。- [1] 的异或总和为 1。- [6] 的异或总和为 6。

230801_towards open-world recommendation with knowledge a-程序员宅基地

文章浏览阅读208次。dataset。_towards open-world recommendation with knowledge augmentation from large lan