论文推荐:EfficientNetV2 - 通过NAS、Scaling和Fused-MBConv获得更小的模型和更快的训练速度

EfficientNetV2是GoogleResearch在2021ICML上发布的深度学习模型,通过NAS和缩放优化训练速度和参数效率。它引入Fused-MBConv提升训练速度,采用非均匀缩放策略减少内存消耗,并利用ProgressiveLearning逐步增加训练难度。相比于EfficientNetV1,V2模型训练速度快11倍,参数少6.8倍,且在各种数据集上表现出色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EfficientNetV2是由 Google Research,Brain Team发布在2021 ICML的一篇论文,它结合使用NAS和缩放,优化训练速度和参数效率。并且模型中使用新操作(如 Fused-MBConv)在搜索空间中进行搜索。EfficientNetV2 模型比EfficientNetV1的训练速度快得多,同时体积小 6.8 倍。

论文大纲如下:

  • 理解和提高 EfficientNetV1 的训练效率
  • NAS 和缩放
  • Progressive Learning
  • SOTA 比较
  • 消融研究

理解和提高 EfficientNetV1 的训练效率

1、使用非常大的图像尺寸进行训练很慢

EfficientNet 的大图像尺寸会导致大量内存使用。 由于 GPU/TPU 上的总内存是固定的,因此使用较小的批大小,这会大大减慢训练速度。

FixRes (论文FixRes: Fixing the Train-Test Resolution Discrepancy)可用于通过使用更小的图像尺寸进行训练而不是推理。较小的图像尺寸会导致较少的计算量并支持较大的批量大小,从而将训练速度提高多达 2.2 倍,并且准确度还会有所提高。

2、Depth-wise卷积在模型的早期层执行缓慢但在后期层是有效的

Fused-MBConv 在谷歌 AI 博客中提出, Fused-MBConv 将 MBConv 中的 depthwise conv3×3 和扩展 conv1×1 替换为单个常规 conv3×3。

MBConv 和 Fused-MBConv 的结构

Fused-MBConv 逐渐将 EfficientNet-B4 中的原始 MBConv 替换为 Fused-MBConv。

在早期阶段 1-3 中应用时,Fused-MBConv 可以提高训练速度,而参数和 FLOP 的开销很小。

但是如果所有块都使用 Fused-MBConv(阶段 1-7),那么它会显着增加参数和 FLOP,同时也会减慢训练速度。

3、在每个阶段同样扩大规模并不是最优的

EfficientNet 使用简单的复合缩放规则平等地扩展所有阶段。 例如,当深度系数为 2 时,网络中的所有阶段都会使层数翻倍。 但是实际上这些阶段对训练速度和参数效率的贡献并不相同。在EfficientNetV2中,使用非均匀缩放策略逐渐向模型的后期添加更多层。EfficientNets 积极扩大图像大小,导致大量内存消耗和缓慢训练。为了解决这个问题,EfficientNetV2对缩放规则稍作修改,最大图像尺寸被限制为较小的值。

NAS 和缩放

1、NAS 搜索

神经架构搜索 (NAS) 搜索空间类似于 PNASNet。通过NAS进行卷积运算类型{MBConv, Fused-MBConv}的设计选择,包括层数,内核大小{3×3, 5×5},扩展比{1, 4, 6}等等。另一方面,搜索空间大小通过以下方式进行优化:

  • 删除不必要的搜索选项,例如 pooling skip 操作,因为它们从未在原始 EfficientNets 中使用;
  • 重用与在 EfficientNets 中已经搜索过的通道大小。

在减少图像尺寸的情况下,对1000多个模型,进行大约10个轮次的采样和训练,通过模型精度A、归一化训练步长S和参数大小P进行搜索,并使用简单加权乘积ax (Sw)×(Pv),确定了其中w=-0.07和v=-0.05。

