mobilenet系列之又一新成员---mobilenet-v3

论文名称:Searching for MobileNetV3

作者:Googler

论文链接:https://arxiv.org/abs/1905.02244


简要概述文章精华

mobilenet-v3是Google继mobilenet-v2之后的又一力作,作为mobilenet系列的新成员,自然效果会提升,mobilenet-v3提供了两个版本,分别为mobilenet-v3 large 以及mobilenet-v3 small,分别适用于对资源不同要求的情况,论文中提到,mobilenet-v3 small在imagenet分类任务上,较mobilenet-v2,精度提高了大约3.2%,时间却减少了15%,mobilenet-v3 large在imagenet分类任务上,较mobilenet-v2,精度提高了大约4.6%,时间减少了5%,mobilenet-v3 large 与v2相比,在COCO上达到相同的精度,速度快了25%,同时在分割算法上也有一定的提高。本文还有一个亮点在于,网络的设计利用了NAS(network architecture search)算法以及NetAdapt algorithm算法。并且,本文还介绍了一些提升网络效果的trick,这些trick也提升了不少的精度以及速度。

文章介绍

近年来,随着智能应用的不断增加,轻量化网络成为近年来的一个研究热点,毕竟不是所有设备都有GPU来计算的,轻量化 网络顾名思义,就是网络的参数量比较少,速度较快,下面总结了目前常用的一些减少网络计算量的方法:

  • 基于轻量化网络设计:比如mobilenet系列,shufflenet系列, Xception等,使用Group卷积、1x1卷积等技术减少网络计算量的同时,尽可能的保证网络的精度。
  • 模型剪枝: 大网络往往存在一定的冗余,通过剪去冗余部分,减少网络计算量。
  • 量化:利用TensorRT量化,一般在GPU上可以提速几倍。
  • 知识蒸馏:利用大模型(teacher model)来帮助小模型(student model)学习,提高student model的精度。

mobilenet系列当然是典型的第一种方法。在介绍mobilenet v3前,先来回顾一下mobilenet v1和v2的创新点:

mobilenet v1

  • 利用分组卷积降低网络的计算量,并且mobilenet将分组卷积应用到极致,即网络的分组数与网络的channel数量相等,使网络的计算量减到最低,但是这样channel之间的交互就没有了,所以作者又使用的point-wise conv,即使用1x1的卷积进行channel之间的融合。
  • 直筒结构。

mobilenet v2:

  • 引入了bottleneck结构。
  • 将bottleneck结构变成了纺锤型,即resnet是先缩小为原来的1/4,再放大,他是放大到原来的6倍,再缩小。
  • 并且去掉了Residual Block最后的ReLU。

那么mobilenet v3又引入了哪些黑科技呢?:

话不多说,直接上重点

  • 1.引入SE结构
    在bottlenet结构中加入了SE结构,并且放在了depthwise filter之后,如下图。因为SE结构会消耗一定的时间,所以作者在含有SE的结构中,将expansion layer的channel变为原来的1/4,这样作者发现,即提高了精度,同时还没有增加时间消耗。并且SE结构放在了depthwise之后。

在这里插入图片描述

  • 2.修改尾部结构:
    在mobilenetv2中,在avg pooling之前,存在一个1x1的卷积层,目的是提高特征图的维度,更有利于结构的预测,但是这其实带来了一定的计算量了,所以这里作者修改了,将其放在avg pooling的后面,首先利用avg pooling将特征图大小由7x7降到了1x1,降到1x1后,然后再利用1x1提高维度,这样就减少了7x7=49倍的计算量。并且为了进一步的降低计算量,作者直接去掉了前面纺锤型卷积的3x3以及1x1卷积,进一步减少了计算量,就变成了如下图第二行所示的结构,作者将其中的3x3以及1x1去掉后,精度并没有得到损失。这里降低了大约15ms的速度。

在这里插入图片描述

  • 3.修改channel数量
    修改头部卷积核channel数量,mobilenet v2中使用的是32 x 3 x 3,作者发现,其实32可以再降低一点,所以这里作者改成了16,在保证了精度的前提下,降低了3ms的速度。,这里给出了mobilenet v2以及mobilenet v3的结构对比:

在这里插入图片描述
在这里插入图片描述

  • 4.非线性变换的改变
    使用h-swish替换swish,swish是谷歌自家的研究成果,颇有点自卖自夸的意思,这次在其基础上,为速度进行了优化。swish与h-swish公式如下所示,由于sigmoid的计算耗时较长,特别是在移动端,这些耗时就会比较明显,所以作者使用ReLU6(x+3)/6来近似替代sigmoid,观察下图可以发现,其实相差不大的。利用ReLU有几点好处,1.可以在任何软硬件平台进行计算,2.量化的时候,它消除了潜在的精度损失,使用h-swish替换swith,在量化模式下回提高大约15%的效率,另外,h-swish在深层网络中更加明显。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如下两张图展示的是使用h-swish对于时间以及精度的影响,可以发现,使用h-swish@16可以提高大约0.2%的精度,但是持剑延长了大约20%。
    在这里插入图片描述

