EfficientNetV2: Smaller Models and Faster Training
1.Abstract
本文提出了一种训练速度快、参数量少、模型小的卷积神经网络EfficientNetV2。
训练采用了NAS感知技术与缩放技术对训练速度与参数数量进行联合优化。
NAS感知技术: 全名是神经架构搜索,比如自动构建网络框架,选择最优参数。
缩放技术: 训练过程中,逐步提升图像大小,提出了一种渐进学习方式,根据图像大小,自适应的调整正则化因子(比如:dropout、数据增强)
2.网络的通病
训练图像的尺寸很大时,训练速度非常慢,但是又想要大尺寸。比如:
imageSize:224x224 batch:32
imageSize:512x512 batch:32
imageSize:764x764 batch:32 (显存不够)
但所本文batch不变,训练过中不断增大图像尺寸
3.网络设计
MBConv和Fused-MBConv的区别主要是卷积大小不同,depthwise conv3x3
网络浅层中使用Depthwise convolutions速度会很慢,无法充分利用现有的一些加速器,所以浅层网路的模块会少用depthwise conv3x3,但是放在最后,速度会加快
3.1 depthwise conv3x3
深网络,能够提取复杂特征,但是网络容易退化
宽网络,训练速度快,参数少,但复杂特征不容易提取
3.2 SE
SE本质就是全连接
3.3 MBConv代码实现
self.convs = torch.nn.Sequential(torch.nn.Conv2d(inc, midc, 1, bias = False),torch.nn.BatchNorm2d(midc),torch.nn.SiLU(),torch.nn.Conv2d(midc, midc, 3, padding=1, stride=stride, groups=midc, bias=False),torch.nn.BatchNorm2d(midc),torch.nn.SiLU(),SELayer(inc, midc),torch.nn.Conv2d(midc, outc, 1, bias=False),torch.nn.BatchNorm2d(outc))
SELayer:
self.fc = torch.nn.Sequential(torch.nn.Linear(outc, midc),torch.nn.SiLU(),torch.nn.Linear(midc, outc),torch.nn.Sigmoid())
3.4 Fused-MBConv
self.convs = torch.nn.Sequential(torch.nn.Conv2d(inc, midc, 3, stride = stride, padding = 1, bias = False),torch.nn.BatchNorm2d(midc),torch.nn.SiLU(),torch.nn.Conv2d(midc, outc, 1, bias = False),torch.nn.BatchNorm2d(outc))
4.整体网络
def efficientnetv2_s(num_classes=2, width_mult=1, dropout=0, p=0.2):config = [[FusedMBConv, 2, 1, 1, 24, p],[FusedMBConv, 4, 2, 4, 48, p],[FusedMBConv, 4, 2, 4, 64, p],[MBConv, 6, 2, 4, 128, p],[MBConv, 9, 1, 6, 160, p],[MBConv, 15, 2, 6, 256, p]]
第二列堆叠层数
第三列步长
第四列扩张率 比如:100*4做进一步操作,让通道变成8的倍数
第五列输入通道数
第六列倍率因子
网络模型还有efficientnetv2_M,efficientnetv2_L,只是参数量更大,堆叠的层数更多
5.亮点
渐进学习策略
训练图像的尺寸对训练模型的效率有很大的影响,如果使用动态的图像尺寸(比如一开始用很小的图像尺寸,后面再增大)来加速网络的训练,但通常会导致Accuracy降低。
原因:Accuracy的降低是不平衡的正则化导致的。在训练不同尺寸的图像时,应该使用动态的正则方法(之前都是使用固定的正则方法)。
操作:当训练的图片尺寸较小时,使用较弱的数据增强能够达到更好的结果;
当训练的图像尺寸较大时,使用更强的数据增强能够达到更好的接果。
当Size=128,RandAugmagnitude=5时效果最好;当Size=300,RandAugmagnitude=15时效果最好
训练早期使用较小的训练尺寸以及较弱的正则方法(weak regularization),网络快速学习到简单的表达能力。
接着逐渐提升图像尺寸,增大学习难度,同时增强正则方法(adding stronger regularization)。
regularization包括dropout rate,RandAugment magnitude以及mixup ratio
dropout rate:主要是影响通道数量
RandAugment magnitude:主要是数据增强
mixup ratio:数据增强是一种数据扩充方法,可分为同类增强(如:翻转、旋转、缩放、移位、模糊等)和混类增强(如mixup)两种方式
6.渐进学习策略可以用于我们的网络吗?
可以
6.值得学习的点
1.动态改变尺寸
2.动态正则化策略
实践:直接使用EfficientNetV2-S进行模糊和清晰分类:
1-100 epoch的准确率80%
101-200 epoch的准确率89%
200-350 epoch的准确率94%