轻量化网络 ---- MobileNet V2:Inverted residual with linear bottleneck
目录
零:预备知识
一、MobileNet V1 回顾
二、MobileNet V2(主要创新点、与MobileNetV1/ResNet的区别)
2.1 主要创新点
2.2 与MobileNetV1/ResNet的区别
2.3 ReLU6激活函数
2.4 详细探讨MobileNetV2核心层
2.5 标准卷积、深度可分离卷积、 带有线性bottleneck的深度可分离卷积、
2.6 标准残差结构和逆转残差结构
2.7 各大网友绘制的MobileNetV2核心层
三、为什么要这样设计MobileNetV2的核心层?
四、MobileNetV2网络结构
五、MobileNetV2实验部分
5.1 1×1降维后激活函数选择、残差连接位置的选择
六、Inverted升维的数学原理
零:预备知识
卷积神经网络概述
https://www.bilibili.com/video/BV1sb411P7pO
https://www.bilibili.com/video/BV1gb411P7JD
卷积神经网络精讲
https://www.bilibili.com/video/BV1K7411W7So?p=5
https://www.bilibili.com/video/BV1K7411W7So?p=6
经典卷积神经网络结构
https://www.bilibili.com/video/BV1K7411W7So?p=11
MobileNet V1
https://www.bilibili.com/video/BV16b4y117XH
一、MobileNet V1 回顾
MobileNet V1的局限:
没有残差连接
很多Depthwise卷积核训练出来是0。究其原因是:
1> 卷积核权重数量和通道数量太少,太“单薄”;
2> ReLU激活函数;
3> 低精度的浮点数表示;
二、MobileNet V2(主要创新点、与MobileNetV1/ResNet的区别)
2.1 主要创新点
Inverted residual & linear bottleneck
2.2 与MobileNetV1/ResNet的区别
在MobileNet V1中,先depthwise 后pointwise,在这个过程中都使用ReLU6激活函数。
在MobileNet V2中,先pointwise升维,在depthwise,然后在pointwise降维。第二个pointwise后使用 Linear 激活函数。 如下图所示:
ResNet基本单元和MobileNet V2基本单元对比:
ResNet中的bottleneck残差模块,先pointwise降维,然后3×3标准卷积,然后再pointwise升维。
MobileNet V2 中的基本单元,先pointwise升维,然后depthwise,然后再pointwise降维。
如下图所示:
区别:
1. ResNet中的 Bottleneck 先降维后升维度,而MobileNetV2中是先升维后降维;
2.ResNet中的bottleneck用到的是标准卷积,而MobileNetV2中用到的是depthwise卷积。
3. ResNet中使用的全部是ReLU激活函数,而MobileNetV2中使用的是ReLU6激活函数以及Linear激活函数。
4.ResNet中的所使用的激活函数均为非线性激活函数,而MobileNetV2中既使用了非线性激活函数,也使用了线性激活函数。
5. 残差连接的位置:在ResNet中shortcut连接的是两个低维的张量,而在MobileNetV2中shortcut连接的是两个高维的张量。
2.3 ReLU6激活函数
标准的ReLU激活函数如下图所示:
ReLU6激活函数如下所示:
使用ReLU6激活函数的作用:使用ReLU6激活函数使得低精度浮点数能够更好的表示。
2.4 详细探讨MobileNetV2核心层
https://yinguobing.com/bottlenecks-block-in-mobilenetv2/
MobileNetV2 核心层输入输出关系表如下所示:
2.5 标准卷积、深度可分离卷积、 带有线性bottleneck的深度可分离卷积、
2.6 标准残差结构和逆转残差结构
2.7 各大网友绘制的MobileNetV2核心层
三、为什么要这样设计MobileNetV2的核心层?
原论文中给出了这样的解释:
四、MobileNetV2网络结构
五、MobileNetV2实验部分
5.1 1×1降维后激活函数选择、残差连接位置的选择
首先,在MobileNetV2中验证了在经过1×1降维后是否使用线性激活函数,如下图(a)所示。图(a)表明,使用线性激活函数时网络的top-1准确率比使用其他激活函数的情况要高。
其次,探索出残差连接连在哪里比较好?如图(b)所示。图(b)表明,残差连接连在bottlenecks上网络的top-1准确率要高于连在expansions上时的情况。并且这两者均高于没有残差连接的情况。
六、Inverted升维的数学原理
也可以借助神经网络模型来理解上述过程,如下所示:
内容未完,后续待更新!!