经典网络解读——Efficientnet

news2024/11/20 14:16:24

论文:EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019.5)
作者:Mingxing Tan, Quoc V. Le
链接:https://arxiv.org/abs/1905.11946
代码:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet

Efficientnet升级版本EfficientnetV2解读

最近项目上用到,由于之前模型采用IResnet50做识别,在rv1126上量化成int16时间上不满足要求,量化成int8推理造成的精度下降又太大,不能接受,遂想到替换更高效的网络,网上一搜就看到下面这张图,很直观。
在这里插入图片描述
efficientnet-B0比ResNet-50的精度更高且flops更少,且一直扩充到efficientnet-B3都是如此,类比IResnet50,估计efficientnet也比它快;由于efficientnet是分类网络,但我们是识别任务,需要提取feature,所以需做修改,下面是量化成int16后的具体推理时间,与我的猜想基本一致。

网络结构转int16的rknn模型大小(M)input_sizerv1126上用NPU推理时间(ms)
iResnet-50112x11270
efficientnet-b0(仿照iresnet改造,卷积最后一层,直接flatten)25.8112x11217
efficientnet-b0(直接将最后类别数改成num_features数量,精度不行)9.3112x11213
efficientnet-b1(仿照iresnet改造,卷积最后一层,直接flatten)33112x11225
efficientnet-b2(仿照iresnet改造,卷积最后一层,直接flatten)39.7112x11228
efficientnet-b3(仿照iresnet改造,卷积最后一层,直接flatten)47.3112x11235

虽然之前经常用这个网络,但是由于没涉及到量化,很少留意到这些细节,所以仔细解读一下efficientnet这个经典网络。


文章目录

  • 1、算法概述
  • 2、Efficientnet细节
    • 2.1 单个维度模型缩放
    • 2.2 混合缩放
    • 2.3 Efficientnet结构
  • 3、实验
    • 3.1 Scaling up MobileNets and ResNets
    • 3.2 Efficientnet在ImageNet上分类精度
    • 3.3 Efficientnet在CPU上的延迟
    • 3.4 Efficientnet的迁移学习能力


1、算法概述

Efficientnet是谷歌针对于模型缩放相关的探索提出的分类网络;在这之前的卷积神经网络(ConvNets)通常是在固定受限的资源下开发的,如果有更多的资源可用,则可以根据扩展以获得更好的准确性。该篇论文通过仔细平衡网络深度,宽度和分辨率之间的关系来获得更好的性能,并且在MobileNet和ResNet上验证了其有效性。论文作者通过神经架构搜索获得一个baseline模型(Efficientnet-B0),然后通过论文所提的模型缩放技术获得一系列缩放模型。这一系列模型在ImageNet分类数据集上的精度和参数量都比现如今最先进的卷积网络有了不小的提升。如下图,左图是精度和模型大小,右图是精度和flops。
在这里插入图片描述


2、Efficientnet细节

在这之前也有模型缩放相关的研究,例如将网络放大可以得到更好的性能,比如Resnet系列,通常来说Resnet200比Resnet18得到的分类精度好得多;但是之前的模型缩放通常只缩放三个维度(深度、宽度和图像大小)中的一个。虽然可以任意缩放两个或三个维度,但任意缩放需要繁琐的手动调优,并且仍然经常产生次优的精度和效率。虽然更大的网络能带来更高的精度,但是我们时常受到硬件内存限制,所以需要探索更高效的网络结构;如今“高效”网络结构有:SqueezeNets、MobileNets、ShuffleNets以及通过神经网络搜索得到的NASNet,但这些高效网络设计技巧目前尚不清楚如何推广应用到大规模网络。
本论文通过实验验证得到结论:平衡模型缩放过程中的深度、宽度和分辨率是非常重要的,而且只是简单的通过模型缩放公式就可以得到它们之间的关系。关于网络宽度缩放、深度缩放、和输入图像分辨率缩放及综合缩放的示例图如下图所示:
在这里插入图片描述

2.1 单个维度模型缩放

网络深度用d表示,直觉上更深的卷积神经网络可以捕获更丰富、更复杂的特征,并能很好地泛化新任务。然而,由于梯度的消失,更深的网络也更难以训练;虽然现在的跳转连接(skip connection)和batch normalization技术一定程度上缓和了梯度消失问题,但是随着深度增加,精度提升的收益还是会递减,如下图(中);
网络宽度用w表示,缩放网络宽度通常用于小尺度网络结构,通道数“更宽”的网络往往能够捕获更细粒度的特征,并且更容易训练;极宽但较浅的网络往往难以捕捉更高级的特征。而且当网络变得更宽即w更大时,准确性很快会饱和,如下图(左)所示;
网络输入分辨率用r表示,网络接收更高的分辨率,可以捕获更细粒度的特征。但随着分辨率不断提高,其精度收益率也会递减最终达到饱和。如下图(右)所示;
在这里插入图片描述

