【CVPR轻量级网络】- 追求更高的FLOPS(FasterNet)

简介: 【CVPR轻量级网络】- 追求更高的FLOPS(FasterNet)

题目:

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

摘要

 提出了一种新的部分卷积(PConv),通过同时减少冗余计算和内存访问,可以更有效地提取空间特征。FLOPs 的减少并不一定会导致类似水平的延迟减少。在ImageNet1k上,小型FasterNet-T0在GPU、CPU和ARM处理器上分别比MobileViT XXS快3.1倍、3.1倍和2.5倍,同时准确率高2.9%。我们的大型FasterNet-L实现了令人印象深刻的83.5%的顶级精度,与新兴的Swin-B不相上下,同时在GPU上的推理吞吐量(吞吐量大,就是指单位时间内成功地传送数据的数量大。)提高了49%,并在CPU上节省了42%的计算时间。

1 介绍

 导致低FLOPS问题的主要原因是频繁的内存访问。提出了一种新的部分卷积(PConv)作为一种竞争性的替代方案,它减少了计算冗余和内存访问次数。PConv比常规Conv具有更低的FLOPs,而比DWConv/GConv具有更高的FLOPs,但是PConv可以更好地利用设备上的计算能力。

  MobileViT和MobileFormer通过将DWConv与改进的注意力机制相结合来降低计算复杂度。但是DWConv会受到内存访问增加的副作用。MicroNet 进一步分解和稀疏网络,将其 FLOPs 推到极低的水平。 尽管它在 FLOPs 上有所改进,但这种方法经历了低效的碎片计算。

  • 1)指出了实现更高FLOPS的重要性,而不仅仅是为了更快的神经网络而简单地减少FLOPs。
  • 2)引入了一种简单但快速有效的PConv,它很有可能取代现有的首选DWConv。
  • 3)推出了FasterNet,它在GPU、CPU和ARM处理器等各种设备上运行良好且普遍快速。
CNN中FLOPs的计算

   FLOPS: 注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。(越大越好)

   FLOPs: 注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。(越小越好)

2 相关工作

 CNN,群卷积和深度可分离卷积(由深度卷积和逐点卷积组成)可能是最流行的卷积。它们已被广泛用于面向移动/边缘的网络,如MobileNets、ShuffleNets、GhostNet、EfficientNets、TinyNet、Xception、CondenseNet、TVConv、MnasNet和FBNet。

3 PConv和FasterNet的设计

 虽然DWConv在减少FLOPs方面是有效的,但它通常后面跟着逐点卷积(PWConv),不能简单地用来取代常规的Conv,因为它会导致严重的精度下降。因此,在实践中,DWConv的信道数c(或网络宽度)增加到c0(c0>c),以补偿精度下降,例如,对于反相残差块中的DWConv,宽度扩展了六倍。然而,这会导致更高的内存访问,这可能会导致不可忽略的延迟并降低整体计算速度,尤其是对于I/O绑定设备。

3.1 偏卷积作为基本算子(PConv)

它只需在输入通道的一部分上应用正则Conv进行空间特征提取,而不影响其余通道。对于连续或规则的内存访问,我们认为第一个或最后一个连续的cp通道是整个特征图的代表,我们认为输入和输出特征图具有相同数量的通道。PConv的FLOPs仅为常规Conv的1/16

PConv具有较小的存储器访问量:

3.2 PConv后接PWConv

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

为了证明这个T形感受野的合理性,首先通过计算位置上的Frobenius范数来评估每个位置的重要性。我们假设,如果一个位置的Frobenius范数比其他位置大,那么它往往更重要。我们认为一个显著位置是具有最大Frobenius范数的位置。然后,我们在预先训练的ResNet18中共同检查每个滤波器,找出它们的显著位置,并绘制显著位置的直方图。在滤波器中,中心位置是最频繁的显著位置。换句话说,中心位置的重量更大。

T形Conv的FLOPs可以计算为

3.3 FasterNet作为通用骨干

 它有四个层次级,每个层次级之前都有一个嵌入层(一个步长为4的正则Conv 4×4)或一个合并层(步长为2的正则Conv 2×2),用于空间下采样和信道数扩展。每个阶段都有一堆FasterNet块,最后两个阶段的块消耗更少的内存访问,并且往往具有更高的FLOPS,如表1中的经验验证。因此,我们放置了更多的FasterNet块,并相应地将更多的计算分配给最后两个阶段。每个FasterNet块都有一个PConv层,后面是两个PWConv(或Conv 1×1)层。它们一起显示为反向残差块,其中中间层具有扩展数量的通道,并放置快捷连接以重用输入特征。归一化层和激活层对于高性能神经网络也是必不可少的,只将它们放在每个中间PWConv之后,以保持特征多样性并实现更低的延迟。BN的好处是可以将其合并到相邻的Conv层中,以实现更快的推理。选择GELU用于较小的FasterNet变体,ReLU用于较大的FasterNet变体。最后三层,即全局平均池、Conv 1×1和全连接层,一起用于特征转换和分类。

 为了在不同的计算预算下为广泛的应用提供服务,我们提供了FasterNet的小型、小型、中型和大型变体,分别称为FasterNetT0/1/2、FasterNet-S、FasterNet-M和FasterNet-L。它们共享相似的架构,但在深度和宽度上有所不同。

