PConv : Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks

news2024/12/23 5:12:40

摘要

为了设计快速的神经网络,**许多研究都集中在减少浮点运算(FLOPs)**的数量。然而,我们观察到这种FLOPs的减少并不一定会导致相同程度的延迟减少。这主要是由于浮点运算每秒效率较低的问题所致。为了实现更快的网络,我们重新审视了流行的操作算子,并证明这种低FLOPS主要是由于操作算子(尤其是深度卷积)频繁进行内存访问所致。
因此我们提出了一种新颖的部分卷积(PConv)方法,通过同时削减冗余计算和内存访问,更有效地提取空间特征。在我们先前的PConv的基础上,我们进一步提出了FasterNet,一种新的神经网络家族,在各种视觉任务中能够以更高的运行速度在广泛的设备上取得相当高的精度,而不会妥协于准确性。
代码地址:https://github.com/JierunChen/FasterNet

引言

神经网络在计算机视觉诸如图像分类、检测和分割等任务中经历了快速发展。虽然其令人印象深刻的性能推动了许多应用,但目前的趋势是追求快速的神经网络具有低延迟和高吞吐量,以实现良好的用户体验、即时响应和安全性等方面的需求

如何提高速度?
研究人员和实践者们不在要求更昂贵的计算设备,而是更倾向于设计成本效益高、具有较低计算复杂性的快速神经网络,主要通过浮点运算次数(FLOPs)来衡量。MobileNets [24, 25, 54]、ShuffleNets [46,84]和GhostNet [17]等网络采用深度卷积(DWConv)[55]和/或组卷积(GConv)[31]来提取空间特征,以降低FLOPs。然而,在减少FLOPs的努力中,这些运算符通常会导致内存访问的副作用。MicroNet [33]进一步对网络进行分解和稀疏化,将其FLOPs减少到了极低的水平。
在这里插入图片描述
尽管在FLOPs方面有所改进,但是这种方法在有效的分段计算方面存在问题。此外,上述网络通常伴随着其他数据操作**,如连接、重排和池化**,其运行时间往往对于小模型来说是相当重要的。除了上述纯卷积神经网络之外,还出现了对VITs和MLPs架构进行缩小和加速的兴趣,例如:MobileVits和MobileFormer通过将DWConv与修改后的注意力机制相结合来减少计算复杂度。然而,他们仍然存在DWConv上述问题,并且还需要专门的硬件支持来实现修改后的注意力机制,使用先进但耗时的归一化层和激活层也可能限制他们在设备上的速度。
在这里插入图片描述
这些问题一起引发了一下问题:这些“快速”神经网络真的很快嘛?
在这里插入图片描述
为了回答这个问题,我们研究了延迟和FLOPs之间的关系。其中FLOPS是每秒浮点运算次数,作为衡量有效计算速度的指标。尽管有很多试图减少FLOPs的尝试,但它们很少考虑同时优化FLOPS以实现真正低延迟的问题。我们在Intel CPU上比较了典型神经网络的FLOPS。图2的结果显示,许多现有的神经网络FLOPS较低,它们的FLOPS通常低于流行的ResNet50。由于FLOPS较低,这些“快速”神经网络实际上并不够快。它们在FLOPS的减少不能完全转化为延迟的减少量。之前的研究[46,48]也注意到了FLOPs和延迟之间的差异,但部分地仍未解决,因为它们采用了低FLOPS的DWConv/GConv和各种数据操作。据认为,目前没有更好的选择。
本文旨在通过开发一种简单而快速有效的运算符,以减少FLOPs并保持高FLOPS,来消除这种差异,具体而言,我们重新审视现有的运算符,特别是DWConv,从计算速度的角度来看,我们发现导致低FLOPS问题的主要原因是频繁的内存访问。然后,我们提出了一种新颖的部分卷积(PConv)作为一种竞争性的替代方案,既减少了计算冗余,又减少了内存访问的次数。
从本质上讲,与常规的Conv相比,PConv的FLOPs较低,但比DWConv/GConv要高,换句话说,PConv更好的利用了设备上的计算能力,经过实验证明,PConv在提取空间特征方面也非常有效。
我们进一步介绍了FasterNet,它主要基于我们的PConv构件而成,作为一种在各种设备上运行非常快速的新型网络家族,特别是我的
FasterNet在分类、检测和分割任务中实现了最先进的性能,同时具有更低的延迟和更高的吞吐量。

