论文名称: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系列当然是典型的第一种方法。在介绍mobilenet v3前,先来回顾一下mobilenet v1和v2的创新点:
mobilenet v1
mobilenet v2:
那么mobilenet v3又引入了哪些黑科技呢?:
话不多说,直接上重点
虽然mobilenet v3结构你已经知道了,但是,本文的重点,如何设计出的这个网络,即如何进行网络结构的搜索,还是有必要提一下的,这里我也没有细细研究,想深入了解的同学可以自行对应阅读论文
总体过程很简单,先通用NAS算法,优化每一个block,得到大体的网络结构,然后使用NetAdapt 算法来确定每个filter的channel的数量
这里由于small model的精度以及耗时影响相对较大,mobilenet v3 large和mobilenet v3 small是分别使用NAS设计的。
NAS之后,可以使用NetAdapt算法设计每个layer,过程如下:
先用NAS找到一个可用的结构A。
反复迭代,知道目标时间到达,找到最合适的结果。
候选是怎么选取的呢?
首先是分类部分的实验,向来比较豪的谷歌这次也不例外,作者使用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,毕竟这也是发展的一个势头。
文中有不足或错误的地方,欢迎广大小伙伴批评指正。