1.5 EfficientNetV2解析
EfficientNetV2模型,参见论文EfficientNetV2:Smaller Models and Faster Training(TAN M,LE Q.2021),可以视作EfficientNetV1的改进版。
EfficientNetV2与EfficientNetV1及其他同期优秀模型的直观比较如图1.19所示。横轴表示训练速度,纵轴表示准确率。EfficientNetV2基于ImageNet1K得到三个模型:V2-S、V2-M和V2-L,基于ImageNet21K得到四个模型:V2-S(21K)、V2-M(21K)、V2-L(21K)和V2-XL(21K)。
图1.19 EfficientNetV2、EfficientNetV1及其他同期优秀模型的直观比较
EfficientNetV2与EfficientNetV1相比,不仅注重平衡准确率、参数数量,还同时注重平衡模型的训练速度。V2-S准确率与V1-B6相当,但是训练速度快5倍。V2-XL(21K)取得87.3%的Top-1准确率,达到SOTA水平,比ViT模型高出2.0%。
表1.5给出了EfficientNetV2与EfficientNetV1、ResNet-RS和DeiT/ViT的横向对比,在准确率相当的情况下,EfficientNetV2的参数规模大幅下降,训练速度更快。
表1.5 EfficientNetV2与同期先进模型对比
再用EfficientNetV2-M与EfficientNetV1-B7对比,如表1.6所示。二者准确率相当,但是EfficientNetV2-M比EfficientNetV1-B7的参数量减少17%,计算量减少37%,训练时间减少76%,推理时间减少66%。优势显著。
表1.6 EfficientNetV2-M与EfficientNetV1-B7性能比较
EfficientNetV1的问题如下:
(1)输入图像尺寸变大时,模型训练显著变慢。以EfficientNetV1-B6为例,准确率、图像尺寸、批处理大小与训练速度关系如表1.7所示。当训练图像尺寸为380×380像素时,在Tesla V100上,batch_size=24还能运行起来,当图像尺寸变为512×512像素、batch_size=24时就报OOM(显存不足)错误了。
表1.7 模型EfficientNetV1-B6准确率、训练速度与图像尺寸、批处理大小的关系
(2)浅层采用深度可分离卷积(Depthwise Convolutions)导致训练速度变慢,但是深层依然较快。为此,EfficientNetV2采取结构优化措施,即将浅层的MBConv结构替换为Fused-MBConv结构。二者区别如图1.20所示,相当于将MBConv主分支中的升维Conv1×1和depthwise Conv3×3替换成一个普通的Conv3×3。
图1.20 MBConv与Fused-MBConv结构对比
表1.8给出了基于EfficientNetV1-B4的四种实验对比。No fused表示模型全部采用MBConv结构,Fused Stage1~3表示Stage1~3采用Fused-MBConv结构。在保持准确率不下降的情况下,Stage1~3阶段采用Fused-MBConv,训练速度显著提升。但是如果将Stage1~7全部换成Fused-MBConv,则参数和计算量大幅度增加,训练速度反而不如仅改变Stage1~3的情况。
表1.8 MBConv与Fused-MBConv实验结果对比
(3)EfficientNetV1中同等放大每个Stage是次优的。EfficientNetV1中每个Stage的深度和宽度都是按照系数同等放大的,但每个Stage对网络的训练速度及整体贡献并不相同,所以直接使用同等缩放的策略不尽合理。
为此,EfficientNetV2采取的改进如下:
(1)将训练-感知神经网络架构搜索和缩放(Training-Aware NAS and Scaling)相结合。
(2)新增Fused-MBConv模块替换浅层的MBConv结构。
(3)采用渐进学习(Progressive Learning)策略,可根据图像大小自适应调整正则化强度,在加快训练速度与保持准确率上取得较好的平衡。
※NAS
EfficientNetV1模型优化目标是追求参数规模和准确率之间的平衡,EfficientNetV2则是将优化目标调整为参数规模、准确率和训练速度三者之间的平衡。EfficientNetV2以EfficientNetV1作为骨干结构,搜索空间参数如下。
· 卷积模块Operator搜索:{MBConv,Fused-MBConv}。
· Stage层数搜索:#Layers。
· 卷积核尺寸搜索:{3×3,5×5}。
· 升维倍率因子搜索:{1,4,6}。即针对MBConv中第一个升维Conv1×1或者Fused-MBConv中第一个升维Conv3×3的升维因子系数搜索。
搜索过程中,采用强化学习算法,随机搜索采样了1000个模型,对每个模型用较小的图像尺度训练10个epoch(代)。搜索奖励函数定义为模型准确率A、训练一个Step所需时间S及模型参数大小P的组合:A·Sw·Pv,其中w=-0.07,v=-0.05。
※EfficientNetV2结构
表1.9给出了EfficientNetV2-S的模型定义,对比EfficientNetV1-B0,其主要变化如下:
(1)EfficientNetV2模型浅层的3个Stage采用Fused-MBConv卷积结构。
(2)EfficientNetV2模型的MBConv采用较小的通道倍率因子以减少内存消耗,例如用MBConv4取代MBConv6。
(3)EfficientNetV2模型不再采用5×5过滤器,而是全部采用3×3过滤器。由于3×3的感受野比5×5小,因此Stage内部需要堆叠更多的层数。
(4)EfficientNetV2模型比EfficientNetV1少一个Stage,以减少模型参数。表1.9中可以看到EfficientNetV2-S定义了Stage0~Stage7(EfficientNetV1定义了Stage1~Stage9)。
表1.9 EfficientNetV2-S的模型定义
表1.9中,Operator包含Conv、MBConv和Fused-MBConv三种结构。#Channels表示当前Stage输出的特征矩阵的通道数,#Layers表示当前Stage重复堆叠Operator的次数。模型其他结构解析如下。
(1)Conv3×3模块是普通的3×3卷积+swish激活函数+BN。
(2)Fused-MBConv模块名称后跟的数字1、4表示升维倍率因子,k3×3表示卷积核尺寸为3×3。
当升维倍率因子Expansion等于1时没有Conv1×1这一层,并且取消SE结构,如图1.21所示。
图1.21 Fused-MBConv模块逻辑结构
注意:
· 当Stride=1且输入输出的Channels相等时才有Shortcut(跳连)连接。
· 当有Shortcut连接时才有Dropout层。
这里的Dropout层采用Stochastic Depth算法,可以理解为随机减少了网络的深度,即会随机丢掉整个模块的主分支而保留跳连分支,相当于直接跳过了当前模块。
(3)MBConv模块结构如图1.22所示,类似EfficientNetV1中的定义。
图1.22 EfficientNetV2的MBConv模块定义
模块名称MBConv后面的数值4和6表示升维倍率因子,SE0.25表示包含SE模块,数值0.25表示SE模块中第一个全连接层的节点个数是当前MBConv模块输入特征矩阵通道数的1/4。
注意:
· 当Stride=1且输入输出的Channels相等时才有Shortcut连接。
· 当有Shortcut连接时才有Dropout层。这里的Dropout层仍然是Stochastic Depth。
· Stage会重复堆叠Operator模块多次,只有第一个Operator模块的步长是按照表1.9中Stride来设置的,其后的默认为1。
※渐进学习策略
模型输入图像的尺寸对模型训练效率有极大的影响,表1.7给出的实验结果也证明了这一点。此前有人尝试使用动态的图像尺寸来加速模型训练,例如,开始阶段用小尺寸图像训练,后面逐步增大,但通常会导致准确率降低。为此,EfficientNetV2给出了新的优化方案:准确率降低是不平衡的正则化方法导致的,在训练不同尺寸的图像时,应该使用动态的正则方法,而不是一成不变的正则方法。
表1.10是EfficientNetV2论文中基于ImageNet Top-1 Accuracy给出的实验结果。三种数据随机增强强度和三种图像尺寸,准确率数值来自三次实验的平均值。
表1.10 不同随机增强与图像尺寸对准确率的影响
EfficientNetV2训练过程中尝试使用不同的图像尺寸及不同强度的数据增强。表1.10所示实验结果证明,当图像尺寸较小时,使用较弱的数据增强效果更好;当图像尺寸较大时,则使用更强的数据增强效果更好。
例如,当Size=128时,RandAugment magnitude=5效果更好;当Size=300时,RandAugment magnitude=15效果更好。
基于上述实验结果,EfficientNetV2采用了渐进式训练策略,如图1.23所示。训练初期采用较小的训练尺寸及较弱的正则方法,有助于模型快速学习到一些简单的表达能力,然后逐渐提升图像尺寸,同时增强正则化强度。
图1.23 渐进式训练策略
论文中给出了三种正则化方法,分别是Dropout、RandAugment和Mixup。
可以直观看到图1.23中的变化,当Epoch=1时,用小尺寸图像,然后逐渐增强正则化强度,当Epoch=300时,在更高的Dropout rate、RandAugment magnitude和Mixup alpha的加持下,模型将面临更强的学习难度。这就是渐进学习策略的逻辑所在。
渐进学习策略的算法逻辑如Algorithm 1所示。
Algorithm 1 Progressive learning with adaptive regularization.
Input:Initial image size S0 and regularization{}.
Input:Final image size Se and regularization{}.
Input:Number of total training steps N and stages M.
for i=0 to M-1 do
Image size:Si←S0+(Se-S0)·
Regularization:
Train the model for steps with Si and Ri.
end for
(1)模型训练步数用N表示。
(2)图像初始尺寸用S0表示,图像最终尺寸用Se表示。
(3)初始正则强度用ϕ0={}表示,最终正则强度用ϕe={}表示,其中k表示k种正则化方法,包含Dropout、RandAugment和Mixup这三种。
(4)整个训练过程划分为M个阶段,第i阶段(1≤i≤M),模型训练的图像尺寸为Si,正则强度为ϕi={}。不同的阶段直接使用线性插值的方法递增。
表1.11给出了EfficientNetV2-S/M/L三个模型的渐进学习策略对比。论文还给出了大量的对比实验结果,证明EfficientNetV2具备更好的训练效率和更强的泛化能力。
表1.11 EfficientNetV2-S/M/L渐进学习策略参数对比