原文链接:打破常规,逆残差模块超强改进,新一代移动端模型MobileNeXt来了!精度速度双超MobileNetV2
导语:该文是依图科技&新加坡国立大学颜水成大佬团队提出的一种对标MobileNetV2的网络架构MobileNeXt。它针对MobileNetV2的核心模块逆残差模块存在的问题进行了深度分析,提出了一种新颖的SandGlass模块,并用于组建了该文的MobileNeXt架构,SandGlass是一种通用的模块,它可以轻易的嵌入到现有网络架构中并提升模型性能。该文应该是近年来为数不多的优秀终端模型了,推荐指数五颗星。
paper: https://arxiv.org/abs/2007.02269
code: https://github.com/zhoudaquan/rethinking_bottleneck_design(未开源)
截止目前,逆残差模块已成为手机端网络架构设计的主流架构。它通过引入两个主要的设计规则(1.逆残差学习;2.线性瓶颈层)对经典的残差瓶颈模块进行了改变。
该文作者对这种设计模式改变的必要性进行了重思考,发现:这种设计模块可能导致信息损失与梯度混淆。鉴于此,作者提出对该结构进行镜像并提出一种新颖的瓶颈模块,称之为SandGlass Block
,它在更高维度进行恒等映射与空间变换,因此可以有效的缓解信息损失与梯度混淆。
作者通过实验证实:所提模块比已有的逆残差模块更有效。在ImageNet分类任务中,通过简单的模块替换(即采用SandGlass 替换MobileNetV2中的InvertedResidualBlock),即可取得了1.7%的性能提升,且不会导致额外的参数量与计算量提升;在VOC2007测试集上,可以按到目标检测指标的0.9%mAP的提升。
与此同时,作者将所提模块嵌入到NAS方法(DARTS)搜索空间中,可以取得了0.13%的性能提升且参数量降低25%。
下图给出了目前CNN网络架构常用的两种主流模块与本文所提的模块:
已有研究表明:(1) 更宽的网络有利于缓解梯度混淆问题并有助于提升模型性能;(2)逆残差模块中的短连接可能会影响梯度回传。
考虑到上述逆残差模块的局限性,作者对其设计规则进行重思考并提出了SandGlass模块缓解上述问题。该模块的设计主要源自如下几点分析:
基于上述分析,作者从以下几个方面进行了模块的精心设计(最终设计的模块见上图)。
G = ϕ e ( ϕ r ( F ) ) + F G = \phi_e (\phi_r(F)) + F G=ϕe(ϕr(F))+F
G ^ = ϕ 1 , p ϕ 1 , d ( F ) G = ϕ 1 , d ϕ 2 , p ( G ^ ) + F \hat{G} = \phi_{1,p}\phi_{1,d}(F) \\ G = \phi_{1,d} \phi_{2,p}(\hat{G}) + F G^=ϕ1,pϕ1,d(F)G=ϕ1,dϕ2,p(G^)+F
其中 ϕ i , p , ϕ i , d \phi_{i,p}, \phi_{i,d} ϕi,p,ϕi,d分别表示1x1卷积与深度卷积。从而确保了深度卷积在高维空间处理并得到更丰富的特征表达。
前面已经对该文所提到的SandGlass模块进行了详细介绍说明,那么接下来就是如何利用上述模块构建网路架构了。作者将上述模块构建的网络架构称之为MobileNeXt(是为了对标MobileNet吗?哈哈)。MobileNeXt的详细配置信息见下表。注:SandGlass中的扩展比例与MobileNetV2中的相同,均为6.
已有研究表明:残差模块中的短连接有助于梯度跨层传播。但是,作者通过实验发现:没有必要保持全局恒等tensor与残差分支组合。为使得该网络更适合于手机端,作者引入了一个新的超参数:identity tensor multiplier,表示为 α ∈ [ 0 , 1 ] \alpha \in [0,1] α∈[0,1]。为简单起见,我们假设 ϕ \phi ϕ表示残差分支的变换函数,那么添加该超参数后的模块可以重写为:
G 1 : α M = ϕ ( F ) 1 : α M + F 1 : α M G α M : m = ϕ ( F ) α M : M G_{1:\alpha M} = \phi(F)_{1: \alpha M} + F_{1:\alpha M} \\ G_{\alpha M : m} = \phi(F)_{\alpha M : M} G1:αM=ϕ(F)1:αM+F1:αMGαM:m=ϕ(F)αM:M
这里引入的超参数 α \alpha α有两个作用:
为说明所提方案的有效性,作者在ImageNet与VOC数据集上进行了实验分析。在模型训练过程中,优化器为SGD(momentum=0.9,weight_decay= 4 × 1 0 − 5 4\times 10^{-5} 4×10−5),初始学习率为0.05,cosine方式衰减,BatchSize=256,4个GPU。如无特殊说明,模型总计训练200epoch。
下表给出了所提方法与MobileNetV2在不同参数量下的性能对比。可以看到:(1) 所提方法在参数量和精度方面均优于MobileNetV2;(2) 模型越小,所提方法优势越明显。
下表给出了所提方法在添加后训练量化后的性能对比。可以看到:后训练量化对于MobileNet的精度影响非常大,而所提方法经量化后性能差异进一步拉大。产生这种现象的原因有两点:(1) 相比MobileNetV2,所提方法将短连接有瓶颈区域移到了高维区域,经由量化,跟过的信息得以保留;(2) 采用更多的深度卷积有助于保留更多的空域信息,而空域信息有助于分类性能提升。
为更好的说明所提模块有效性,作者将MobileNetV2的卷积数提升到与SandGlass相同。实验结果见下表。尽管添加了额外的深度卷积有确实提升了模型性能,但仍比所提方法的性能低1%,而且MobileNetV2添加额外的深度卷积还导致了参数量与计算量的增加。
此外,作者还给出了所提方法与其他SOTA方法的性能对比,见下表。注:为更好的说明所提方法的优越性,作者还额外引入了SE模块。
下表给出了超参数 α \alpha α不同配置时的模型性能对比,注:硬件平台为Google Pixel 4XL手机,Pytorch导出模型。可以看到随着该超分数的酱烧,推理速度有提升,且性能无显著下降。此外,作者还提到,在Pixel 4XL平台,TF-Lite推理框架下,MobileNeXt的推理速度为66ms,MobileNetV2的推理速度为68ms(可能这里的模型进行了量化,作者原文并未细说)。
为探索所提方案的迁移性能,作者在目标检测任务上进行了更多的实验分析,结果见下表。相比MobileNetV2,所提方法作为Backbone时的性能可以提升0.09mAP。
为更好说明所提方案的有效性,作者还将其与NAS相结合,将该模块为作为NAS网络的搜索空间。相关结果见下表。关于NAS所得网路架构建议查看原文的supp部分内容。
好了,全文核心内容到此结束。对此感兴趣的小伙伴建议去看原文,虽然这里已经将文章核心介绍清楚了,但实验部分的分析还是建议查看原文。
该文对逆残差模块中的设计规则与缺陷进行了深度分析,并基于分析结果提出一种新颖的称之为SandGlass的模块。它打破了传统残差模块的设计思想并着重说明了高维度特征进行短连接的重要。最后作者通过实验在分类、检测以及NAS方面论证了所提方案的有效性。
关注极市平台公众号(ID:extrememart),获取计算机视觉前沿资讯/技术干货/招聘面经等