4实验

Latency on GPU:模型推理和后处理的时间,时间越小,执行速度越快

消融实验:

1、对于部分比率r,我们默认为所有fastnet变体将其设置为 1 /4实现了更高的准确性、更高的吞吐量和更低的延迟。

2、对于归一化,选择BN而不是LN。因为BN可以合并到其相邻的卷积层中,从而更快地进行推断。

3、对于激活函数,GELU比ReLU更适合fastnet - t0 /T1模型。然而,fastnet-t2 /S/M/L则相反。

PConv + PWConv的测试损失最小,这意味着它们在特征变换中可以更好地逼近一个规则的Conv

为了进一步评估fastnet的泛化能力,在具有挑战性的COCO数据集上进行了对象检测和实例分割的实验。使用fastnet作为骨干,并配备流行的掩码R-CNN检测器































相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
5月前
|
机器学习/深度学习 计算机视觉 异构计算
【YOLOv8改进 - Backbone主干】FasterNet:基于PConv(部分卷积)的神经网络,提升精度与速度,降低参数量。
【YOLOv8改进 - Backbone主干】FasterNet:基于PConv(部分卷积)的神经网络,提升精度与速度,降低参数量。
|
1月前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
|
2月前
|
机器学习/深度学习 Web App开发 人工智能
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》这篇论文提出了一种基于YOLOv3-Tiny的轻量级目标检测模型Micro-YOLO,通过渐进式通道剪枝和轻量级卷积层,显著减少了参数数量和计算成本,同时保持了较高的检测性能。
41 2
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
|
2月前
|
机器学习/深度学习 编解码 算法
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
MobileNetV3是谷歌为移动设备优化的神经网络模型,通过神经架构搜索和新设计计算块提升效率和精度。它引入了h-swish激活函数和高效的分割解码器LR-ASPP,实现了移动端分类、检测和分割的最新SOTA成果。大模型在ImageNet分类上比MobileNetV2更准确,延迟降低20%;小模型准确度提升,延迟相当。
72 1
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
|
7月前
|
机器学习/深度学习 计算机视觉 知识图谱
【YOLOv8改进】MobileViT 更换主干网络: 轻量级、通用且适合移动设备的视觉变压器 (论文笔记+引入代码)
MobileViT是针对移动设备的轻量级视觉Transformer网络,结合CNN的局部特征、Transformer的全局注意力和ViT的表示学习。在ImageNet-1k上,它以600万参数实现78.4%的top-1准确率,超越MobileNetv3和DeiT。MobileViT不仅适用于图像分类,还在目标检测等任务中表现出色,且优化简单,代码已开源。YOLOv8引入了MobileViT块,整合卷积和Transformer结构,提升模型性能。更多详情可参考相关专栏和链接。
|
2月前
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
54 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
|
4月前
|
数据采集 资源调度 JavaScript
Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
【8月更文挑战第4天】Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
63 5
|
5月前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进- Backbone主干】YOLOv8 更换主干网络之 PP-LCNet,轻量级CPU卷积神经网络,降低参数量
YOLO目标检测专栏介绍了PP-LCNet,一种基于MKLDNN加速的轻量级CPU网络,提升了模型在多任务中的性能。PP-LCNet利用H-Swish、大核卷积、SE模块和全局平均池化后的全连接层,实现低延迟下的高准确性。代码和预训练模型可在PaddlePaddle的PaddleClas找到。文章提供了网络结构、核心代码及性能提升的详细信息。更多实战案例和YOLO改进见相关链接。
|
6月前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLOv8改进-卷积Conv】DualConv( Dual Convolutional):用于轻量级深度神经网络的双卷积核
**摘要:** 我们提出DualConv,一种融合$3\times3$和$1\times1$卷积的轻量级DNN技术,适用于资源有限的系统。它通过组卷积结合两种卷积核,减少计算和参数量,同时增强准确性。在MobileNetV2上,参数减少54%,CIFAR-100精度仅降0.68%。在YOLOv3中,DualConv提升检测速度并增4.4%的PASCAL VOC准确性。论文及代码已开源。
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【YOLOv8改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
YOLO目标检测专栏介绍了SimAM,一种无参数的CNN注意力模块,基于神经科学理论优化能量函数,提升模型表现。SimAM通过计算3D注意力权重增强特征表示,无需额外参数。文章提供论文链接、Pytorch实现代码及详细配置,展示了如何在目标检测任务中应用该模块。