轻量级网络——EfficientNetV2

本文涉及的产品
文件存储 NAS,50GB 3个月
简介: 轻量级网络——EfficientNetV2

paper核心:针对EfficientNets的不足提出了Fused-MBConv结构,应用训练感知NAS和缩放联合优化模型精度、训练速度和参数大小,还提出渐进性学习方法加快了训练时间。

ps:这篇笔记的图片来源与参考资料


1.EfficientNetV2介绍


  • EfficientNetV1的不足:

使用非常大的图像尺寸进行训练是缓慢的。并且容易导致Out Of Memery

image.png

  • depthwise convolutions在早期层是缓慢的。DW卷积比常规卷积具有更少的参数和失败,但它们往往不能充分利用现代加速器。Fused-MBConv与MBConv的部分结合效果比较好。(如下图所示,1-3层用Fused-MBConv而其他层用MBConv效果最好)

image.png

两者的结构图:

image.png

  • 同等地扩大每个阶段是次优的。EfficientNetV2将使用非统一的缩放策略,逐步添加更多的层到后面的阶段。并稍微修改了缩放规则,将图像的最大尺寸限制为较小的值。


EfficientNetV2的贡献:

  • 提出EfficientNetV2,一个更小更快的新系列。通过我们的训练感知NAS和缩放发现,EfficientNetV2在训练速度和参数效率方面都优于以前的模型。
  • 提出一种改进的渐进式学习方法,它可以自适应地调整正则化与图像大小。试验表明,它加快了训练,同时提高了准确性。
  • 在ImageNet、CIFAR、Cars和Flowers数据集上演示了比现有技术快11倍的训练速度和6.8倍的参数效率。


EfficientNetV2的主要工作:

  • 主要关注训练速度与参数量
  • 对于小尺寸的图片采用小强度的正则化;对于大尺寸的图片采用高强度的正则化,提高了准确率,从而实现自适应正则化操作
  • 使用NAS搜索技术优化训练速度与参数效率


2.EfficientNetV2改进


1)NAS Search

这里采用的是trainning-aware NAS framework,搜索工作主要还是基于之前的Mnasnet以及EfficientNet. 但是这次的优化目标联合了accuracy、parameter efficiency以及trainning efficiency三个维度。这里是以EfficientNet作为backbone,设计空间包含:

  • convolutional operation type :{MBConv, Fused-MBConv}
  • number of layer
  • kernel size :{3x3, 5x5}
  • expansion ratio (MBConv中第一个expand conv1x1或者Fused-MBConv中第一个expand conv3x3): {1, 4, 6}


另外,作者通过以下方法来减小搜索空间的范围:

  • 删除不必要的搜索选项,如pooling skip操作,因为它们从来没有在最初的EfficientNets中使用
  • 重用EfficientNet中搜索的channel sizes

image.png

2)EfficientNetV2 Architecture

与EfficientNetV1类似,但是有几点不同:(注意是EfficientNetV2-S的结构)

image.png

  • 第一个不同点在于EfficientNetV2中除了使用到MBConv模块外,还使用了Fused-MBConv模块(主要是在网络浅层中使用)。
  • 第二个不同点是EfficientNetV2会使用较小的expansion ratio(MBConv中第一个expand conv1x1或者Fused-MBConv中第一个expand conv3x3)比如4,在EfficientNetV1中基本都是6. 这样的好处是能够减少内存访问开销。
  • 第三个不同点是EfficientNetV2中更偏向使用更小(3x3)的kernel_size,在EfficientNetV1中使用了很多5x5的kernel_size。通过下表可以看到使用的kernel_size全是3x3的,由于3x3的感受野是要比5x5小的,所以需要堆叠更多的层结构以增加感受野。
  • 最后一个不同点是移除了EfficientNetV1中最后一个步距为1的stage(就是EfficientNetV1中的stage8),可能是因为它的参数数量过多并且内存访问开销过大(由于网络是通过NAS搜索出来的,所有这里也是作者的猜测)。