EfficientNetV2 与 EfficientNetV1有几个主要区别:

  • EfficientNetV2 在早期层中广泛使用了 MBConv 和新添加的 fused-MBConv。
  • EfficientNetV2 更喜欢 MBConv 的较小扩展比,因为较小的扩展比往往具有较少的内存访问开销。
  • EfficientNetV2 更喜欢较小的核大小( 3×3),但它增加了更多层来补偿较小内核大小导致的感受野减少。
  • EfficientNetV2 完全移除了原始 EfficientNet 中的最后一个 stride-1 阶段,这可能是由于其较大的参数大小和内存访问开销。

2、缩放

EfficientNetV2-S 使用与 EfficientNet 类似的复合缩放比例放大以获得 EfficientNetV2-M/L,并进行了一些额外的优化:

最大推理图像大小限制为 480,因为非常大的图像通常会导致昂贵的内存和训练速度开销;

作为一种启发式方法,更多的层会逐渐添加到后面的阶段(例如,阶段 5 和 6),以便在不增加太多运行时开销的情况下增加网络容量。

通过训NAS 和缩放,所提出的 EfficientNetV2 模型的训练速度比其他的模型快得多。

Progressive Learning

改进学习中的训练过程

EfficientNetV2 的训练设置

ImageNet top-1 准确率

当图像尺寸较小增广较弱时模型的表现最好; 但是对于更大的图像,它在更强的增广的情况下表现更好。从小图像尺寸和弱正则化(epoch = 1)开始,然后随着更大的图像尺寸和更强的正则化逐渐增加学习难度:更大的 Dropout 率、RandAugment 幅度和混合比(例如,epoch = 300)。

下面显示了流程的伪代码:

SOTA比较

1、ImageNet

模型大小、FLOP 和推理延迟——延迟是在 V100 GPU 上以 16 的批量大小测量的

标有 21k 的模型在 ImageNet21k 上用 13M 图像进行预训练,其他模型直接在 ImageNet ILSVRC2012 上用 128 万图像从头开始训练。

  • EfficientNetV2 模型比以前在 ImageNet 上的 ConvNets 和 Transformer 模型速度明显更快,并实现了更好的精度和参数效率。

  • EfficientNetV2-M 达到了与 EfficientNet-B7 相当的精度,同时使用相同的计算资源进行训练的速度提高了 11 倍。

  • EfficientNetV2 模型在准确性和推理速度方面也显着优于所有最近的 RegNet 和 ResNeSt
    顶部的第一个图显示了结果。

通过在 ImageNet21k 上进行预训练( 32 个 TPU,两天),EfficientNetV2-L(21k) 将 top-1 准确率提高了 1.5%(85.3% 对 86.8%),在运行时使用的参数减少了 2.5 倍,FLOP 减少了 3.6 倍 训练和推理速度提高 6 倍 — 7 倍。

2、迁移学习

论文中使用了如下的数据集进行迁移学习测试:

每个模型都通过很少的步骤进行微调。EfficientNetV2 模型在所有这些数据集上都优于之前的 ConvNets 和 Vision Transformers。

在 CIFAR-100 上,EfficientNetV2-L 的准确度比之前的 GPipe/EfficientNets 高 0.6%,比之前的 ViT/DeiT 模型高 1.5%。 这些结果表明,EfficientNetV2 的泛化能力也远远超出了 ImageNet。

消融研究

1、相同训练的表现

使用相同学习设置的性能比较,EfficientNetV2 模型的性能仍然大大优于 EfficientNets:EfficientNetV2-M 将参数减少了 17%,FLOPs 减少了 37%,同时在训练中的运行速度比 EfficientNet-B7 快 4.1 倍,推理速度快 3.1 倍。

2、模型缩放

通过使用 EfficientNet 复合缩放缩小 EfficientNetV2-S 来比较较小的模型。所有模型都是在没有Progressive Learning的情况下进行训练的。 EfficientNetV2 (V2) 模型通常更快,同时保持相当的参数效率。

3、不同网络的 Progressive Learning

