【EfficientNetV2】《EfficientNetV2: Smaller Models and Faster Training》

在这里插入图片描述
google

ICML-2021


文章目录

  • 1 Background and Motivation
  • 2 Related Work
  • 3 Advantages / Contributions
  • 4 Method
    • 4. 1 Understanding Training Efficiency
    • 4.2 Training-Aware NAS and Scaling
    • 4.3 Progressive learning
  • 5 Experiments
    • 5.1 Datasets and Metrics
    • 5.2 ImageNet ILSVRC2012 and ImageNet21k
    • 5.3 Transfer Learning Datasets
    • 5.4 Ablation Studies
      • Comparison to EfficientNet
    • Progressive Learning for Different Networks
    • Importance of Adaptive Regularization
  • 6 Conclusion(own)


1 Background and Motivation

efficientNet v1(【EfficientNet】《EfficientNet:Rethinking Model Scaling for Convolutional Neural Networks》) 的基础上升级, faster training speed and better parameter efficiency

作者观察到

  • training with very large image sizes is slow(Progressive training,input image size 随着训练深入而逐渐变大)
  • depthwise convolutions are slow in early layers(提出Fused-MBConv,NAS 出来 early layer 都用的是没有 dw conv 的 Fused-MBConv)
  • equally scaling up every stage is sub-optimal

2 Related Work

  • Training and parameter efficiency
  • Progressive training
  • Neural architecture search (NAS)

3 Advantages / Contributions

提出 EfficentNet v2,用 training-aware neural architecture search and scaling 搜索出来,采用 progressive learning(image size 和 regularization) 进一步提升速度精度,公开数据集上更快更好

在这里插入图片描述

4 Method

EfficientNet
在这里插入图片描述

4. 1 Understanding Training Efficiency

(1)Training with very large image sizes is slow

在这里插入图片描述

(2)Depthwise convolutions are slow in early layers but effective in later stages

在这里插入图片描述
DW conv 虽然参数量和计算量更小,但是 cannot fully utilize modern accelerators

在这里插入图片描述

Fuse-MBConv 高效,精度高,但是参数量和 FLOPS 会变高

MB 和 Fuse-MB 两者在网络中如何搭配更高效呢? 作者: leverage neural architecture search to automatically search for the best combination.

(3)Equally scaling up every stage is sub-optimal

网络深度或者宽度缩放时所有 stage 一样,不是最优的

EfficientNet-S -> EfficientNet-M -> EfficientNet-L

4.2 Training-Aware NAS and Scaling

在 v1 的基础上做的 NAS,搜出来的结构如下
在这里插入图片描述

EfficientNetV2-S,scale up 到 M 和 L 时,gradually add more layers to later stages (e.g., stage 5 and 6)

Training Speed Comparison:
在这里插入图片描述
effNet(reprod) 用了 about 30% smaller image size

4.3 Progressive learning

in the early training epochs, we train the network with small image size and weak regularization (e.g., dropout and data augmentation), then we gradually increase image size and add stronger regularization.

创新点在于不仅 progressive image size,还有 regularization

在这里插入图片描述
输入尺寸越大,数据增强的程度相应的增高,效果会更好

progress learning 的策略如下

在这里插入图片描述
不仅 size 随着训练过程的深入在增大,regularization 强度也在递增,算法流程如下

在这里插入图片描述

  • S i S_i Si image size,最初 S 0 S_0 S0,最终 S e S_e Se

  • ϕ i k \phi_i^k ϕik 正则化强度,regularization magnitude,参考(【Randaugment】《Randaugment:Practical automated data augmentation with a reduced search space》 和 【AutoAgument for OD】《Learning Data Augmentation Strategies for Object Detection》),作者用的正则化技术有 Dropout、RandAugment、Mixup,最低强度 ϕ 0 k \phi_0^k ϕ0k 最高强度 ϕ e k \phi_e^k ϕek

  • M M M,训练过程被划分成了 M M M 个 stage,training process into four stages with about 87 epochs per stage,注意区别于主干的 stage

  • N N N,traning steps,可以理解为 epoch 或者每次 batch-size 的 iteration

progress learning 采用了最简单的线性增长形式,更细节的参数配置范围如下表

在这里插入图片描述

5 Experiments

