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

EfficientNet,EfficientNetV2

EfficientNet

概括:

在论文中提到,本文提出的EfficientNet-B7在 Imagenet top-1上达到了当年最高准确率84.3%, 与之前准确率最高的GPipe相比,参数数量仅 为其1/8.4,推理速度提升了6.1倍。

下图: 同时探索输入分 辨率,网络的深 度、宽度的影响

02545ddf127a451681b1ebb51b93fbfc.png

图 2:模型缩放,(a) 是一个基础网络示例;(b)-(d) 是传统的缩放方法,只增加一个维度的 
宽度、深度或分辨率,(e)是我们提出的复合缩放方法,可统一缩放所有三个维度

c3d85d4a39dc4037b2d9e5b0ef378329.png

四种缩放比较

 根据以往的经验,增加网络的深度depth能够得到更加丰 富、复杂的特征并且能够很好的应用到其它任务中。但 网络的深度过深会面临梯度消失,训练困难的问题。
 增加网络的width能够获得更高细粒度的特征并且也更容 易训练,但对于width很大而深度较浅的网络往往很难学 习到更深层次的特征。
 增加输入网络的图像分辨率能够潜在得获得更高细粒度 的特征模板,但对于非常高的输入分辨率,准确率的增 益也会减小。并且大分辨率图像会增加计算量。

69286ceaf519414ca2d4d05e47d488f9.png

EfficientNet-B0 参数:

addf441bf092457a94a0025fef0cbe24.png

这里的output_channel,input-channel对应的都是stage第一层MBConv,剩下的输入和输出都等于#channels

MBConv

0e7e51b405de49b5bb98f374b2cf2bec.png

在源码中只有使用shortcut连接的MBConv模块才有Dropout层

0caba7fcf2f842d981fdd8d4b687db3e.png

SE模块如图所示,由一个全局平均池化,两个全连接层组成。第一个全 连接层的节点个数是输入该MBConv特征矩阵channels的1/4,且使用 Swish激活函数。第二个全连接层的节点个数等于Depthwise Conv层输出 的特征矩阵channels,且使用Sigmoid激活函数。

EfficientNet

模块,输入宽度的倍率因子,深度倍率因子,Droupout失活比例(它是从0慢慢增加的),对应最后全连接层前面的dropout层的失活比例

68638ec03afd4015a8b4898c338098d6.png

调整宽度就是调整我们卷积核的个数,输出的特征矩阵channel会发生变化

性能

3d215c2afd8d47e5aa1bf8021504b3b6.png

虽然准确率提高了但是非常占CPU因为他的分辨率很大,输入特征矩阵的高和宽都要相应的增加。

EfficientNetV2

概述:

6b175412de7340a791ea8b9c13ff6e6c.png

 引入Fused-MBConv模块
 引入渐进式学习策略(训练更快)

性能:

89dabdd853a148488ca7f66d00510454.png

在EfficientNetV1中作者关注的是准确率,参数数量以及FLOPs(理论计算量小不代表推理速度快),在EfficientNetV2中作者进一步关注模型的训练速度。

eccd7a073b0b468891d3d8aafe4b7dcf.png

EfficientNetV1中存在的问题:

训练图像的尺寸很大时,训练速度非常慢

在网络浅层中使用Depthwise convolutions速度会很慢

同等的放大每个stage是次优的

训练图像的尺寸很大时,训练速度非常慢。针对这个问题一个比较好想到的办法就是降低训练图像的尺寸,之前也有一些文章这么干过。降低训练图像的尺寸不仅能够加快训练速度,还能使用更大的batch_size.

ca0505754ba14555a41face1adc0968e.png

在网络浅层中使用Depthwise convolutions速度会很慢。无法充分利用现有的一些加速器(虽然理论上计算量很小,但实际使用起来并没有想象中那么快)。故引入Fused-MBConv结构。

37ea8d67d4d94d8eabe2a43d47b3f104.png

同等的放大每个stage是次优的。 在EfficientNetV1中,每个stage的深度和宽度都是同等放大的。但每个stage对网络的训练速度以及参数数量的贡献并不相同,所以直接使用同等缩放的策略并不合理。在这篇文章中,作者采用了非均匀的缩放策略来缩放模型。

050799148f3e4ec096ac9bb9c95d1842.png

EfficientNetV2中做出的贡献:

在之前的一些研究中,主要关注的是准确率以及参数数量(注意,参数数量少并不代表推理速度更快)。但在近些年的研究中,开始关注网络的训练速度以及推理速度。

