FatesrNet:Run, Don‘t Walk: Chasing Higher FLOPS for Faster Neural Networks

2023-11-04

        概述:为了实现更快的网络,作者重新回顾了FLOPs的运算符,并证明了如此低的FLOPS主要是由于运算符的频繁内存访问,尤其是深度卷积。因此,作者提出了一种新的partial convolution(PConv),通过同时减少冗余计算内存访问可以更有效地提取空间特征,又基于PConv进一步提出FasterNet框架。


1.背景

        计算机视觉任务追求具有低延迟和高吞吐量的快速神经网络,研究人员设计具有成本效益的快速神经网络,降低计算复杂度,主要以浮点运算(FLOPs)的数量来衡量。

2.问题

        CNN:

        MobileNet、ShuffleNet和GhostNet等利用深度卷积(DWConv)和/或组卷积(GConv)来提取空间特征。然而,在减少FLOPs的过程中,算子经常会受到内存访问增加的副作用的影响。MicroNet进一步分解和稀疏网络,将其FLOPs推至极低水平。尽管这种方法在FLOPs方面有所改进,但其碎片计算效率很低。此外,上述网络通常伴随着额外的数据操作,如级联、Shuffle和池化,这些操作的运行时间对于小型模型来说往往很重要。

        VIT:

        除了上述纯卷积神经网络(CNNs)之外,人们对使视觉Transformer(ViTs)和多层感知器(MLP)架构更小更快也越来越感兴趣。例如,MobileViT和MobileFormer通过将DWConv与改进的注意力机制相结合,降低了计算复杂性。然而,它们仍然受到DWConv的上述问题的困扰,并且还需要修改的注意力机制的专用硬件支持。使用先进但耗时的标准化和激活层也可能限制其在设备上的速度。

        这些“快速”的神经网络真的很快吗?

        作者检查了延迟和FLOPs之间的关系:许多现有神经网络的FLOPS较低,其FLOPS通常低于流行的ResNet50。由于FLOPS如此之低,这些“快速”的神经网络实际上不够快。它们的FLOPs减少不能转化为延迟的确切减少量。

3方法

        作者重新审视了现有的操作符,特别是DWConv的计算速度——FLOPS。作者发现导致低FLOPS问题的主要原因是频繁的内存访问。然后,作者提出了PConv作为一种竞争性替代方案,它减少了计算冗余以及内存访问的数量。

4.步骤

PConv:

原理:

         PConv:它利用了特征图中的冗余,并系统地仅在一部分输入通道上应用规则卷积(Conv),而不影响其余通道。本质上,PConv的FLOPs低于常规Conv,而FLOPs高于DWConv/GConv

        常规卷积:

        DW卷积:

        减少了FLOPS,但精度严重下降,

工作原理

         它只需在输入通道的一部分上应用常规Conv进行空间特征提取,并保持其余通道不变。对于连续或规则的内存访问,将第一个或最后一个连续的通道cp视为整个特征图的代表进行计算。在不丧失一般性的情况下认为输入和输出特征图具有相同数量的通道。因此,PConv的FLOPs仅为:

PConv之后是PWConv      

        为了充分有效地利用来自所有通道的信息,进一步将逐点卷积(PWConv)附加到PConv。它们在输入特征图上的有效感受野看起来像一个T形Conv,与均匀处理补丁的常规Conv相比,它更专注于中心位置。

 FasterNet:

  

        每个层次级前面都有一个嵌入层(步长为4的常规4×4卷积)或一个合并层(步长为2的常规2×2卷积),用于空间下采样和通道数量扩展

        每个FasterNet块有一个PConv层,后跟2个PWConv(或Conv 1×1)层。它们一起显示为倒置残差块,其中中间层具有扩展的通道数量,并且放置了Shorcut以重用输入特征。(PConv+2个1*1的Conv或2个PWConv+BN+Relu激活函数)

        除了上述算子,标准化激活层对于高性能神经网络也是不可或缺的。然而,许多先前的工作在整个网络中过度使用这些层,这可能会限制特征多样性,从而损害性能。它还可以降低整体计算速度。相比之下,只将它们放在每个中间PWConv之后,以保持特征多样性并实现较低的延迟。

  1.         此外,使用批次归一化(BN)代替其他替代方法。BN的优点是,它可以合并到其相邻的Conv层中,以便更快地进行推断,同时与其他层一样有效。对于激活层,根据经验选择了GELU用于较小的FasterNet变体,而ReLU用于较大的FasterNet变体,同时考虑了运行时间和有效性。最后三个层,即全局平均池化、卷积1×1和全连接层,一起用于特征转换和分类。