本文的贡献如下:

  • 引入了简单而快速有效的操作符,名为PConv ,他有很大潜力替代现有的首选操作符DWConv
  • FasterNet 在各种设备上都能有良好的运行性能和普遍速度

相关工作

我们简要回顾了之前的快速和高效神经网络上的工作,并将这项工作和他们区分开来。

CNN

计算机视觉领域的主流架构,特别是在实际部署中**,快速性和准确性同等重要,**尽管已经进行了许多研究以实现更高的效率,但他们背后的基本原理更多或多或少是进行低秩近似。具体而言,群组卷积[31]和深度可分离卷积[55](包括深度卷积和逐点卷积)可能是最受欢迎的方法。他们已广泛应用于移动/边缘导向网络,如MobileNets [24, 25, 54],ShuffleNets [46, 84],GhostNet [17],EfficientNets [61, 62],TinyNet [18],Xception [8],CondenseNet [27, 78],TVConv [4],MnasNet [60]和FBNet [74]。尽管它们利用滤波器中的冗余来减少参数和FLOP的数量,但在增加网络宽度以弥补准确性下降时,会导致内存访问增加。相比之下,我们考虑特征图中的冗余,并提出了部分卷积来同时减少FLOP和内存访问。

ViT,MLP和变体。

自Dosovitskiy等人(2020)[12]将transformers [69]的应用范围从机器翻译 [69]或预测 [73]扩展到计算机视觉领域以来,对ViT的研究越来越受关注。
许多后续的研究致力于在训练设置和模型设计方面改进 ViT [58, 65, 66]。一个值得注意的趋势是通过减少注意力运算的复杂性 [1,29,45,63,68],将卷积引入 ViTs [6,10,57],或者同时进行这两种操作 [3,34,49,52],追求更好的准确性和延迟之间的折中关系。此外,其他研究 [5,35,64] 提议用简单的基于MLP的操作符替代注意力,但它们往往演变成类似于CNN的形式 [39]。在本文中,我们主要关注卷积操作,特别是 DWConv,原因如下:首先,注意力、卷积之间的优势并不清楚或可争议 [42,71]。其次,基于注意力的机制通常比卷积运算的效率慢,因此对当前的工业界来说不太有利 [26,48]。最后,DWConv 仍然是许多混合模型中的一个流行选择,因此值得进行仔细的研究。

PConv和FasterNet的设计

在本节中,我们首先重新审视DWConv并分析其频繁内存访问的问题。然后,我们引入PConv作为解决这个问题的一种有竞争力的替代算子。之后,我们介绍FasterNet并解释它的详细信息,包括设计考虑。
DWConv是Conv的一个流行变体,已被广泛采用作为许多神经网络的重要组件。对于输入I∈Rc×h×w,DWConv应用c个过滤器W∈Rk×k来计算输出O∈Rc×h×w。如图1(b)所示,每个过滤器在一个输入通道上滑动,并对一个输出通道做出贡献。这种深度计算使得DWConv的FLOPs(浮点运算数)仅为h×w×k2×c,相比于常规的Conv的h×w×k2×c2要低。虽然在减少FLOPs上是有效的,但是,DWConv通常紧跟着一个pointwise convolution(PWConv)时,不能简单地替换成一个常规的Conv,因为这样会导致严重的精度下降。

偏执卷积作为基本操作

特征图在不同通道之间具有很高的相似性,这种冗余性在其他许多研究中也有所涉及[17,82],但其中很少有研究能够以简单而有效的方式充分利用它。具体而言,我们提出了一种称为PConv的简单卷积方法,可以同时降低冗余和内存访问。它仅在一部分输入通道上应用常规卷积进行空间特征提取,并保持其他通道不变,为了实现连贯或规则的内存访问,我们将第一个或最后连续的CP个通道作为整个特征图的代表进行计算。通过使用典型的部分比率r = cp / 4,PConv的浮点运算量仅为常规卷积的16分之一。另外,PConv的内存访问量较小。
在这里插入图片描述

