轻量化模型:MobileNet v2
MobileNet v2 论文链接:https://arxiv.org/abs/1801.04381
MobileNet v2是对MobileNet v1的改进,也是一个轻量化模型。
关于MobileNet v1的介绍,请看这篇:对MobileNet网络结构的解读
MobileNet v1遗留下的问题
1)结构问题
MobileNet v1的结构非常简单,是一个直筒结构,这种结构的性价比其实不高,后续一系列的ResNet,DenseNet等结构已经证明通过复用图像特征,使用Concat/Eltwise+等操作进行特征融合,能极大提升网络的性价比。
Concat(张量拼接):比如26*26*128,26*26*256经过拼接(Concat)之后得到(26*26*384)
Eltwise有三个操作:product(点乘),sum(相加减)和max(取最大值),其中sum是默认操作
2)Depthwise Convolution的潜在问题
Depthwise Convolution确实是降低了计算量,而在NxN Depthwise + 1x1 Pointwise的结构在性能上也接近NxN Conv。在实际使用中发现,Depthwise的部分kernel比较容易训废掉:训练完之后发现Depthwise训出来的kernel有不少是空的。当时我们认为,Depthwise每个kernel dim相对于普通Conv要小得多,过小的kernel_dim,加上ReLU的激活影响下,使得神经元输出很容易变为0,所以学废了。ReLU对于0的输出梯度为0,所以一旦陷入0输出,就没法恢复了。我们还发现,这个问题在定点化低精度的时候会进一步放大。
MobileNet v2的创新点
1. Inverted residuals,通常的residuals block(残差块)是先经过1*1的Conv layer,把feature map的通道数"压"下来,再经过3*3Conv layer,最后经过一个1*1的Conv layer,将feature map通道数再"扩展"回去。即先"压缩",最后"扩张"回去。
而Inverted residuals就是先"扩张",最后"压缩",后面会有介绍。
2. Linear bottlenecks,为了避免ReLU对特征的破坏。
MobileNet v2和v1之间的区别

主要是两点:
1. Depthwise convolution之前多了一个1*1的"扩张"层,目的是为了提升通道数,获得更多特征
2. 最后不采用ReLU,而是linear,目的是防止ReLU破坏特征
MobileNet v2的网络结构

其中: t 表示"扩张倍数",c 表示输出通道数,n 表示重复次数,s 表示步长stride
有两点错误:
1. 第五行,也就是第7~10个bottleneck,stride = 2,分辨率应该从28降低到14,如果不是分辨率出错,那就应该是stride=1
2. 文中提到共计采用19个bottleneck,但是这里只有17个
一个bottleneck有如下三个部分组成:

stride = 1和stride = 2,在结构上稍微有点不同。在stride=2时,不采用shortcut。我们对MobileNet v1和MobileNet v2进行比较如下图:

