Mobilenet 系列理解

背景

目前的研究总结来看分为两个方向:一是对训练好的复杂模型进行压缩得到小模型;二是直接设计小模型并进行训练。不管如何,其目标在保持模型性能(accuracy)的前提下降低模型大小(parameters size),同时提升模型速度(speed, low latency)。Mobilenet v1是Google 2017年提出的一种小巧而高效的CNN模型,其在accuracy和latency之间做了折中。创新点在于:其在卷积方面做文章。

深度级可分离卷积

MobileNet的基本单元是深度级可分离卷积(depthwise separable convolution),将标准卷积分成两步。

第一步 Depthwise convolution(DW),也即逐通道的卷积,一个卷积核负责一个通道,一个通道只被一个卷积核“滤波”,则卷积核个数和通道数个数相同;

第二步,Pointwise convolution(PW),将depthwise convolution得到的结果通过1x1卷积,再“串”起来

这样其实整体效果和一个标准卷积是差不多的,但是会大大减少计算量和模型参数量。

在这里插入图片描述
在这里插入图片描述

下面分别计算标准卷积和深度级可分离卷积参数量和计算量的差别:

在这里插入图片描述

mobilenet网络结构

示意图:

在这里插入图片描述

其中计算量和参数量所占比重,如下:

在这里插入图片描述

Mobilenet轻量化

在这里插入图片描述

Mobilenet-v2理解

Mobilenet-v2网络是在Mobilenet-v1和Resnet基础之上提出的。

Inverted residuals

创新点在于提出一种新型层结构: 具有线性瓶颈的倒残差结构(the inverted residual with linear bottleneck)。

主要包含两部分改进:

  1. Expansion layer。该结构先进行11卷积(PW)将通道数扩增,在进行深度卷积(DW),最后在进行11卷积(PW)将通道数缩减。该结构和残差网络中瓶颈模块(BottleNeck)的做法(通道先缩减再扩增)正好相反,因此shotcut也就变成了连接的是维度缩减后的feature map。

  2. Linear Bottlenecks。该部分将PW-DW-PW结构中后面PW中的ReLU改为Linear,目的是为了保证模型的表达能力。

下面依次说明:

第一部分:Expansion Layer

深度卷积(DW)本身没有改变通道的能力,来的是多少通道输出就是多少通道。如果来的通道很少的话,深度卷积(DW)只能在低维度上工作,这样效果并不会很好,所以我们要“扩张”通道。

既然我们已经知道逐点卷积(PW)也就是1×1卷积可以用来升维和降维,那就可以在深度卷积(DW)之前使用逐点卷积(PW)进行扩增通道数(升维倍数为t,t=6),再在一个更高维的空间中进行深度卷积(DW)操作来提取特征:

在这里插入图片描述

第二部分:为什么用Linear Bottlenecks替换掉激活层?

发现深度卷积部分的卷积核比较容易训废掉:训完之后发现深度卷积训出来的卷积核有不少是空的:

在这里插入图片描述

认为这是由于ReLU激活函数导致。即在得到feature map之后,此时加上一个非线性激活层,比如ReLU会有较大的信息丢失,从而替换成linear bottleneck,但仅仅将后面的逐点卷积(PW)中的ReLU替换成linear bottleneck,其他不变。如下:

在这里插入图片描述

下面论文中作者对“为什么进行非线性,激活卷积核容易训‘废掉’“部分举的例证,如下:

在这里插入图片描述

当n = 2,3时,与Input相比有很大一部分的信息已经丢失了;而当n = 15到30,还是有相当多的地方被保留了下来。也就是说,对低维度做ReLU运算,很容易造成信息的丢失。而在高维度进行ReLU运算的话,信息的丢失则会很少。

从而经过上两步改动,整体的inverted residual(论文中简记为bottleneck)结构为:
在这里插入图片描述

其中最前面加入了1×1升维,引入Shortcut,并且将最后面PW中的的ReLU,改为Linear。步长为1时,先进行1×1卷积升维,再进行深度卷积提取特征,再通过Linear的逐点卷积降维,最后将input与output相加,形成残差结构;步长为2时,因为input与output的尺寸不符,因此不添加shortcut结构,其余均一致。

下面为对比图:

  1. V1和v2对比

在这里插入图片描述

  1. Resent和v2对比

在这里插入图片描述都采用了 1×1 -> 3 ×3 -> 1 × 1 的模式,以及都使用Shortcut结构。但是不同点在于:
ResNet 先降维 (0.25倍)、卷积、再升维。MobileNetV2 则是 先升维 (6倍)、卷积、再降维。刚好V2的block刚好与Resnet的block相反,作者将其命名为Inverted residuals。就是论文名中的Inverted residuals。

V2网络结构

在这里插入图片描述

论文证明部分

左边图(a)是关于non-linearity的效果(蓝色曲线),显然top1准确率要高于在bottleneck后加relu层(绿色曲线 ),证明了Linear Bottlenecks的有效性。右边图(b)是关于shotcut连接在不同维度的feature map上的影响,证明了inverted residual的有效性。

在这里插入图片描述

举例:

假若输入样本为:12833232-batch_size=128、通道数=3、HW=32*32
对于mobilenet-v1,其中深度可分离卷积模块示意图:

在这里插入图片描述

两部分细致图如下:

在这里插入图片描述

对于mobilenet-v2,其中线性瓶颈模块示意图如下:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值