知识点

        1.FLOPS(S大写):floating-point operations per second的缩写,意指每秒浮点运算次数。用来衡量硬件的性能。

        2.FLOPs(S小写):floating-point of operations的缩写,是浮点运算次数,可以用来衡量算法/模型复杂度

        3.GFLOPS:Giga Floating-point Operations Per Second,即每秒10亿次的浮点运算数,常作为GPU性能参数但不一定代表GPU的实际表现,因为还要考虑具体如何拆分多边形和像素、以及纹理填充,理论上该数值越高越好。1GFlops = 1,000MFlops

        4.Embedding(嵌入层,文中用于空间下采样):在目标检测中,通常使用卷积神经网络(CNN)作为特征提取器。嵌入层可以在CNN的顶部添加,将CNN的输出特征图(通常是一个高维张量)转换为一个向量。它的作用是将高维离散输入转换为低维连续向量表示。具体来说,嵌入层将每个输入元素表示为一个向量,这个向量的维度通常要比输入元素的个数小得多。这样做的好处是可以减少网络中的参数量,提高训练效率,并且可以让网络更好地表达输入元素之间的相似性关系。

        5.Merging(合并层,文中用于通道数量扩展):主要作用是将多个输入层或多个中间层的数据合并在一起。这个过程通常是通过对输入层或中间层的数据进行某种形式的操作来实现的,例如连接、叠加、求和等。

        6.常见激活函数优缺点

        6.1 sigmoid函数

        优点:输出值在0到1之间,可以将输出解释为概率。

        缺点:当输入值趋近于正无穷或负无穷时,梯度值会趋近于0,导致梯度消失问题,使得深度神经网络的训练变得困难。

        6.2 tanh函数

        优点:它的输出值在-1到1之间,比sigmoid函数的输出范围更大,可以提供更多的非线性   

        缺点:与sigmoid函数相同,当输入值趋近于正无穷或负无穷时,梯度消失问题仍然存在

        6.3 ReLU函数

        优点:它可以有效地避免梯度消失问题,加速神经网络的训练

        缺点:它在输入为负数时,梯度为0,会使得一部分神经元永久失活,称为“ReLU死亡问题”。

        6.4 Leaky ReLU函数:Leaky ReLU函数是对ReLU函数的改进

        优点:可以避免ReLU死亡问题,同时仍然保持了ReLU函数的优点

        缺点:它在输入为负数时,仍然存在梯度消失问题

        6.5 ELU函数:ELU函数是另一种改进ReLU函数的激活函数

        优点:它可以避免ReLU死亡问题和梯度消失问题,同时仍然保持了ReLU函数的优点。

        缺点:它比其他激活函数计算量大,训练时间长。

        6.6 Gelu函数

        优点:激活函数的值域在整个实数范围内,避免了sigmoid函数在极端值处的梯度消失问题; 激活函数的导数在大部分区间内都为非零值,避免了ReLU函数在负数区间内的梯度为0问题;Gelu函数在接近0时的导数接近1,能够保留更多的信息。

         缺点:Gelu函数的计算比ReLU函数复杂,计算速度较慢;Gelu函数在负数区间内仍然存在梯度消失问题。 

        6.7 Silu函数

        优点:计算速度比ReLU函数更快,因为它只涉及一个sigmoid函数的计算;Silu函数在接近0时的导数接近1,能够保留更多的信息。

        Silu的缺点:Silu函数在接近正无穷和负无穷时的导数接近0,可能导致梯度消失问题;Silu函数的值域在(0,1)之间,可能会导致信息的损失。

        7.