5.1 Datasets and Metrics

  • ImageNet ILSVRC2012:about 1.28M training images and 50,000 validation images with 1000 classes
  • ImageNet21k:13M training images with 21,841 classes
  • CIFAR-10
  • CIFAR-100
  • Flowers
  • Cars

在这里插入图片描述

5.2 ImageNet ILSVRC2012 and ImageNet21k

结果展示
在这里插入图片描述
又快又好

在这里插入图片描述

不过这个图看起来,速度优势并没有很明显,精度倒是优势很明显

用了 ImageNet21k 后作者的实验心得

  • Scaling up data size is more effective than simply scaling up model size in high-accuracy regime,这里的 data size 指的是数量级的规模,不是输入到网络中的图片 size,
  • Pretraining on ImageNet21k could be quite efficient,作者的方法可以加速训练和推理过程,这个时候上更大的数据集时间可能和之前不用 progressive learning 差不多,但效果进一步提升

5.3 Transfer Learning Datasets

在这里插入图片描述
CIFAR-10 还好,CIFAR-100 和 cars 领先的比较明显

5.4 Ablation Studies

Comparison to EfficientNet

在这里插入图片描述
training speed (reduced from 139h to 54h) and accuracy (improved from 84.7% to 85.0%) are better than the original paper

EfficientNet-v2-S 的基础上,scaling down 一些小模型,看看性能
在这里插入图片描述
主打的是一个快

Progressive Learning for Different Networks

在这里插入图片描述
提速明显

Importance of Adaptive Regularization

在这里插入图片描述
这个是作者的创新点之一

在这里插入图片描述

6 Conclusion(own)

  • Unlike transformers, whose weights (e.g., position embedding) may depend on input length,
  • progressive learning, does it work in object detection?
  • depth-wise 丢到后面的stage用
  • data size vs model size

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/743822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣654 最大二叉树 Java版本

文章目录 题目描述解题思路代码 题目描述 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上…

备战蓝桥杯Day25 - 二叉搜索树查询和删除操作

一、查询 递归查询 寻找的值比根节点大&#xff0c;遍历右子树&#xff1b; 寻找的值比根节点小&#xff0c;遍历左子树。 def qurey(self, node, val):if not node: # 没有节点&#xff0c;返回空return Noneif node.data < val:return self.qurey(node.rchild, val)el…

【Python】新手入门学习:详细介绍单一职责原则(SRP)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍单一职责原则&#xff08;SRP&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyT…

力扣106 从中序与后续遍历序列构造二叉树

文章目录 题目描述解题思路代码 题目描述 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], …

海豚调度系列之:认识海豚调度

海豚调度系列之&#xff1a;认识海豚调度 一、海豚调度二、特性三、建议配置四、名次解释 一、海豚调度 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景&#xff0c;提供了一个可视化操作任务、工作流和全生命周期数据处理过…

使用 opencv 识别答题卡,生成填涂答案

一般答题卡设计时都在试卷4个角预留4个一样大小的黑块 仅能识别选择题判断题之类的填涂答题的题目&#xff0c;不能识别填空题应用题等其它主观题 使用 opencv 识别试卷图片中所有黑块&#xff0c;再根据黑块大小获取四个角的位置&#xff0c;根据四个黑块位置校正图像 将图…

openGauss安装与使用

一、opengauss 数据库安装&#xff1a; 1.1 实验环境&#xff1a;Virtual BOX 6.1.26centos 7.8openGauss1.1.0 1.2 虚拟机 Virtual BOX 安装&#xff1a; 在 virtualbox.org/wiki/Downloads 上下载 WINDOS hosts 版本的安装包并安装&#xff08;全部下一步默认安装&#xf…

Ubuntu下txt中文显示乱码问题常规解决方法

在正常使用ubuntu 文档时&#xff0c;突然发现txt文档出现&#xff0c;如下情况 无法正常观看&#xff0c;后来搜了一下发现是gedit 没有对应打开文件的编码格式&#xff0c;Ubuntu用的是utf-8,所以打开会有乱码&#xff01;初始没有GBK和GB2312&#xff0c;把GBK和GB2312添加…

vi 显示行号 显示色彩

首先进入当前用户目录下的.vimrc文件/.virc文件&#xff08;具体要看操作系统&#xff09; vi ~/.virc 显示行号 set number 显示色彩 highlight LineNr guifgred 效果

