MobileNet


前言

本文介绍MobileNet 。


MobileNet V1

亮点:

  • Depthwise Convolution(大大减少运算量和参数数量)DW卷积
  • 增加超参数:人为设定的
      α:控制卷积层、核数量
      β:控制输入图像分辨率/尺寸

传统卷积&DW卷积

在这里插入图片描述

  • 传统卷积:输入特征矩阵深度为3的特征矩阵,使用四个卷积核,每个卷积核的深度为3(和输入特征矩阵深度一样),卷积核个数和输出特征矩阵的深度一样。
  • DW:每个卷积核的深度都是1,1个卷积核负责一个channel。所以卷积和的个数和输入特征矩阵的深度相同,输入特征矩阵和卷积核的个数相同。

Depthwise Separable Conv:深度可分卷积

在这里插入图片描述深度可分的卷积操作:DW Conv + PW Conv(普通卷积,只是卷积核大小为1)。

参数量比较

在这里插入图片描述

Dk:卷积核的width/height	M:输入特征矩阵的深度	
N:输出特征矩阵的深度	Df:输入特征矩阵的width/height

MobileNet V1网络结构

在这里插入图片描述

表中conv/s2:普通卷积,stride=2,
Filter Shape 3*3*3*32:输入特征矩阵的高宽深为3*3*3,卷积核个数为32
conv dw/s1:DW卷积,stride=1
Filter Shape 3*3*32:DW卷积的深度为1,输入特征矩阵的高宽3*3,输出特征矩阵深度32
  • Table 8:用准确率、运算量、模型参数作为衡量指标。MobileNet在ImageNet数据集上准确率比VGG 16少了0.9%,但是参数量少了很多。
  • Table 6: α是卷积核个数的倍率,也就是控制卷积过程中卷积核的个数, α=1.0时,准确率为70.6%……卷积核个数减少了不少,但是模型参数减少了很多
  • Table 7: β是分辨率参数,不同输入尺寸顿时网络准确率和模型计算量的对比……适当减少输入图像的大小,计算量大幅减少,但是准确率降低很少。

缺点:DW卷积在训练完后部分卷积核容易废掉,即卷积核参数大部分为0

MoblieNet V2网络

亮点:

  • Inverted Residuals(倒残差结构)
  • Linear Bottlenecks

残差结构比较:

在这里插入图片描述

ResNet的残差结构:通过11的卷积核降维(压缩),减少输入特征矩阵的channel,然后利用33的卷积核升维(扩充),增加channel
MobileNet的倒残差结构:先用11的卷积核进行升维操作,将channel边得更深,通过33的DW卷积操作进行卷积,再利用1*1的卷积核进行降维
倒残差结构实现用卷积核升维,在用卷积核降维,与残差结构是相反的。

激活函数不同:倒残差结构的记过函数为ReLu6。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • d图的倒残差网络结构:通过11的卷积,ReLu6激活,然后通过33的DW卷积,ReLu6进行激活,最后通过1*1的卷积,线性激活。
  • 对应table 1给出的每一层信息,每一层输入特征矩阵的高宽深hwk,11卷积核进行升维处理,optput里面的t是扩展因子,表示11的卷积核的个数是tk个,输出特征矩阵的深度就是tk。第二层输入等于第一层的输出,经过33的DW卷积核,部长为s,输出矩阵的深度和输入矩阵深度相同;第三层,采用11的卷积核降维,使用k‘个卷积核。
    另外,当stride=1且输入特征矩阵与输出特征矩阵shape相同才有shortcut连接。

MobileNet V2的网络结构:

在这里插入图片描述

t:扩展因子,是上一部分讲的1*1的卷积核的个数
一个block由一系列bottleneck组成
如表中第三行,n=2,s=2,表示bottleneck需要重复2次,第一层的bottleneck步距为2,第二层的bottleneck步距为1

例子:141464那行
n=3,表示有3层bottleneck,第一层满足stride=1,但是不会有shortcut连接,因为输入是64维,二输出是96维;第二层stride为1,输入特征矩阵和输出特征矩阵的深度相等,都是96,stride=1,特征矩阵的高宽不变,所以第二层bottleneck的输入特征矩阵和输出特征矩阵的shape是一样的,此时,才能使用shortcut。

最后一行,conv2d卷积层,其实就是全连接层,因为输出为111280,1*1如果不看,就是一维向量,卷积层和全连接层功能一样,k为分类类别数。

性能对比:分类任务和目标检测任务

在这里插入图片描述

MobileNet V3

亮点:

  • 更新了Block(bneck)
  • 使用NAS搜索参数(Neural Architecture Search)
  • 重新设计耗时层结构
    更准确、更高效

更新了Block(bneck)

在这里插入图片描述

加入了SE模块(SE是注意力机制模块)

如下半部分所示,就是将特征图进行池化,假设7732的特征图,池化成1132的向量,然后经过第一个全连接层缩减到118,然后经过第二个全连接层复原得到1132。
在这里插入图片描述
最后得到了0.5、0.6,然后用原来的特征图和这两个数据相乘,也就是把0.5和0.6当场了channel对应的权重(这里可以理解为对特征矩阵每一个channel分析出一个权重关系,比较重要的channel九赋予一个比较大的权重e)。

重新设计耗时层结构

在这里插入图片描述
关于重新设计耗时层结构,原论文主要讲了两个部分。首先是针对第一层卷积层,因为卷积核比较大,所以将第一层卷积核个数从 32 减少到 16。作者通过实验发现,这样做其实准确率并没有改变,但是参数量小了呀,有节省大概 2ms 的时间!

第二个则是精简 Last Stage。作者在使用过程中发现原始的最后结构比较耗时。精简之后第一个卷积没有变化,紧接着直接进行平均池化操作,再跟两个卷积层。和原来比起来明显少了很多层结构。作者通过实验发现这样做正确率基本没有损失,但是速度快了很多,节省了 7ms 的推理时间,别看 7ms 少,它占据了全部推理时间的 11%。

重新设计了激活函数

在这里插入图片描述 h-swish 的激活函数:便于提高网络准确率和求导。
注意,h-swish 实现虽然说比 swish 快,但和 ReLU 比还是慢不少。

网络结构

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值