2.2 混合缩放

作者通过实验得出:对于更高分辨率的图像,我们应该增加网络深度,这样有利用在更大图像上用更大的感知域捕获更多像素的特征。相应的也应该同时增加网络宽度,以便于在高分辨率图像中捕获更多像素的更细粒度的特征。如下图所示:
在这里插入图片描述
所以我们需要协调和平衡不同的缩放维度,而不是传统的单一维度缩放。
作者通过以下公式设置三个维度的限制,利用网络结构搜索搜出最佳的d,w,r匹配。
在这里插入图片描述

2.3 Efficientnet结构

和设计MnasNet一样,作者也是通过网络搜索得到最佳的基线模型efficientnet-B0,与它不同的是设置的搜索最优目标不一样,efficientnet-B0是以最佳flops为目标,而前者是最小推理速度。搜出来的efficientnet-B0结构与MnasNet结构相似,主要组成部分为mobile inverted bottleneck MBConv,其结构如下表所示:
在这里插入图片描述
得到efficientnet-B0后,应用本文所提的模型缩放技术,分以下两步得到B1至B7。
在这里插入图片描述
论文中说,也可以直接通过网络搜索得到更大规模的网络结构,但这样做太耗费资源,作者提出的规则模型缩放技术,可以通过先搜索小规模网络结构,然后通过模型缩放得到一系列更大规模的网络结构,这样做解决了这个难题。


3、实验

3.1 Scaling up MobileNets and ResNets

作者首先在已有的分类算法网络结构上验证提出的模型缩放方法,评估其在ImageNet上的Top-1及Top-5准确率,实验结果如下:
在这里插入图片描述
从实验结果可以看出,相对于Baseline模型,单纯扩充w、d或者r,模型的Top-1准确率是有一定提升的,但相对于采用本论文所提的组合扩充方式,组合扩充方式还是有精度方面的优势。

3.2 Efficientnet在ImageNet上分类精度

在这里插入图片描述

3.3 Efficientnet在CPU上的延迟

在这里插入图片描述

3.4 Efficientnet的迁移学习能力

在这里插入图片描述

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

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

相关文章

自动控制原理学习--平衡小车的控制算法(一)

基于单片机STM32的两轮平衡小车,单片机的各种IO、定时器、通讯等等一大堆要理解、编程,但这些都是琐碎的文档知识,需要花时间看各个模块的接口文档进而编程,需要良好的编程逻辑思维,去获取相关的传感模块信息&#xff…

Instal IIS on Windows Server 2022 Datacenter

和以往版本一样,没有什么不同,So easy! WinR - ServerManager.exe 打开服务器管理器,点击【添加角色和功能】,选择自己想要的角色和功能。 一、开始之前:帮助说明,点击【下一步】;…

鸿蒙原生应用元服务开发-Web加载本地页面

将本地页面文件放在应用的rawfile目录下,开发者可以在Web组件创建的时候指定默认加载的本地页面 ,并且加载完成后可通过调用loadUrl()接口变更当前Web组件的页面。 在下面的示例中展示加载本地页面文件的方法: 将资源文件放置在应用的resou…

Matlab生成txt文件导入到Vivado仿真

Matlab处理数据并将其写入txt文件 %% Txt Generate pre_RS_datadec2bin(simDataIn,8); %将数据转化为8bit的二进制 fidfopen("F:\FPGA\Xilinx_vivado\project\dvbstestbench\dbvs\matlab\pre_RS_data.txt","wt"); for i1:n*nMessages %数据…

网盘—下载文件

本文主要讲解网盘文件操作的下载文件部分,具体步骤如下: 目录 1、实施步骤 2、代码实现 2.1、添加下载文件的协议 2.2、添加下载文件函数 2.3、添加信号槽 2.4、实现槽函数 2.5、设置download状态 2.6、添加定义 2.7、服务器接收数据 2.8、添…

【docker】Docker开启远程访问

将构建的镜像自动上传到服务器。 需要开放 Docker 的端口,让我们在本地能连接上服务器的 Docker,这样,才能上传构建的镜像给 Docker。 开启远程访问 首先在服务器打开 Docker 的服务文件 vim /usr/lib/systemd/system/docker.service修改…

ubuntu下安装配置python3.11

方案1 添加仓库: $ sudo add-apt-repository ppa:deadsnakes/ppa $ sudo apt update $ sudo apt install python3.11然后查看有多少个python版本已经安装了: ls -l /usr/bin/python*python2.7,python 3.8 ,python 3.11. 然后,设置系统默认…

贪吃蛇小游戏(c语言)