Progressive Learning通常会减少训练时间,同时提高所有不同网络的准确性。

4、自适应正则化(Adaptive Regularization)的重要性

自适应正则化

随机调整大小的原因是 TPU 需要为每个新大小重新编译动态运行图,所以这里每 8 个 epoch 随机采样一次图像大小,而不是每批。

自适应正则化在早期训练时期对小图像使用很小的正则化,使模型能够更快地收敛并获得更好的最终精度。

引用

https://www.overfit.cn/post/053825be64b64acfa9cbd527a4a1cab7

[2021 ICML] [EfficientNetV2]
EfficientNetV2: Smaller Models and Faster Training

https://arxiv.org/abs/2104.00298

<think>好的,用户想了解EfficientNetV2模型的使用教程、参数说明下载地址。首先我需要回忆一下EfficientNetV2的基本信息,它是EfficientNet的升级版,主要改进训练速度参数效率。接下来,用户可能需要具体的步骤来使用这个模型,所以得整理出环境配置、模型加载、训练步骤等。 用户提到的参数说明应该包括模型的不同变体,比如s、m、l等,以及对应的输入尺寸层数。下载地址方面,通常PyTorch或TensorFlow的模型库会有预训练模型,可能需要给出具体的链接或命令,比如torch.hub.load或者tensorflow.keras.applications中的引用方法。 还要注意用户提到的引用,需要正确对应。比如引用[1]是关于EfficientNetv2的结构解读,引用[2]可能涉及环境搭建数据集准备,引用[3]是关于图像分类的应用。需要确保在回答中正确引用这些内容,特别是在环境搭建、训练步骤应用场景部分。 用户可能遇到的问题包括如何安装必要的库,如何调整模型参数,如何处理输入数据格式等。此外,考虑到用户可能在不同框架下使用,需要分别说明TensorFlowPyTorch的实现方式。同时,下载地址需要检查是否仍然有效,避免提供过时的链接。 最后,生成的相关问题需要围绕模型结构、训练优化、应用场景等,帮助用户进一步了解。比如与其他模型的对比,如何微调,或者在不同硬件上的部署方法。确保回答结构清晰,分步骤说明,并且引用正确来源。</think>### EfficientNetV2模型使用教程 #### 一、环境搭建 1. 安装依赖库(以PyTorch为例): ```bash pip install torch torchvision # 若使用TensorFlow pip install tensorflow ``` 引用[2]中提供了详细的环境配置指南[^2]。 #### 二、模型加载与参数说明 1. **PyTorch实现**: ```python import torch model = torch.hub.load('hankyul2/EfficientNetV2-pytorch', 'efficientnetv2_s', pretrained=True) ``` 2. **TensorFlow实现**: ```python from tensorflow.keras.applications import EfficientNetV2B0 model = EfficientNetV2B0(weights='imagenet') ``` **核心参数说明**: | 模型变体 | 输入尺寸 | 参数量 | Top-1准确率 | |---------|---------|-------|------------| | V2-S | 384x384 | 20M | 83.9% | | V2-M | 480x480 | 54M | 85.2% | | V2-L | 480x480 | 120M | 85.7% | *数据来源:EfficientNetV2论文[^1]* #### 三、训练流程 1. **数据预处理**(符合ImageNet规范): ```python from torchvision import transforms preprocess = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) ``` 2. **微调配置**: ```python optimizer = torch.optim.Adam(model.parameters(), lr=1e-4) loss_fn = torch.nn.CrossEntropyLoss() ``` #### 四、模型下载地址 1. 官方预训练模型- PyTorch版:https://github.com/hankyul2/EfficientNetV2-pytorch - TensorFlow版:`tf.keras.applications.EfficientNetV2`(内置) 2. 自定义训练配置参考引用[2]的GitHub项目 #### 五、应用示例 ```python # 图像分类推理 from PIL import Image img = Image.open("test.jpg").convert('RGB') inputs = preprocess(img).unsqueeze(0) outputs = model(inputs) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值