API 管理调研

当前大部分团队内 API 管理都是依赖 Postman&#xff0c;postman最大的问题是共享问题&#xff0c;如果我要使用另外一个人已经调试好的 API 非常麻烦。因此&#xff0c;能实现协作的 API 管理将极大提升效率。 Yapi https://github.com/YMFE/yapi https://hellosean1025.gi…

Python中requests、aiohttp、httpx性能对比

在Python中&#xff0c;有许多用于发送HTTP请求的库&#xff0c;其中最受欢迎的是requests、aiohttp和httpx。这三个库的性能和功能各不相同&#xff0c;因此在选择使用哪个库时&#xff0c;需要考虑到自己的需求和应用场景。 首先&#xff0c;让我们来了解一下这三个库的基本…

怎样才能选择一套好的ai智能语音系统呢?人工智能电话机器人系统各版本搭建

如今竞争激烈的市场环境下&#xff0c;企业需要不断创新&#xff0c;提高效率&#xff0c;以获得更多的市场份额和利润。而智能电销机器人&#xff0c;作为一种新型的营销工具&#xff0c;正逐渐成为越来越多企业的首选工具&#xff0c;接下来我们看看怎样才能选择一套好的ai智…

生态碳汇涡度相关监测与通量数据分析

朱老师&#xff08;副教授&#xff09;&#xff1a;来自国内重点高校&#xff0c;长期从事涡度通量观测与分析研究&#xff0c;发表SCI论文多篇&#xff0c;主持国家与地方科研项目多个&#xff0c;在生态环境数据处理与分析中具有丰富的实践项目经验。 本文基于MATLAB语言、以…

滑动窗口最大值(leetcode hot100)

给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xff1a;nums [1,3,-1,-3,5,3,6,7], k 3 输…

2024年初中生古诗文大会备考:多选题真题和独家解析(持续更新)

今天我们继续来做初中古诗文大会的一道难题&#xff1a;多选题&#xff0c;让大家了解初中生古诗文大会的考察内容和形式&#xff0c;并且提供了我独家的题目解析和答案&#xff0c;供初中的同学们学习和参考。 Tips&#xff1a;古诗文大会的许多题目都来自于中考、高考&#…

使用Barrier共享鼠标键盘,通过macos控制ubuntu系统

之前文章写过如何使用barrrier通过windows系统控制ubuntu系统&#xff0c;该文章将详细介绍如何使用barrier通过macos系统控制ubuntu系统 一、macOS安装barrier macOS版本barrier链接 1、双击点开安装包 2、将安装包里的barrier拷贝到macOS的达达->应用程序中 3、在达达…

(黑马出品_高级篇_03)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_高级篇_03&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术——多级缓存 今日目标1.什么是多级缓存2.JVM进程缓存2.1.导入案例2.1.1.安装MySQL2.1.1.1.准备目录2.1.1.2.运行命令2.1.1.3.修改配置 2.1.1.4.…

【Docker】PostgreSQL 容器化部署

PostgreSQL标准软件基于Bitnami PostgreSQL 构建。当前版本为16.1.0 你可以通过轻云UC部署工具直接安装部署&#xff0c;也可以手动按如下文档操作&#xff0c;该项目已经全面开源&#xff0c;可以从如下环境获取 配置文件地址: https://gitee.com/qingplus/qingcloud-platfor…

边框检测在 Python 中的应用

在游戏开发中&#xff0c;我们经常会回使用到边框检测。我们知道&#xff0c;边框检测是计算机视觉中常用的技术&#xff0c;用于检测图像中的边界和轮廓。在Python中&#xff0c;可以使用OpenCV库来实现边框检测。具体是怎么实现的&#xff1f;以下是一个简单的示例代码&#…

深入探索Java中的MarkWord与锁优化机制——无锁、偏向锁、自旋锁、重量级锁

引言 在Java并发编程领域&#xff0c;有效管理对共享资源的访问显得尤为关键。为了保障线程安全&#xff0c;Java虚拟机&#xff08;JVM&#xff09;引入了一系列精妙的锁机制&#xff0c;这其中的核心概念就是Java对象头中的MarkWord。本文将详尽解析MarkWord的作用&#xff…