通过上表可以看到EfficientNetV2-S分为Stage0到Stage7(EfficientNetV1中是Stage1到Stage9)。Operator表示在当前Stage中使用的模块:

  • Conv3x3就是普通的3x3卷积 + 激活函数(SiLU)+ BN
  • Fused-MBConv模块名称后跟的1,4表示expansion ratio,k3x3表示kenel_size为3x3,注意当expansion ratio等于1时是没有expand conv的,还有这里是没有使用到SE结构的(原论文图中有SE)。注意当stride=1且输入输出Channels相等时才有shortcut连接。还需要注意的是,当有shortcut连接时才有Dropout层,而且这里的Dropout层是Stochastic Depth,即会随机丢掉整个block的主分支(只剩捷径分支,相当于直接跳过了这个block)也可以理解为减少了网络的深度。具体可参考Deep Networks with Stochastic Depth这篇文章。

image.png

  • MBConv模块和EfficientNetV1中是一样的,其中模块名称后跟的4,6表示expansion ratio,SE0.25表示使用了SE模块,0.25表示SE模块中第一个全连接层的节点个数是输入该MBConv模块特征矩阵channels的1/ 4

.注意当stride=1且输入输出Channels相等时才有shortcut连接。同样这里的Dropout层是Stochastic Depth

image.png

Stride就是步距,注意每个Stage中会重复堆叠Operator模块多次,只有第一个Opertator模块的步距是按照表格中Stride来设置的,其他的默认都是1。 #Channels表示该Stage输出的特征矩阵的Channels,#Layers表示该Stage重复堆叠Operator的次数。

3)EfficientNetV2 Scaling

使用复合缩放来扩展EfficientNetV2-S以获得EfficientNetV2-M/L并进行了一些额外的优化:

  • 将最大的推理图像大小限制为480,因为非常大的图像通常会导致昂贵的内存和训练速度开销
  • 逐渐添加更多的层到后面的阶段(如表4中的阶段5和阶段6),以增加网络容量但又不增加太多的运行开销

4)Progressive Learning

对于同一个网络,较小的图像尺寸也会导致较小的网络容量,因此需要较弱的正则化;反之,图像尺寸越大,计算量越大,容量越大,因此更容易出现过拟合。

当图像大小很小时,它在弱增强时具有最好的准确性;但对于更大的图像,增强效果更好。这种洞察力促使我们在训练过程中随着图像大小自适应地调整正则化,从而产生了我们改进的渐进学习方法。

image.png

渐进学习的训练过程:

在早期的训练时代,我们用较小的图像和较弱的正则化来训练网络,这样网络可以轻松快速地学习简单的表示。然后,我们逐渐增加图像的大小,但也使学习更加困难,增加更强的正则化。这里所说的regularization包括dropout rate,RandAugment magnitude以及mixup ratio(包括了数据增强)。如图所示:

image.png

image.png

下表给出了EfficientNetV2(S,M,L)三个模型的渐进学习策略参数:

image.png

对于渐进式学习,我们将训练过程分为四个阶段,每个阶段约87个epoch:早期阶段使用较小的图像尺寸,弱正则化,而后期阶段使用较大的图像尺寸,强正则化,如算法1所述。表6显示了图像大小和正则化的最小值(第一阶段)和最大值(最后阶段)。为简单起见,所有模型都使用相同的最小值大小和正则化,但它们采用不同的最大值,因为更大的模型通常需要更多的正则化来对抗过拟合。其中用于训练的最大图像大小大约比推理小20%,但我们在训练后不会对任何图层进行微调。


3.EfficientNetV2性能指标


ImageNet21k (Russakovsky et al., 2015)包含约13M训练图像,21,841个类。原始的ImageNet21k没有train/eval分割,所以作者保留随机抽取的100,000张图像作为验证集,其余的作为训练集。在很大程度上重复使用了与ImageNet ILSVRC2012相同的训练设置,但有一些变化:

  • 将训练时点改为60或30以减少训练时间,并使用余弦学习率衰减,可以适应不同的步骤,而无需额外的调整;
  • 由于每个图像有多个标签,作者将这些标签归一化,使之和为1,然后计算softmax loss。在ImageNet21k上进行预训练后,每个模型在ILSVRC2012上使用余弦学习速率衰减对15个时点进行微调。