虽然mobilenet v3结构你已经知道了,但是,本文的重点,如何设计出的这个网络,即如何进行网络结构的搜索,还是有必要提一下的,这里我也没有细细研究,想深入了解的同学可以自行对应阅读论文

总体过程很简单,先通用NAS算法,优化每一个block,得到大体的网络结构,然后使用NetAdapt 算法来确定每个filter的channel的数量

这里由于small model的精度以及耗时影响相对较大,mobilenet v3 large和mobilenet v3 small是分别使用NAS设计的。

NAS之后,可以使用NetAdapt算法设计每个layer,过程如下:

  • 先用NAS找到一个可用的结构A。

    1. 在A的基础上生成一系类的候选结构,并且这些候选结构消耗在一点点减少,其实就是穷举子结构。
    2. 对于每个候选结构,使用前一个模型进行初始化,(前一个模型没有的参数随机初始化就行),finetune T个epoch,得到一个大致的精度。
    3. 在这些候选结构中,找到最好的。
  • 反复迭代,知道目标时间到达,找到最合适的结果。

候选是怎么选取的呢?

  • 降低expansion layer的size.
  • 减少botleneck
实验部分:

首先是分类部分的实验,向来比较豪的谷歌这次也不例外,作者使用16块TPU,batchsize为4096进行训练。然后作者选择在Google的Pixel Phone进行测试。

下图为作者ImageNet网络的测试结果,结果可以看出V3 large相比较与V2 1.0 精度上提高了大约3个点,但是速度却从78ms下降到66ms(Pixel-1手机),V3 small 相比较与V2 0.35,精度从60%提高到了67%,速度稍有增加,从19ms增加到21ms(Pixel-1手机).
在这里插入图片描述