参考:

CVPR2023最新Backbone |FasterNet远超ShuffleNet、MobileNet、MobileViT等模型

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FatesrNet:Run, Don‘t Walk: Chasing Higher FLOPS for Faster Neural Networks 的相关文章

  • 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Wi-Fi模块SSL连接MQTT)

    5 STM32物联网开发WIFI ESP8266 GPRS Air202 系统方案安全篇 配置MQTT的SSL证书 验证安全通信 首先确定自己的固件打开了SSL 升级篇里面的固件我打开了SSL 如果自己下载的是这个固件SSL就打开了 如果自
  • 快速定位java系统线上问题

    原文 https blog csdn net GitChat article details 79019454 一 前言 Java 语言是当前互联网应用最为广泛的语言 作为一名 Java 程序猿 当业务相对比较稳定之后平常工作除了 codi
  • 设计模式简述

    定义 设计模式是为解决某个问题的一套解决方案 优点 1 为某个问题提供了最优解决方案 2 A君以设计模式的思路写的代码 懂设计模式的B君 就很容易读懂A君的代码 设计模式类型 1 创建型模式 创建对象的同时隐藏创建逻辑的方式 2 结构型模式
  • Python爬取、存储、分析、可视化豆瓣电影Top250

    Python爬取 存储 分析 可视化豆瓣电影Top250 网站链接 https movie douban com top250 文章目录 前言 一 python爬取目标数据 并写入csv文件 二 pymysql数据存储 三 pandas数据

