前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >卷积神经网络学习路线(二十) | Google ICCV 2019 MobileNet V3

卷积神经网络学习路线(二十) | Google ICCV 2019 MobileNet V3

作者头像
BBuf
发布2020-02-21 11:27:00
8040
发布2020-02-21 11:27:00
举报
文章被收录于专栏:GiantPandaCV

前言

MobileNetV3是Google继MobileNet V1和MobileNet V2后的新作,主要使用了网络搜索算法(用NAS通过优化每个网络块来搜索全局网络结构,用NetAdapt算法搜索每个层的滤波器数量),同时在MobileNet V2网络结构基础上进行改进,并引入了SE模块(我们已经讲过了SENet,【cv中的Attention机制】最简单最易实现的SE模块)和提出了H-Swish激活函数。论文原文见附录。

关键点

1. 引入SE模块

下面的Figure3表示了MobileNet V2 Bottleneck的原始网络结构,然后Figure4表示在MobileNet V2 Bottleneck的基础上添加了一个SE模块。因为SE结构会消耗一定的时间,SE瓶颈的大小与卷积瓶颈的大小有关,我们将它们全部替换为固定为膨胀层通道数的1/4。这样做可以在适当增加参数数量的情况下提高精度,并且没有明显的延迟成本。并且SE模块被放在了Depthwise卷积后面。

在这里插入图片描述

2. 更改网络末端计算量大的层

MobileNetV2的inverted bottleneck结构是使用了1*1卷积作为最后一层,以扩展到高维度的特征空间(也就是下图中的320->1280那一层的1*1卷积)。这一层的计算量是比较大的。MobileNetV3为了减少延迟并保留高维特性,将该1*1层移到最终的平均池化之后(960->Avg Pool->1*1 Conv)。现在计算的最后一组特征图从7*7变成了1*1,可以大幅度减少计算量。最后再去掉了Inverted Bottleneck中的Depthwise和1*1降维的层,在保证精度的情况下大概降低了15%的运行时间。

在这里插入图片描述

3. 更改初始卷积核的个数

修改网络头部卷积核通道数的数量,Mobilenet v2中使用的是,作者发现,其实可以再降低一点,所以这里改成了,在保证了精度的前提下,降低了的速度。

4. H-Swish 激活函数

Mobilenet V3引入了新的非线性激活函数:H-Wwish。它是最近的Swish非线性函数的改进版本,计算速度比Swish更快(但比ReLU慢),更易于量化,精度上没有差异。其中Swish激活函数的公式如下:

其中是sigmoid激活函数,而H-Swish的公式如下:

简单说下,Swish激活函数相对于ReLU来说提高了精度,但因为Sigmoid函数而计算量较大。而H-swish函数将Sigmoid函数替换为分段线性函数,使用的ReLU6在众多深度学习框架都可以实现,同时在量化时降低了数值的精度损失。下面这张图提到使用H-Swish在量化的时候可以提升15%的精度,还是比较吸引人的。

在这里插入图片描述

5. NAS搜索全局结构和NetAdapt搜索层结构

刚才已经提到MobileNet V3模块是参考了深度可分离卷积,MobileNetV2的具有线性瓶颈的反向残差结构(the inverted residual with linear bottleneck)以及MnasNe+SE的自动搜索模型。实际上上面的1-4点都是建立在使用NAS和NetAdapt搜索出MobileNet V3的基础结构结构之上的,自动搜索的算法我不太了解,感兴趣的可以去查看原文或者查阅资料。

网络结构

开头提到这篇论文提出了2种结构,一种Small,一种Large。结构如Table1和Table2所示:

MobileNet V3-Small网络结构图可视化结果见推文最后的图片。

实验

分类都在ImageNet上面进行测试,并将准确率与各种资源使用度量(如推理时间和乘法加法(MAdds))进行比较。推理时间在谷歌Pixel-1/2/3系列手机上使用TFLite运行测试,都使用单线程大内核。下面的Figure1展示了性能和速度的比较结果。

下面的Figure2是运算量和准确率的比较。

下面的Table3是分类性能和推理速度的比较,而Table4是量化后的结果。

Figure 9展示了不同组件的引入是如何影响了延迟/准确度的。

下面的Table6是在SSDLite中替换Backbone,在MSCOCO数据集上的比较结果。在通道缩减的情况下,MobileNetV3-Large(V3+)比具有几乎相同mAP值的MobileNetV2快25%。然后在相同的推理速度下,MobileNetV3-Small比MobileNetV2和MnasNet的mAP值高2.4和0.5。

补充

在知乎上看到一个回答,蛮有趣的:

结论

基本上把MobileNet V3除了搜索网络结构的部分说完了,但是似乎这次Google开源的这个V3没有达到业界的预期吧。并且这篇论文给人的感觉是网络本身和相关的Trick很容易懂,但是具体是怎么搜索出V3以及预训练模型未开源这些问题仍会使我们一脸懵。但如果从工程角度来讲,毕竟使用简单,效果好对我们也足够了。

参考文章

  • 论文原文:https://arxiv.org/pdf/1905.02244.pdf
  • 源码实现:https://github.com/xiaolai-sqlai/mobilenetv3
  • 参考资料1:https://zhuanlan.zhihu.com/p/69315156
  • 参考资料2:http://tongtianta.site/paper/27865

欢迎关注GiantPandaCV, 在这里你将看到独家的深度学习分享,坚持原创,每天分享我们学习到的新鲜知识。( • ̀ω•́ )✧

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GiantPandaCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 关键点
    • 1. 引入SE模块
      • 2. 更改网络末端计算量大的层
        • 3. 更改初始卷积核的个数
          • 4. H-Swish 激活函数
            • 5. NAS搜索全局结构和NetAdapt搜索层结构
            • 网络结构
            • 实验
            • 补充
            • 结论
            • 参考文章
            • 欢迎关注GiantPandaCV, 在这里你将看到独家的深度学习分享,坚持原创,每天分享我们学习到的新鲜知识。( • ̀ω•́ )✧
            相关产品与服务
            灰盒安全测试
            腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档