下图对比了不同的google phone上面,模型量化后(float量化,非int8量化)的耗时,其中P-1,P-2,P-3分别代表的是不同性能的手机。我这里主要分析一下V3-Large网络吧,可见量化后,TOP-1精度从上面图的75.2%下降到了73.8%,降低了大约1.5个点,符合正常情况,在P1-P3的加速效果来看P1加速了9ms(66ms),P2加速了20ms(77ms),P3加速了15ms(52.6ms)。与V2网络相比,其实速度相差不大,(为啥原本速度相差还挺大,量化之后相差不大了呢?这是个值得考虑的问题
在这里插入图片描述

下图是作者实验了使用不同的分辨率以及不同的模型深度的精度对比,分辨率分别选择的是[96,128,160,192,224,256],深度分别选为原来的[0.35,0.5,0.75,1.0,1.25]。可见,其实resolution对于精度以及速度的平衡效果更好,可以达到更快的速度,同时精度没有改变模型深度精度低,反而更高。(但是很多时候,其实分辨率的大小是根据场景决定的,比如检测和分割就需要较大尺度的图像)。
在这里插入图片描述

下图展示了从MnasNet经过一系列的修改,到mobileNet v3的精度与速度变化的过程。
在这里插入图片描述
下图是将mobilenet v3应用于SSD-Lite在COCO测试集的精度结果。观察可以发现,在V3-Large上面,mAP没有特别大的提升但是速度确实降低了一些的。
在这里插入图片描述
下图是分割的结构图,这里就不详细介绍了,感兴趣的读者可以自行看论文。
在这里插入图片描述

总结

总结来看,mobilenet V3其实并没有惊艳的结构提出,最主要的还是应用了诸如SE、H-Swish等tricks,然后利用Google前面提出的NAS以及NetAdapt算法进行结构的自动搜索,提升了一定的精度,降低了一定的速度。可能本篇论文的重点更在于进一步展示一下网络自动结构搜索的有效性,这样对应了文中的标题:Searching for,毕竟这也是发展的一个势头。

文中有不足或错误的地方,欢迎广大小伙伴批评指正。

  • 24
    点赞
  • 191
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Dear ImGui 1.77   Dear ImGui is a bloat-free graphical user interface library for C++. It outputs optimized vertex buffers that you can render anytime in your 3D-pipeline enabled application. It is fast, portable, renderer agnostic and self-contained (no external dependencies).   Dear ImGui is designed to enable fast iterations and to empower programmers to create content creation tools and visualization / debug tools (as opposed to UI for the average end-user). It favors simplicity and productivity toward this goal, and lacks certain features normally found in more high-level libraries.   Dear ImGui is particularly suited to integration in games engine (for tooling), real-time 3D applications, fullscreen applications, embedded applications, or any applications on consoles platforms where operating system features are non-standard. 开源地址GitHub 使用ImGui的用户 Ubisoft (刺客信条的开发商) 暴雪 微软 亚马逊 索尼 任天堂 谷歌 英伟达 n+1................... ImGui不单单是适合游戏UI设计,使用ImGui开发的工具其实非常多,建模,大数据展示平台,天文展示平台,地理展示平台,城市公交车调度平台等等等,可能是易语言 用户不爱去正规企业搞开发的原因吧。所以私企定制化需求了解得少。 假设你去了中铁,现在叫你要开发一款 “钻机实时监测”程序 那么什么WEB UI ,Win32 基础控件,GDI+控件是压根行不通的,因为钻机很多都是进口的,随便一台也是几百上千万,工作成本非常昂贵,不然开一条隧道几个亿呢~ 所以它每0.1秒的工作成本也非常高,由于它太精密,所以就导致需要1秒内实时显示成千上万组数据,这个时候ImGui就能排得上用场。 本模块实际上是使用C++封装为DLL给E调用,封装了整个ImGui大概有90%左右的基础函数, 函数和用法基本和官方Demo一致。所以是英文的函数,所以你就算基本上照着官方的Demo写E代码也可以。不喜勿用! 如果你需要“ImGui纯E源码” 那你可以自行翻译ImGui的C++代码到E,在你熟悉E和C++的情况下,大概需要你半年左右的时间。 吐槽一下 因为群里一直有人催我发,我已经说了没封装完,但是还是催。其实很烦的,因为我又不欠你的,我要上班养家糊口的。这些只能用我业余时间搞搞,进度自然慢。所以我就干脆发出来来吧,大概完成度为80%左右,不影响正常使用,函数备注什么的就自己去官方查吧。 根据之前的情况来看,易语言用户群体至少80%以上是白嫖怪,所以拿人手短,不要那么理直气壮,我不爽,大家也别愉快的玩耍,明白????再根据之前ETStudio  来看,很多人都不知道,易语言配色是什么,甚至很多人不知道原来易语言还有一个“设置”功能??还有一大部分人也不看说明 ,有问题只知道弹窗,在? 你这个有XX问题啊,在?这里怎么写? 在?能给我远程一下么? 我是崩溃的,所以有任何问题,请现在自行去GIT,百度,谷歌,维基等等查询。另外 本模块自带了一个列子,虽然比较乱,但是它是一个非常完善的基础使用列子,请认真自行阅读并理解!部分机器可能需要DX运行环境https://www.microsoft.com/zh-cn/download/details.aspx?id=35 除了封装ImGui之外,还会封装一些“有趣”的插件,比如已经完全封装完毕的ImPlot(图表)插件。模块内的是Dx11,其实也可以是DX10 DX 9 OPENGL之类的,以后有时间在慢慢搞了。 附上图吧 请勿将本模块用在一切非法用途,违者自负!!!!!!! G2U函数在WI
亚马逊在2010年在全球范围内销售有形,无形和服务,总额为340亿美元。2010年,在eBay.com上,全球有9700万活跃用户会面,在线交易总额为620亿美元。到2011年第四季度的收入达到105亿美元。2010年,美国人在网上购物的支出约为1730亿美元。 2013年,全球电子商务营业额预计将增长至9,630亿美元。这些数字说明了电子商务在当今和未来全球经济中的重要性。 电子商务的税收也是非常重要和棘手的问题。 本文研究了电子商务的税收挑战,并讨论了在学术水平,国家水平和国际水平上当前的应对措施。 讨论得出的结论是,到目前为止,尚未给出应对挑战的正确答案,在电子商务时代,必须采取不同的应对措施至关重要。 文章主张对跨境电子商务收入征收全球电子商务税,并设计该税的细节。 从制度上讲,这项税收应由称为“全球税收基金”的超国家机构征收和管理,该条款为各国在新的国际税收条约中建立的这一新机构的设计设定了框架。 该提案补充说,全球电子商务税收应用于资助全球公共物品,例如气候稳定和全球通信基础设施等。 本文中进行了大量实质性的规范工作,以说服从税收政策的角度来看,拟议的税收是一项很好的税收。 该文章提出这样的论点,即为全球公共产品提供资金的全球电子商务税是合法,确定,高效,公平的,并且有助于真正的全球需求的融资,最终得出结论,全球电子商务税将是可取的,而且是可取的。合理解决政府职能的收入和支出方面的关联问题。 此外,本文回应了对本文的新颖思想的预期反对。 它认为超国家税收不会违反税收理论。 相反,它与全球时代的理论并驾齐驱。 关于国家主权异议,文章认为主权已经改变,超国家政权为新的主权服务。 这篇创新文章的结尾是呼吁开放思维。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值