随机推荐

  • SSM框架用Ajax增删改查一个页面(简单易懂)

    目录 一 最终页面效果 二 Ajax回顾 2 1 ajax是什么 2 2 ajax有什么特点 2 3 具体编程内容 三 Jquery实现Ajax 3 1 导入Jquery库 3 2 释放Jquery静态资源 3 3 属性display no
  • 日常总结 -- verdaccio搭建npm私有仓库

    verdaccio搭建npm私有仓库 参考 verdaccio https github com verdaccio verdaccio readme 搭建NPM私有库 https www jianshu com p 1d0e85d1423
  • 【华为OD机试】求最多可以派出多少支团队【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 用数组代表每个人的能力 一个比赛活动要求参赛团队的最低能力值为N 每个团队可以由1人或2人组成 且1个人只能参加1个团队 请计算出最多可以派出多少支符合要求的团队 输
  • 学习日志-《掘金/知乎-前端智能化》笔记

    前言 本文记录了学习掘金 知乎 前端智能化过程中的所有笔记 2021前端智能化的总结和展望 https juejin cn post 6966404264633565215 智能化效果图 流程图 前端智能化看 低代码 无代码 https j
  • docker search 镜像超时 使用dig解决

    安装dig yum install bind utils docker search mysql 时候报错 root dockermaster docker search mysqlError response from daemon Ge
  • 机器翻译——英译中

    1 前言 本文使用飞桨 PaddlePaddle 训练机器翻译模型 实现将英文翻译成中文的神经网络翻译机 本人全部文章请参见 博客文章导航目录 本文归属于 自然语言处理系列 本系列实践代码请参见 我的GitHub 前文 BERT与ERNIE
  • 全球网络加速的五个方法

    一 全球网络加速的定义 全球网络加速是指通过使用各种技术和服务来提高全球范围内的网络连接速度和性能 随着全球化的发展 跨国企业 云服务提供商和全球用户之间的网络通信变得越来越重要 全球网络加速旨在克服跨国网络连接中的延迟 带宽限制和数据包丢
  • 什么是测试开发?现阶段找工作能否抢救一下?

    前言 最近开始投简历 除了开发 唉看到了测试开发这一职位 那这是个什么岗位的 像我这种开发干不过别人 但又会一点的应届生能否抢救一下 1 我对测试开发的首先印象 听名字就是测试跟开发的结合嘛 估计是测试的基础上 进行一些开发任务 提高测试的
  • 关于学习JPA出现的问题(1)——不允许有匹配 “[xX][mM][lL]“ 的处理指令目标(Unable to locate persistence units)

    这个错误比较简单 而且触发的条件很多 主要就是你的XML文件错了 导致读取不到文件信息 这个时候第一个要检查的是文件的格式 然后再检查标签 一般都能排查出来
  • 搭建国产化统信UOS操作系统虚拟机

    统信UOS作为国产化操作系统的生力军 近年来异军突起 我使用过银河麒麟 飞腾麒麟 最后还是推荐给大家这款UOS操作系统 一 下载镜像 首先需要登录统信操作系统的官方网站https www chinauos com resource down
  • 跨平台发布文章测试

    跨平台发布文章测试 跨平台发布文章测试 跨平台发布文章测试 跨平台发布文章测试 跨平台发布文章测试 本文由博客群发一文多发等运营工具平台 OpenWrite 发布
  • WPF 事件转命令

    WPF中不是所有的控件都有Command属性的 如果窗体我需要在ViewModel中处理Loaded事件命令 或者其他事件的命令时 很难都过绑定Command完成 必须要注册依赖属性或事件等 使用System Windows Interac
  • 时序预测

    时序预测 MATLAB实现PSO BiLSTM 粒子群优化双向长短期记忆神经网络 时间序列预测 目录 时序预测 MATLAB实现PSO BiLSTM 粒子群优化双向长短期记忆神经网络 时间序列预测 预测效果 基本介绍 模型介绍 PSO模型
  • div和section有什么区别?在加一个article标签

    1 div在html早期版本就支持了 section和article是html5提出的两个语义化标签 如果只是针对一个块内容做样式化 三者并无区别 2 作为语义化标签 section 应用的典型场景有文章的章节 标签对话框中的标签页 或者论
  • JavaSE、JavaEE和JavaME与Java的关系是什么?

    JavaSE JavaEE和JavaME都是建立在Java语言基础之上的不同分支 它们共同构成了Java平台的不同方面和应用领域 1 JavaSE Java Platform Standard Edition 是Java平台的基础 它提供了
  • 【分布鲁棒和多目标非负矩阵分解】基于DR-NMF的对NMF问题噪声模型的识别鲁棒性研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章讲解 1 概述 文献来源 摘要 非负矩阵分解
  • 多益网络的四个笔试题(数学)

    题目1 有1 60 60个数字 然后对应把它们随机分成6组 每组10个数 问数字1和数字2分到同组的概率 我觉得答案是 9 59 同学不信 所以回来又仔细思考了一下 因为笔试的时候是很随意地想的 笔试时候的想法 数字1先选一个组 剩下59个
  • Time Series Data Augmentation for Deep Learning: A Survey

    本文属于数据增强系列综述的文章 针对 Time Series Data Augmentation for Deep Learning A Survey 的翻译 Time Series Data Augmentation for Deep L
  • zipkin以mysql的方式存储

    环境 centos java8 mysql zipkin 这篇教程用于搭建已mysql作为存储的zipkin 还不知道zipkin是什么的小伙伴请略过 zipkin学习传送门http blog csdn net liaokailin art
  • FatesrNet:Run, Don‘t Walk: Chasing Higher FLOPS for Faster Neural Networks

    概述 为了实现更快的网络 作者重新回顾了FLOPs的运算符 并证明了如此低的FLOPS主要是由于运算符的频繁内存访问 尤其是深度卷积 因此 作者提出了一种新的partial convolution PConv 通过同时减少冗余计算和内存访问