当前位置: 首页 > 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 也在不断地进化和改进。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 通过WinCC在ARMxy边缘计算网关上实现智能运维
  • python-比较月亮大小/数组下标/人见人爱a+b
  • RK3568笔记六十一:MIPI摄像头应用程序编写
  • 使用 Flask-Limiter 和 Nginx 实现接口访问次数限制
  • 网站建设中常见的网站后台开发语言有哪几种,各自优缺点都是什么?
  • SYN Flood攻击原理,SYN Cookie算法
  • 货车都配一键启动无钥匙进入了用起来真的很方便
  • thinkphp8 从入门到放弃(后面会完善用到哪里写到哪)
  • python标识符和关键字
  • 【病毒分析】新兴TOP2勒索软件!存在中国受害者的BianLian勒索软件解密原理剖析
  • Python精选200Tips:166-170
  • 如何确定SAP 某些凭证或者单号的号码编码范围的 OBJECT 是什么?
  • Selenium与数据库结合:数据爬取与存储的技术实践
  • UE学习篇ContentExample解读------Blueprint_Communication-上
  • Leecode刷题之路从今天开始
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Date型的使用
  • JavaScript设计模式之工厂模式
  • jquery ajax学习笔记
  • maya建模与骨骼动画快速实现人工鱼
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • python学习笔记 - ThreadLocal
  • WePY 在小程序性能调优上做出的探究
  • 阿里云购买磁盘后挂载
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 树莓派 - 使用须知
  • 再次简单明了总结flex布局,一看就懂...
  • 怎么把视频里的音乐提取出来
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​虚拟化系列介绍(十)
  • # dbt source dbt source freshness命令详解
  • #100天计划# 2013年9月29日
  • #ifdef 的技巧用法
  • (10)ATF MMU转换表
  • (13)Hive调优——动态分区导致的小文件问题
  • (C语言)共用体union的用法举例
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (SERIES10)DM逻辑备份还原
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (一)、python程序--模拟电脑鼠走迷宫
  • (转)c++ std::pair 与 std::make
  • (转)nsfocus-绿盟科技笔试题目
  • **PHP二维数组遍历时同时赋值
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET CORE Aws S3 使用
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET 常见的偏门问题
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .NET企业级应用架构设计系列之技术选型