注意:除了最后的avgpool,整个网络并没有采用pooling进行下采样,而是采用stride=2来下采样。
轻量化模型:MobileNet v2的更多相关文章
- 轻量化模型之MobileNet系列
自 2012 年 AlexNet 以来,卷积神经网络在图像分类.目标检测.语义分割等领域获得广泛应用.随着性能要求越来越高,AlexNet 已经无法满足大家的需求,于是乎各路大牛纷纷提出性能更优越的 ...
- CNN结构演变总结(二)轻量化模型
CNN结构演变总结(一)经典模型 导言: 上一篇介绍了经典模型中的结构演变,介绍了设计原理,作用,效果等.在本文,将对轻量化模型进行总结分析. 轻量化模型主要围绕减少计算量,减少参数,降低实际运行时间 ...
- 轻量化模型之SqueezeNet
自 2012 年 AlexNet 以来,卷积神经网络在图像分类.目标检测.语义分割等领域获得广泛应用.随着性能要求越来越高,AlexNet 已经无法满足大家的需求,于是乎各路大牛纷纷提出性能更优越的 ...
- 轻量化模型训练加速的思考(Pytorch实现)
0. 引子 在训练轻量化模型时,经常发生的情况就是,明明 GPU 很闲,可速度就是上不去,用了多张卡并行也没有太大改善. 如果什么优化都不做,仅仅是使用nn.DataParallel这个模块,那么实测 ...
- 轻量化模型系列--GhostNet:廉价操作生成更多特征
前言 由于内存和计算资源有限,在嵌入式设备上部署卷积神经网络 (CNN) 很困难.特征图中的冗余是那些成功的 CNN 的一个重要特征,但在神经架构设计中很少被研究. 论文提出了一种新颖的 Gh ...
- 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)
完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...
- 纵览轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception
近年提出的四个轻量化模型进行学习和对比,四个模型分别是:SqueezeNet.MobileNet.ShuffleNet.Xception. SqueezeNet https://arxiv.org/p ...
- 基于WebGL/Threejs技术的BIM模型轻量化之图元合并
伴随着互联网的发展,从桌面端走向Web端.移动端必然的趋势.互联网技术的兴起极大地改变了我们的娱乐.生活和生产方式.尤其是HTML5/WebGL技术的发展更是在各个行业内引起颠覆性的变化.随着WebG ...
- MobileNet——一种模型轻量化方法
导言 新的CNN网络的提出,提高了模型的学习能力但同时也带来了学习效率的降低的问题(主要体现在模型的存储问题和模型进行预测的速度问题),这使得模型的轻量化逐渐得到重视.轻量化模型设计主要思想在于设计更 ...
随机推荐
- python 网络编程---粘包
一.什么是粘包?(只有在TCP中有粘包现象,在UDP中永远不会粘包) 黏包不一定会发生. 如果发生 了:1.可能是在客户端已经粘了 2.客户端没有粘,可能是在服务端粘了. 所谓的粘包问题:主要是是因为 ...
- node+mysql数据库连接(入门)
node+mysql的数据库操作: 1 //引入mysql var mysql = require('mysql'); //进行数据库连接设置 var connection = mysql.creat ...
- idle中上传jar包并使用的方法
创建一个lib目录,将jar包拉到该目录下. 需要导入的Jar包上,点击右键,选择Add as Library…
- Hadoop(二) 单节点案例grep和wordcount|4
前提步骤安装Hadoop,安装步骤: https://www.jianshu.com/p/2ce9775aeb6e 单节点案例官方文档地址:http://hadoop.apache.org/docs/ ...
- 并查集---体会以及模板&&How Many Tables - HDU 1213
定义&&概念: 啥是并查集,就是将所有有相关性的元素放在一个集合里面,整体形成一个树型结构,它支持合并操作,但却不支持删除操作 实现步骤:(1)初始化,将所有节点的父亲节点都设置为自己 ...
- std::string::append函数
string& append (const string& str); string& append (const string& str, size_t subpos ...
- ffmpeg 交叉编译 版本4.0.4
touch run.sh chmod 755 run.sh ./run.sh run.sh #!/bin/sh ./configure \ --arch=aarch64 \ --cpu=armv8-a ...
- 选择IT行业的自我心得,希望能帮助到各位!(一)
我记得当时我还在读书的时候,也是卡在高三在后面,纠结我该怎么选择专业,一边顶着高考的压力又担心这担心那的,前怕狼后怕虎,一直犹犹豫豫,知道有一天我就听到谁谁谁的哥哥学IT老牛逼了,一个月多少多少钱,买 ...
- The Super Powers UVA - 11752
题目大意:将范围从1~pow(2,64)-1内的super power输出.super power的定义:一个数x至少存在两种x=pow(i,k),(k!=1). 题解: 注意数据范围2的64次方-1 ...
- OpenAL试水
参考了https://wysaid.org/976.html. 这个博客给了一个EGE+OpenAL的demo和源代码.一开始没注意,博主也没有给EGE相关信息.会找不到EGE相关头文件,建议如果要二 ...