当前位置: 首页 > news >正文

EfficientNet(2019):基于复合缩放的自动化架构搜索高效网络!

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

EfficientNet:重新思考卷积神经网络的模型扩展

论文下载地址: https://arxiv.org/abs/1905.11946

学习笔记参考了这位大佬:https://blog.csdn.net/qq_37541097/article/details/114434046

1、前言

EfficientNet 由谷歌研究人员在 2019 年提出。它是一种基于 AutoAugment、AutoML 和 MobileNet 的架构,旨在提高模型的效率和性能。EfficientNet 的主要特点是它采用了一种新的缩放方法,即“复合缩放方法”,这种方法同时考虑了模型的深度、宽度和分辨率。

作者主要是用NAS(Neural Architecture Search)技术来搜索网络参数的合理化配置,分别是:输入图像分辨率resolution,网络深度depth以及通道宽度width。此外,NAS技术非常昂贵,没有庞大的算力是搜索不了的。

在以往提出的一些新型网络结构,基本都是通过改变上述3个参数中的一个来提升网络的性能,比如ResNet 将层数从18堆叠到200层,GPipe 将 CNN baseline扩展4倍,而这篇论文是同时探索这三个参数之间的组合对网络性能的影响(可见谷歌有多么有钱有算力了)。

作者提出, EfficientNet-B7 在 ImageNet 上实现了最先进的 84.3% top-1 准确率,同时比现有最好的卷积网络小 8.4 倍,推理速度快 6.1 倍。  EfficientNet 也能很好地进行迁移,并在 CIFAR-100 (91.7%)、Flowers (98.8%) 和其他 3 个迁移学习数据集上实现了最先进的准确度,参数数量也少了一个数量级。EfficientNet-B7 超越了现有最好的 GPipe 精度(2018),并且使用的参数减少了 8.4 倍,推理运行速度提高了 6.1 倍。 与广泛使用的 ResNet-50 (2016) 相比,两者的 FLOPS 相似,EfficientNet-B4 将 top-1 准确率从 76.3% 提高到 83.0% (+6.7%)。 源代码位于https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet。

EfficientNet使用了MobileNetv2的MBConv作为模型主干网络,同时还用了SENet的squeeze and excitationt通道注意力对网络结构进行优化。EfficientNet-B0网络框架如下表所示(B1-B7是在B0的基础上修改Resolution,Channels以及Layers)

网络被分成了9个Stage,Stage1是一个kernel_size=为3x3,stride=2的普通卷积层(包含BN和激活函数Swish),Stage2~Stage8都是在重复堆叠MBConv结构(最后一列的Layers表示该Stage重复MBConv结构多少次),Stage9由一个普通的1x1的卷积层(包含BN和激活函数Swish)一个平均池化层和一个全连接层组成。表格中每个MBConv后会跟一个数字1或6,这里的1或6是倍率因子n,即MBConv中第一个1x1的卷积层会将输入特征矩阵的channels扩充为n倍,其中k3x3或k5x5表示MBConv中Depthwise Conv所采用的卷积核大小。Channels表示通过该Stage后的输出通道数。

2、MBConv结构

MBConv其实就是MobileNetV3中的InvertedResidualBlock(倒置残差结构),但也有些许区别。一个是采用的激活函数不一样(EfficientNet的MBConv中使用的都是Swish激活函数),另一个是在每个MBConv中都加入了SE(Squeeze-and-Excitation)模块。

如上图所示,MBConv结构主要由一个1x1的Conv(升维作用,包含BN和Swish),一个 kernel_size=kxk 的Depthwise Conv卷积(包含BN和Swish),一个SE模块,一个1x1的普通卷积(降维作用,包含BN),一个Droupout层构成。其中第一个升维的1x1卷积层的卷积核个数是输入通道数channel的n倍,n ∈ { 1,6 } 。

当n = 1 时,表示不需要升维,所以Stage2中的MBConv结构没有1x1卷积层。

3、复合缩放