PConv followed by PWConv

为了充分高效地利用所有通道信息,我们在PConv之后进一步添加一个点卷积,他们在输入特征图上的有效感受野形状类似于一个T形卷积,相较于均匀处理一个补丁的常规卷积,更加注重中心位置。为了证明这个T型感受野的合理性,我们首先通过计算位置的逐位置Frobenius范数来评估每个位置的重要性。我们假设,如果一个位置的Frobenius范数比其他位置大,它往往更重要。对于一个常规的卷积
在这里插入图片描述
我们认为具有最大Frobenius范数的位置是显著位置。然后,我们共同检查预训练的ResNet18中的每个滤波器,找出他们的显著位置,并绘制出显著位置的直方图。中心位置的权重大于其周围的邻居。这与T型计算的特性一致。
在这里插入图片描述
在这里插入图片描述

FasterNet作为通用骨干网络

考虑到我们创新的PConv和现成的PWConv作为主要构件算子,我们进一步提出了FasterNet,这是一族运行速度快且在许多视觉任务中高效的新型神经网络。

架构概述

我们的目标是尽可能简化架构,没有花里胡哨的特点,以便使其总体上对硬件友好。我们在下图中呈现了总体架构。他有四个阶段,每个阶段都由一层嵌入层(一个带有步长为4的常规Conv4X4)或一个合并层(一个带有步长2的常规Conv2X2)来进行空间下采样和通道数量的扩展,每个阶段都有一组FasterNet块,我们观察到,在最后两个阶段中的块消耗的内存访问较少,并且往往就有更高的FLOPS,这是表1验证过的,因此&

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

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

相关文章

docker高级(DockerFile解析)

1、构建三步骤 编写Dockerfile文件 docker build命令构建镜像 docker run依镜像运行容器实例 2、DockerFile构建过程解析 Dockerfile内容基础知识 1:每条保留字指令都必须为大写字母且后面要跟随至少一个参数 2:指令按照从上到下,顺序执行…

异地访问Oracle数据库的解决方案:利用内网穿透实现PL/SQL远程连接的建议与步骤

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle ​ 小月糖糖主页 在强者的眼中,没有最…

SolidWorks软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 SolidWorks是一款由达索系统(Dassault Systmes)开发的三维计算机辅助设计(CAD)软件,被广泛应用于机械、电子、建筑和航空航天等领域。它以易学易用、强大的功能和良好的…

Michael.W基于Foundry精读Openzeppelin第32期——SignatureChecker.sol