引入新的网络(EfficientNetV2),该网络在训练速度以及参数数量上都优于先前的一些网络。

提出了改进的渐进学习方法,该方法会根据训练图像的尺寸动态调节正则方法(提升训练速度、准确率)
通过实验与先前的一些网络相比,训练速度提升11倍,参数数量减少为1/6.8(这里主要说的是stage6)

dadfed2d26e04db99397d32a39766f89.png

EfficientNetV2网络框架:

与EfficientNetV1的不同点:

除了使用MBConv模块,还使用Fused-MBConv模块

会使用较小的expansion ratio

偏向使用更小的kernel_size(3x3)

移除了EfficientNetV1中最后一个步距为1的stage(V1中的stage8)

在每个stage中我们要重复我们的operator N(layers)次将模块重复堆叠几次,stride对应第一层,其他均为1,channels对应stage输出特征矩阵的channel。

这里的dropout层仅指Fused-MBConv模块以及MBConv模块中的dropout层,不包括最后全连接前的dropout层。(减少了过拟合,正则化了,所以准确率提高了)

b144bab0e07a467f9173824cdd1349a9.png

回顾:

24a12c8c581f49c7be219817e63e20de.png

EfficientNetV2其他训练参数:

最大训练尺寸是300,但是采用了渐进式,不会只有300,测试采用固定的384*384,dropout对应的是最后全连接前的dropout层.

395d9749b456433986c21a1b2b0e1f14.png

b8293a506d694dc89fef3e3d96f35b30.png注意baseline config并不是V2-S,V2-S在它的基础上生成得到的。

这个只针对有Fused和MB模块的即1-6stage

43b0e2f19dcd4084ada46e776cf0b874.png

d45cbde2726e41b8b089c1f131a3acbe.png

d332fd7eef12491a9f27d3c1b3b76e50.png

Progressive Learning渐进学习策略:

训练早期使用较小的训练尺寸以及较弱的正则方法weak regularization,这样网络能够快速的学习到一些简单的表达能力。接着逐渐提升图像尺寸,同时增强正则方法adding stronger regularization。这里所说的regularization包括Dropout,RandAugment以及Mixup。

c6fcf0dda15944519c2c1aa351e8c254.png

67be799ab06e4f2b97d0d02862121a0b.png

ps:

Deep Networks with Stochastic Depth(随机深度)

6b7c9139e9dc406da84efaeed1001177.png

在具有随机深度的 ResNet 上,pr 的线性衰减说明了 po =1 和 pr =0.5 时的线性衰减。概念上,我们将第一个 ResBlock 的输入视为 Ho,它始终处于活动状态。

效果

提升训练速度小幅提升准确率

在EfficientNetV2中drop_prob: 从0-0.2


http://www.kler.cn/news/365511.html

相关文章:

  • BIO,NIO,直接内存,零拷贝
  • 合合信息亮相PRCV大会,探讨生成式AI时代的内容安全与系统构建加速
  • 大语言模型推理源码解读(基于llama3模型)
  • 日常记录,使用springboot,vue2,easyexcel使实现字段的匹配导入
  • 《Sui区块链:重塑去中心化应用的新星与未来潜力》
  • 设计师的新宠:7款不容错过的界面设计软件
  • 微服务之Sentinel概念介绍及项目实战代码
  • 基于vue框架的的高校消防设施管理系统06y99(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • ChatGPT的模型训练入门级使用教程
  • 首届The VRAnimation Award 震撼启幕!VsoCloud独家赞助此次大赛!
  • CSSfilter实现磨砂效果
  • Java安卓开发——疑难解答篇(第九期)
  • PSINS工具箱函数介绍——inserrplot
  • Java项目实战II基于微信小程序的智慧旅游平台(开发文档+数据库+源码)
  • 手机玩使命召唤21:黑色行动6?GameViewer远程玩使命召唤教程
  • phy初始化
  • 孤岛架构与微服务架构区别
  • 搜维尔科技:视觉映射灵巧手,五指灵巧手解决方案
  • Win/Mac/Android/iOS怎麼刪除代理設置?
  • #渗透测试#安全见闻7 硬件设备的网络安全问题与潜在漏洞分析
  • 【虚幻引擎UE】UE5 音频共振特效制作
  • 《Pyhon入门:07 map与filter函数的常用用法》
  • 命名空间std, using namespace std
  • django离散数学关系图谱答题推荐系统
  • windows msvc2017 x64编译AWS SDK CPP库
  • MacOS 使用ssh2-python报错ImportError: dlopen ... Library not loaded