表7显示了性能比较,其中标记为21k的模型在ImageNet21k上进行预训练,并在ImageNet ILSVRC2012上进行微调。与最近的ViT-L/16(21k)相比,EfficientNetV2L(21k)将top1准确率提高了1.5% (85.3% vs. 86.8%),使用的参数减少了2.5倍,FLOPs减少了3.6倍,同时在训练和推理方面提高了6 - 7倍。

20210626182212995.png

EfficientNetV2的参数效率略好一些,但是用于推理的运行速度要快3倍

image.png


参考资料:

https://blog.csdn.net/qq_37541097/article/details/116933569

https://arxiv.org/abs/2104.00298

相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
目录
相关文章
|
18天前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
|
1月前
|
机器学习/深度学习 Web App开发 人工智能
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》这篇论文提出了一种基于YOLOv3-Tiny的轻量级目标检测模型Micro-YOLO,通过渐进式通道剪枝和轻量级卷积层,显著减少了参数数量和计算成本,同时保持了较高的检测性能。
33 2
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
|
1月前
|
机器学习/深度学习 编解码 算法
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
MobileNetV3是谷歌为移动设备优化的神经网络模型,通过神经架构搜索和新设计计算块提升效率和精度。它引入了h-swish激活函数和高效的分割解码器LR-ASPP,实现了移动端分类、检测和分割的最新SOTA成果。大模型在ImageNet分类上比MobileNetV2更准确,延迟降低20%;小模型准确度提升,延迟相当。
58 1
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
|
1月前
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
47 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
|
6月前
|
机器学习/深度学习 计算机视觉 知识图谱
【YOLOv8改进】MobileViT 更换主干网络: 轻量级、通用且适合移动设备的视觉变压器 (论文笔记+引入代码)
MobileViT是针对移动设备的轻量级视觉Transformer网络,结合CNN的局部特征、Transformer的全局注意力和ViT的表示学习。在ImageNet-1k上,它以600万参数实现78.4%的top-1准确率,超越MobileNetv3和DeiT。MobileViT不仅适用于图像分类,还在目标检测等任务中表现出色,且优化简单,代码已开源。YOLOv8引入了MobileViT块,整合卷积和Transformer结构,提升模型性能。更多详情可参考相关专栏和链接。
|
3月前
|
数据采集 资源调度 JavaScript
Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
【8月更文挑战第4天】Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
58 5
|
4月前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进- Backbone主干】YOLOv8 更换主干网络之 PP-LCNet,轻量级CPU卷积神经网络,降低参数量
YOLO目标检测专栏介绍了PP-LCNet,一种基于MKLDNN加速的轻量级CPU网络,提升了模型在多任务中的性能。PP-LCNet利用H-Swish、大核卷积、SE模块和全局平均池化后的全连接层,实现低延迟下的高准确性。代码和预训练模型可在PaddlePaddle的PaddleClas找到。文章提供了网络结构、核心代码及性能提升的详细信息。更多实战案例和YOLO改进见相关链接。
|
5月前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进-卷积Conv】DualConv( Dual Convolutional):用于轻量级深度神经网络的双卷积核
**摘要:** 我们提出DualConv,一种融合$3\times3$和$1\times1$卷积的轻量级DNN技术,适用于资源有限的系统。它通过组卷积结合两种卷积核,减少计算和参数量,同时增强准确性。在MobileNetV2上,参数减少54%,CIFAR-100精度仅降0.68%。在YOLOv3中,DualConv提升检测速度并增4.4%的PASCAL VOC准确性。论文及代码已开源。
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【YOLOv8改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
YOLO目标检测专栏介绍了SimAM,一种无参数的CNN注意力模块,基于神经科学理论优化能量函数,提升模型表现。SimAM通过计算3D注意力权重增强特征表示,无需额外参数。文章提供论文链接、Pytorch实现代码及详细配置,展示了如何在目标检测任务中应用该模块。
|
6月前
|
机器学习/深度学习 算法 计算机视觉
【CVPR轻量级网络】- 追求更高的FLOPS(FasterNet)
【CVPR轻量级网络】- 追求更高的FLOPS(FasterNet)
282 2

热门文章

最新文章