【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

《Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classifification, Detection and Segmentation》

(一)论文地址:

《Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classifification, Detection and Segmentation》

(二)MobileNets_v2 解决的问题:

2017年作者提出了MobileNets_v1,其核心是将常规的卷积层分解成一个 depthwisedepthwisedepthwise separableseparableseparable convolutionsconvolutionsconvolutions(深度分离卷积层,简称 DWconvDWconvDWconv)和一个 pointwisepointwisepointwise convolutionsconvolutionsconvolutions(即1×11×11×1 卷积核大小的卷积层,简称 PWconvPWconvPWconv),从而有更小的参数,并且计算消耗更少;

详细介绍可以看我的这一篇博客:
【论文阅读笔记】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

常规的卷积操作如图:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

经过MobileNets_v1分解后的结构如图:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)
即(其中ReLU6表示将特征层的值限制在 060-60−6 区间内):
【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)
但是在实际训练时,作者发现 DWconvDWconvDWconv 中有许多卷积核是空的(全为 000):
【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

这些空卷积核占用了训练和使用时的内存,却不会对特征提取中起到任何作用;

为了解决这个问题,作者提出了 MobileNets_v2;

(三)MobileNets_v2 的核心思想:

MobileNets_v2 的核心思想是:

  1. PWconvPWconvPWconv 中的 ReLU 换成线性变换(Linear),称之为 Linear Bottleneck;
  2. 使用了反残差结构(Inverted Residuals),即不同于 ResNet 的先收缩在膨胀的残差结构,这里先膨胀后收缩;

(四)ReLU 函数的缺陷:

MobileNets_v2 的作者认为,这些空卷积是由ReLU函数引起的:
【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)
在之前的研究中表明,相比于 tanh 和 sigmoid 函数,ReLU 在反向传播过程中计算量更少;

并且, tanh 和 sigmoid 在接近饱和区时,由于导数趋近于 0 ,会导致信息丢失和模型难以收敛;

以及,ReLU 会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释);

但是,作者提出了两个新的观点:

  1. 如果特征仍能在 ReLU 转换之后够被保留(即为非零),那么 ReLU 的作用跟线性变换相同;
  2. ReLU 能够保持输入信息的完整性,但仅限于输入特征位于输入空间的低维子空间中;

第一个观点很好理解;

第二个观点作者给出了图示:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

即假设输入是一个低维(2D)的螺线结构的数据:
【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

我们使用矩阵 TTT(相当于卷积层)将它转换成高维数据(维度为 nnn),再用 ReLU 函数转换;

我们再用 矩阵 T1T^{-1}T−1 将高维数据转换成 2D 数据,对于不同的维度 nnn,结果如图:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)
可以看到,对于向低维数据变换(维度 n=2,3n=2,3n=2,3),有很大一部分信息已经丢失了;

而当维度 n=15,30n=15,30n=15,30 时,大部分信息还是被保留下来了;

因此作者认为,在低维数据转换时应该将 ReLU 函数转换成 Linear 变换,在高维数据转换时可以保留 ReLU 函数,从而增加模型的鲁棒性;

(五)Linear Bottleneck:

基于以上理论,作者提出了 MoblieNets_v2 的基本结构,取消了模块中第二个 PWPWPW convconvconv的 ReLU 变换,并采取了 扩张->卷积->压缩 的瓶状结构,称之为 Linear Bottleneck:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

注意在这些模块相互连接时,(c)(c)(c)和(d)(d)(d)是等效的,因此下面默认以(d)(d)(d)为例;

用图示表述为:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

(六)Inverted Residuals:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

这里也采用了 ResNet 的残差结构,不过不同于 压缩->卷积->扩张 的结构,MobileNets_v2 采用了扩张->卷积->压缩 的相反结构:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)
用表格表示为:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

其中:

  1. hhh 和 www 分别是输入特征图的高和宽;
  2. kkk 和 kk^{'}k′ 分别是输入和输入的 channelschannelschannels;
  3. ttt 是膨胀率,即中间层的 channelschannelschannels 是输入层的 ttt 倍,文中取 t=6t=6t=6;
  4. sss 是 DWconvDWconvDWconv 的步长;

(七)MoblieNets 的网络结构:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

其中:

  1. ttt 是膨胀率;
  2. ccc 是输入特征图的 channelschannelschannels;
  3. nnn 是结构单元重复的次数;
  4. sss 是步长;

注意步长 sss 为 1,21,21,2 时结构有所不同:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

(八)MobileNets 的应用及实验结果:

1. 图像识别:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

2. 目标检测——SSDLite:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)
【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

3. 语义分割——MobileNet DeepLabv3:

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)

【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...)【论文阅读笔记】Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification(又一次太长了写不开...) Memory逆光 发布了105 篇原创文章 · 获赞 128 · 访问量 1万+ 私信 关注
上一篇:激活函数


下一篇:深度学习面试题05:激活函数sigmod、tanh、ReLU、LeakyRelu、Relu6