在本文中,作者提出了一种新的复合缩放方法,该方法使用复合系数 φ 以原则性的方式统一缩放网络宽度w、深度d和分辨率r:

depth: d = αφ

width: w = βφ

resolution: r = γφ

s.t. α · β2 · γ2 ≈ 2 α ≥ 1, β ≥ 1, γ ≥ 1

其中α、β、γ是通过小网格搜索确定的常数。 直观上,φ是用户指定的系数,控制有多少资源可用于模型缩放,而α、β、γ分别指定如何将这些额外资源分配给网络宽度、深度和分辨率。

图 2. 模型缩放。  (a) 是基线网络示例;  (b)-(d) 是传统的缩放,仅增加网络宽度、深度或分辨率三者中的一个。  (e) 是作者提出的复合缩放方法,它以固定比率均匀缩放所有三个维度。

例如,如果想要使用 2N 倍的计算资源,那么可以简单地将网络深度增加 αN,宽度增加 βN,图像大小增加 γN,其中 α、β、γ 是由网格搜索在原来的小模型上确定的常数系数。

4、EfficientNet在ImageNet 上的性能结果

5、EfficientNet 发展历程

1. EfficientNet-B0 (2019): 这是最初的 EfficientNet 模型,它通过系统的模型缩放方法,展示了在图像分类任务上的性能提升。

2. EfficientNet-B1 到 B7 (2019): 随着 B0 的成功,研究人员继续扩展 EfficientNet 家族,推出了 B1 到 B7 版本。这些模型通过复合缩放方法,逐渐增加模型的规模,以适应不同的计算预算和性能需求。

3. EfficientNet-EdgeTPU (2019): 针对边缘设备优化的版本,专为在资源受限的设备上运行而设计。

4. EfficientNetV2 (2021): 在 2021 年,谷歌研究人员提出了 EfficientNetV2,这是对原始 EfficientNet 的改进。EfficientNetV2 采用了一种新的缩放方法,并且通过改进的网络结构和训练策略,进一步提高了模型的效率和性能。

5. EfficientNet 其他变体: 随着时间的推移,社区和研究人员还开发了 EfficientNet 的许多其他变体,以适应不同的任务和应用场景,如目标检测、语义分割等。

EfficientNet 系列模型因其在保持高性能的同时显著降低计算成本而受到广泛关注,它们在各种视觉任务中都取得了优异的性能。随着深度学习领域的不断发展,EfficientNet 也在不断地进化和改进。


http://www.mrgr.cn/news/35837.html

相关文章:

  • 如何在vscode 中打开新文件不覆盖上一个窗口
  • python文件命名,不注意容易出错
  • Linux kernel 堆溢出利用方法(二)
  • Vue3 -- 环境变量的配置【项目集成3】
  • 第四节-OSI-网络层
  • 微信小程序——实现二维码扫描功能(含代码)
  • VSCode/VS2019#include头文件时找不到头文件:我的解决方法
  • 大数据平台符合信创(CDH国产化代替)详细方案(企业内部不外传方案)
  • Redisearch 入门指南构建高性能搜索应用
  • 国内可用ChatGPT-4中文镜像网站整理汇总【持续更新】
  • 第300篇文章,第365天
  • 他是内娱最“打脸”前夫:拿全球大奖,成何超琼好友,纵横名流圈
  • 初识 C 语言(一)
  • 《 Spring Boot实战:优雅构建责任链模式投诉处理业务》
  • Java 反射体系
  • 【伺服】Servo入坑学习记录①
  • 图解Transformer就这30页PPT,你们真不看啊
  • 双端搭建个人博客
  • Vue3 tsx文件中如何实现页面跳转
  • sql server 官方学习网站
  • vue3腾讯云实时音视频通话 ui集成方案TUIcallkit
  • 编码器分辨率、精度和重复精度的定义
  • 线性判别分析 (LDA)中目标函数的每个部分的具体说明
  • 【P1320 压缩技术(续集版)】
  • 优化理论及应用精解【11】
  • Prompt输出限制怎么写?用CCoT限制输出长度的推理,大幅提高LLM准确性