Michael.W基于Foundry精读Openzeppelin第32期——SignatureChecker.sol 0. 版本0.1 SignatureChecker.sol 1. 目标合约2. 代码精读2.1 isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) 0. 版本 [openzeppelin]:v4.8.3,[for…

华为OD机试 - 云短信平台优惠活动 - 回溯(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

教师如何有效地发放开学通知并收集签名回执?

老师在即将开学时,希望能够向家长发送开学通知,并确认家长已经收到通知。接下来教给各位老师如何完成这个需求的步骤: 好消息!博主给大家争取到的易查分福利,只需要在注册时输入邀请码:xmt66,就…

从AD迁移至AAD,看体外诊断领军企业如何用网络准入方案提升内网安全基线

摘要: 某医用电子跨国集团中国分支机构在由AD向AzureAD Global迁移时,创新使用宁盾网络准入,串联起上海、北京、无锡等国内多个职场与海外总部,实现平滑、稳定、全程无感知的无密码认证入网体验,并通过合规基线检查,确…

CAD的清除命令如何使用?CAD的清除命令使用方法

CAD广泛应用于土木建筑、装饰装潢、城市规划、园林设计、电子电路、机械设计、服装鞋帽、航空航天、轻工化工等诸多领域,因此CAD越来越成为一项基本技能,很多用人岗位都会要求会使用CAD,为帮助更多人快速学会CAD,而且CAD的使用本身…

taobao.trade.fullinfo.get(获取单笔交易的详细信息)天猫国际站店铺订单接口方法

淘宝交易API taobao.trade.fullinfo.get(获取单笔交易的详细信息) 获取单笔交易的详细信息 1. 只有单笔订单的情况下Trade数据结构中才包含商品相关的信息 2. 获取到的Order中的payment字段在单笔子订单时包含物流费用,多笔子订单时不包含物…

STM32--SPI通信与W25Q64(2)

STM32–SPI通信与W25Q64(1) 文章目录 SPI外设特征 SPI框图传输模式主模式全双工连续传输 非连续传输硬件SPI读写W25Q64 SPI外设 STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担。 特…

leetcode 496. 下一个更大元素 I

2023.8.28 这题提供暴力解法和单调栈法两种方法。 暴力解&#xff1a; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {vector<int> ans(nums1.size(),-1);for(int i0; i<nums1.size…

『FastGithub』一款.Net开源的稳定可靠Github加速神器,轻松解决GitHub访问难题

&#x1f4e3;读完这篇文章里你能收获到 如何使用FastGithub解决Github无法访问问题了解FastGithub的工作原理 文章目录 一、前言二、项目介绍三、访问加速原理四、FastGithub安装1. 项目下载2. 解压双击运行3. 运行效果4. GitHub访问效果 一、前言 作为开发者&#xff0c;会…

springMVC之拦截器

文章目录 前言一、拦截器的配置二、拦截器的三个抽象方法三、多个拦截器的执行顺序总结 前言 拦截器 一、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置&…

数字化智能工厂信息化系统集成整合规划建设方案[150页word]

导读&#xff1a;原文《150页6万字数字化智能工厂信息化系统集成整合规划建设方案》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 数字化智能工厂建设方案 设备智…

大数据学习:Hive常用函数

Hive常用函数 1. Hive的参数传递 1.1 Hive命令行 查看hive命令的参数 [hadoopnode03 ~]$ hive -help语法结构: hive [-hiveconf xy]* [<-i filename>]* [<-f filename>|<-e query-string>][-S] 说明&#xff1a; -i 从文件初始化HQL。-e从命令行执行指定…

LVDS 2-port RGB 转 MIPI参数计算

有一些显示器是只给了屏幕的参数&#xff0c;屏幕输入的参数不一定&#xff0c;可能是输出的MIPI 给显示器&#xff0c;显示内部转换后是LVDS RGB&#xff0c;因此需要转换。 屏幕参数 转换为MIPI参数

当我焦虑时,我从CSDN的博主身上学到了什么?

文章目录 前言一、思考为什么会产生差距1.1 懒惰1.2 没有合理的规划学习时间 二、我该如何做&#xff1f;2.1 认真生活规律作息2.2 做事就是0和1 结语 前言 我们在学习的过程当中总会遇到一些比我们自己优秀的人&#xff0c;不论你是在更好的985或211院校学习&#xff0c;还是…

计算系统丢失CONCRT140.dll文件的四种解决方法(亲测可用)

今天&#xff0c;我将为大家分享一个关于计算机技术的问题——计算系统丢失CONCRT140.dll文件的四种解决方法。希望我的分享能够帮助到大家&#xff0c;解决你们在日常生活和工作中遇到的困扰。 CONCRT140.dll是Windows操作系统中的一个动态链接库文件&#xff0c;它包含了一些…

迅为RK3588开发板Android12 设置系统默认不锁屏

修改 frameworks/base/packages/SettingsProvider/res/values/defaults.xml 文件&#xff0c;修改为如下 所示&#xff1a; - <bool name"def_lockscreen_disabled">false</bool> <bool name"def_lockscreen_disabled">true</bool&…

Linux————LNMT搭建

一、原理 搭建一个基于Linux系统的Web服务器&#xff0c;使用Nginx作为反向代理服务器&#xff0c;Tomcat作为应用服务器&#xff0c;MySQL作为数据库服务器。 Linux操作系统 基于Linux的操作系统 Nginx Nginx是一款高性能的Web服务器和反向代理服务器&#xff0…