1.效果展示 屏幕录制 2024-04-28 205129 2.基本功能 • 贪吃蛇地图绘制 • 蛇吃食物的功能 (上、下、左、右方键控制蛇的动作) • 蛇撞墙死亡 • 蛇撞自身死亡 • 计算得分 • 蛇身加速、减速 • 暂停游戏 3.技术要点 C语言函数、枚举、结构…

VPot-Free一款功能强大的文字转语音工具 v2306

01 软件介绍 VPot-FREE是一款功能强大的免费文字转语音工具,为用户提供了便捷的语音合成功能。无论是想将文字转化为语音进行朗读,还是将文章转为语音保存,VPot-FREE都能满足你的需求。 多种语音风格可供选择,包括男声、女声以及…

C语言-嵌入式-STM32:FreeRTOS说明和详解

Free即免费的,RTOS的全称是Real time operating system,中文就是实时操作系统。 注意:RTOS不是指某一个确定的系统,而是指一类操作系统。比如:uc/OS,FreeRTOS,RTX,RT-Thread 等这些都…

如何利用快解析远程访问NAS、FTP、Web服务

什么是内网、外网? 所谓内网就是内部建立的局域网络或办公网络。一家公司或一个家庭有多台计算机,他们利用不同网络布局将这一台或多台计算机或其它设备连接起来构成一个局部的办公或者资源共享网络,我们就称它为内部网络,也叫内…

【MySQL精炼宝库】深度解析索引 | 事务

目录 一、索引 1.1 索引(index)概念: 1.2 索引的作用: 1.3 索引的缺点: 1.4 索引的使用场景: 1.5 索引的使用: 1.6 面试题:索引底层的数据结构(核心内容): 1.7 索引列查询(主…

FSNotes for Mac v6.7.1中文激活:轻量级笔记管理工具

FSNotes for Mac,一款专为Mac用户打造的轻量级笔记管理工具,让您的笔记管理变得简单而高效。 FSNotes for Mac v6.7.1中文激活版下载 它采用Markdown文件格式,让您轻松创建和编辑富文本笔记,无需担心格式问题。同时,FS…

手写一个uart协议——rs232(未完)

先了解一下关于uart和rs232的基础知识 文章目录 一、RS232的回环测试1.1模块整体架构1.2 rx模块设计1.2.1 波形设计1.2.2代码实现与tb1.2.4 仿真 1.3 tx模块设计1.3.1波形设计 本篇内容: 一、RS232的回环测试 上位机由串口助手通过 rx 线往 FPGA 发 8 比特数据&a…

复杂度(3)

目录 1.二分查找的时间复杂度 2.斐波那契数列及其优化 3.空间复杂度 1.二分查找的时间复杂度 我们熟知的二分查找绝对是一种很厉害的算法,因为这个算法每进行一次都会砍掉一半的数据,相当于是指数级增长,假设我们刚开始的时候数据的个数是…

【对比学习】【论文翻译】Contrastive Multiview Coding

Contrastive Multiview Coding ECCV 2020 0.论文摘要和作者信息 摘要 人类通过许多感官通道观察世界,例如,由左眼观察的长波长光通道,或由右耳听到的高频振动通道。每个视图都是嘈杂和不完整的,但重要的因素,如物理…

【linux-1-Ubuntu常用命令-vim编辑器-Vscode链接ubuntu远程开发】

目录 1. 安装虚拟机Vmare和在虚拟机上安装Ubuntu系统:2. 常用的Ubuntu常识和常用命令2.1 文件系统结构2.2 常用命令2.3 vim编辑器 3. Ubuntu能联网但是ping不通电脑:4. Windows上安装VScode链接ubuntu系统,进行远程开发: 1. 安装虚…

Meltdown 以及Linux KPTI技术简介

文章目录 前言一、Introduction二、 Background2.1 Out-of-order execution2.2 Address Spaces2.3 Cache Attacks 三、A Toy Example四、Building Blocks of the Attack4.1 Executing Transient Instructions4.2 Building a Covert Channel 五、Meltdown5.1 Attack Description…

如何使用Spring Boot导出数据到Excel表格

在开发应用程序时,经常会遇到将数据导出到Excel表格的需求。Spring Boot提供了简单而有效的方法来实现这个功能。本文将介绍如何使用Spring Boot和Apache POI库将数据导出到Excel表格,并提供一个示例代码来演示该过程。 1. 准备工作 首先,确…

ARM学习(27)链接库依赖学习(二)dlopen failed:library xxxx.so

笔者继续学习一下链接的依赖库。 1、起因 Android下面需要需要一个日志解码库,所以笔者就编译了一个parse.so来进行解码, 编译器:Clang,基于llvm后端的编译器平台:交叉编译,linux -> aarch64 linux An…