MobileNet V2 论文笔记
论文:Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification, Detection and Segmentation
文章在residual net和MobileNet V1的基础上,提出MobileNet V2模型,一方面保证准确性,另一方面大幅的减少multiply-adds(MAdd)的计算量,从而减少模型的参数量,降低内存占用,又提高模型的计算速度,以适应移动端应用。
Block 基本结构
文章的主要贡献:提出一种颠倒的、bottleneck为线性变换的resdual 结构。这中结构的一个block如下:
输入:一个低维 k(通道)的、经压缩的数据
然后经过:
step 1, point wise卷积扩展维度(通道),扩展因子为t;
step 2, depthwise separable 卷积,stride为 s;
step 3, linear conv把特征再映射的低维,输出维度为 k’;
输出作为下一个block的输入,堆叠block。
具体结构如表:
1. Depthwise separable conv
这种卷积方式早已被广泛使用,实现方法是把常规卷积层分为两个独立的层。第一层称为depthwise convolution,对输入的每个通道做单独的卷积,第二层称为pointwise convolution,使用1x1的卷积核做常规卷积。
如果使用的是kxk的卷积核,这种卷积几乎能减少k2的计算量。
2. Linear bottlenecks
用线性变换层替换channel数较少的层中的ReLU,这样做的理由是ReLU会对channel数低的张量造成较大的信息损耗。ReLU会使负值置零,channel数较低时会有相对高的概率使某一维度的张量值全为0,即张量的维度减小了,而且这一过程无法恢复。张量维度的减小即意味着特征描述容量的下降。因而,在需要使用ReLU的卷积层中,将channel数扩张到足够大,再进行激活,被认为可以降低激活层的信息损失。文中举了这样的例子:
上图中,利用nxm的矩阵B将张量(2D,即m=2)变换到n维的空间中,通过ReLU后(y=ReLU(Bx)),再用此矩阵之逆恢复原来的张量。可以看到,当n较小时,恢复后的张量坍缩严重,n较大时则恢复较好。
3. inverted residual sturcture
原residual structure 出自Deep Residual Learning for Image Recognition. 这种结构解决了深度神经网络随着网络层数的加深带来的梯度消失/爆炸,模型不收敛的问题,使DNN可以有上百甚至更多的层,提高准确率。
从图中可以看出,这种结构使用一个快捷链接(shortcut)链接了block的输入与输出(实际做的是element wise add),block内部是常规conv,一般block内部数据的维度低于block边缘–即bottleneck的数据维度。
论文的题目,inverted residual,颠倒的正是block 内数据维度与bottleneck数据维度的大小,这从上图的中数据块的深度情况可以看出。
这种颠倒基于作者的直觉:bottleneck层包含了所有的必要信息,扩展的层做的仅仅是非线性变换的细节实现。
实际上,这中翻转能节省内存,分析见后。
MobileNet V2网络结构
网络机构如下:
上图中,t代表单元的扩张系数,c代表channel数,n为单元重复个数,s为stride数。注意,shortcut只在s==1时才使用。
实验
文章从classification、detection、segmentation三个应用方面测试了该模型的效果。
1. classification
直接使用MobileNetV2的结构,输入图像size为224x224,在Imagenet上的分类表现
2.detection
使用预训练的MobileNetV2卷积层特征+SSD的检测网络,输入图像size为320x320,在mscoco上的表现如下表:
3.segementation
使用预训练的MobileNetV2卷积层特征+DeepLabv3分割网络,
结论
社区对MobileNetV2的评价还是很高的,而且简单易实现,可以作为基本层用到detection和segmentation等领域。这里有一个Tensorflow实现的版本,欢迎交流。github
MobileNet V2 论文笔记相关推荐
- ConvNeXt V2 论文笔记
ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders(2023.1.2-v1) 链接: paper ...
- YOLO v2论文笔记
YOLOv2相对于v1的改进: 1. Batch Normalization ,mAP 增加2% 2. High Resolution Classifier 增加训练图片分辨率为448 * 448 , ...
- 阅读pvt v1 和 pvt v2 论文笔记
pvt 2篇论文的代码在原论文中有所标注,由于时间关系,以后再将对源代码进行解读 1.pvt v1的创新点 pvt收到的启发来自于 cnn 和transformer,为了克服transfomer应用于 ...
- MobileNet v2中 Inverted Residual 和 Linear Bottleneck 是怎么回事
MobileNet v2中 Inverted Residual 和 Linear Bottleneck 是怎么回事 flyfish MobileNet v1的深度可分离卷积 Block的结构 先从Mo ...
- 轻量级深度学习网络——MobileNet MobileNet v2
这篇文章主要讲的是深度学习网络篇中轻量化网络之一的MobileNet和MobileNet v2.在深度学习中轻量化网络有很多方法, 比如说卷积核分解.使用bottleneck结构.用低精度浮点数保存模 ...
- 论文笔记:MobileNet v2
原论文:MobileNetV2: Inverted Residuals and Linear Bottlenecks MobileNet v2 1.四个问题 要解决什么问题? 与MobileNet v ...
- ShuffleNet V2 论文阅读笔记
ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design 阅读笔记 论文链接:https://arxiv.or ...
- 论文笔记:ShuffleNet v2
ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design ShuffleNet v2 1.四个问题 要解决什么 ...
- 论文笔记 | 谷歌 Soft Prompt Learning ,Prefix-Tuning的 -> soft promt -> p tuning v2
论文笔记 | 谷歌 Soft Prompt Learning ptuning -> Prefix-Tuning -> soft promt -> p tuning v2 " ...
最新文章
- 第一篇博客——ACM之路!
- LINQ体验系列文章导航
- CTFshow 爆破 web28
- 微软发布.Net Core 3.0 RC1,最终版本定于9月23日
- Supersocket 如何使用 教程1
- Java并发编程实战_不愧是领军人物!这种等级的“Java并发编程宝典”谁能撰写?...
- php基类控制器,控制器基类
- GARFIELD@01-25-2005
- L1-039 古风排版 (20 分)—团体程序设计天梯赛
- sessionStorage跨标签取值
- Springboot属性配置绑定
- 呼吸机吸气触发:压力触发与流量触发
- 程序员年龄变大后的职业出路是什么?
- 如何编写Word文档 多级编号
- numpy.median
- windows server 2003 网络操作系统项目教程 特制版
- python樱花树代码_Python画樱花树
- 1.2 webstorm设置pug自动编译
- 头同尾合十的算法_头同尾合十的计算规律
- 你见过的最全面的Python重点知识总结