【论文阅读笔记】Searching for MobileNetV3

全文概括

  MobileNetV3 是通过自动搜索技术得到的一个网络,可以在移动端的CPU上使用。MobileNetV3 并未提出新的 block,但提出了新的激活函数,并对 accurary 和 latency 的平衡性进行了分析。
  论文的开始是介绍如何使用自动搜索技术来设计网络结构的。在本文中,提出了两个网络架构:MobileNetV3-Large MobileNetV3-Small ,可以应用于分类、目标检测和语义分割任务。对于语义分割任务,提出了一个新的解码器:LR-ASPP(Lite Reduced Atrous Spatial Pyramid Pooling)。

  总体而言,MobileNetV3 是一个应用的结合体,表现为 MobileNetV2 + SE(r=4) + hard-swish + global avg pooling前置


MoblieNetV3 block

  MobileNetV3 的 block如下图所示。

  可以看出,MobileNetV3 的block 是由两部分组成:(1)含逆残差结构的深度可分离卷积;(2)squeeze and excitation的应用。
  可以注意到的是,SE结构应用于depthwise之后,而不是pointwise之后。

  所以,MobileNetV3的模块设计主要由三种模块设计组成:

  1. MobileNetV1 所引入的深度可分离卷积;
  2. MobileNetV2 所引入的具有线性瓶颈的逆残差结构((the inverted residual with linear bottleneck);
  3. MNasNet 所引入基于 squeeze and excitation结构的轻型注意力模型;

网络改进

Redesigning Expensive Layers

  作者通过架构搜索得到了一个初始网络,但作者发现网络最前面的一部分层和最后面的一部分层会比其他的层要“昂贵”一些(前面的的层resolution较大)。所以作者在维持精确度的前提下,对网络进行了一些修改,从而降低运行的时间。
  首先是将Global Avg Pooling层前置一个block,使用1*1卷积来计算特征。这个操作减少了 7 m s 7ms 7ms (占据 11 % 11\% 11%)的运行时间和 30 m i l l i o n s 30 millions 30millions 的 MAdds,并且基本没有精度损失。该改变如下图所示,图片的上部分是原有的MobileNetV2的最后一部分,下部分为改变后的MobileNetV3的最后一部分。

  在边缘检测上(输入图片后的第一个卷积操作),现在的轻型网络往往会使用32个卷积核的3*3卷积。作者在MobileNetV3上使用不一样的激活函数hard swich来代替常用的RELU和swish,同时将卷积核的个数从32减少到16,在达到一样的精度的同时,减少了2ms的运行时间。

激活函数

  使用 s w i s h swish swish激活函数代替 R e L U ReLU ReLU激活函数会带来不小的精度提升,但由于 s i g m o i d sigmoid sigmoid函数的存在, s w i s h swish swish函数会耗费更多的运行时间。
s w i s h [ x ] = x ∗ σ ( x ) swish[x]=x*\sigma(x) swish[x]=xσ(x)
   s i g m o i d sigmoid sigmoid函数可以使用分段线性函数 R e L U 6 ( x + 3 ) 6 \frac{ReLU6(x+3)}{6} 6ReLU6(x+3)来代替,所以 s w i s h swish swish可以得到其对应的实现函数: h − s w i s h [ x ] = x ∗ R e L U 6 ( x + 3 ) 6 h-swish[x]=x*\frac{ReLU6(x+3)}{6} hswish[x]=x6ReLU6(x+3)
  使用分段线性函数代替有两个好处:(1) s i g m o i d sigmoid sigmoid函数在终端部署时会较为耗时;(2) s i g m o i d sigmoid sigmoid函数具有不同的实现方式。在量化时,不同的实现方式可能会导致量化损失不匹配现象。

  下图表明,这种近似十分有效:

  作者通过实验意外地发现,选择swish作为激活函数所带来的好处是在较深的网络层使用swish实现的。所以,在本文的模型中,作者在网络的后半部分网络中才使用了hard-swish作为激活函数。


网络设计

  MobileNetV3-Large的网络设计:

  MobileNetV3-Small的网络设计:


实验

分类

  在ImageNet分类Top-1精度、计算量、参数量及在Pixel系列手机实验的结果:

  MobileNetV3 Large/Small 与 MobileNetV2的比较:

  从曲线可以看出,如果要使用比MobileNetV3-Large更小一个的网络时,MobileNetV3-small会更好一些。因为MobileNetV3-Large的卷积核个数变少时的表现不如MobileNetV3-Small。MobileNetV3-Small的效果要比MobileNetV2要好。


检测

  MobileNetV3 构建检测框架时,将stride=16的最后一个layer与stride=32的最后一个layer 之间的所有层的通道都减半。理由是在COCO数据集只有80个类,不需要1000个类的ImageNet那么大的网络。
  在SSDLite目标检测算法在MS COCO上的精度:


语义分割

  基于MobieNetV3设计了新的轻量级语义分割模型Lite R-ASPP:

性能比较

实验结果小结

  1. 在ImageNet分类任务中,MobileNetV3-Large的准确度与MobileNetV2相比提高了3.2%,同时延迟降低了15%。
  2. 在COCO数据集上使用SSDlite的检测任务中,MobileNetV3-large 的检测精度与MobileNetV2大致相同,但速度提高了25%。
  3. 在Cityscapes语义分割任务中,新设计的模型MobileNetV3-Large LR-ASPP 与 MobileNetV2 R-ASPP分割精度近似,但快30%。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值