Backbone往事 | AlexNet~EfficientNet,10多个网络演变铺满了炼丹师们的青葱岁月

简介: Backbone往事 | AlexNet~EfficientNet,10多个网络演变铺满了炼丹师们的青葱岁月

卷积神经网络(CNNs)极大地影响了嵌入式视觉和边缘人工智能(AI)领域,使资源受限的设备具有强大的机器学习能力。本文探讨了CNN计算需求与边缘AI中的内存带宽之间的关系。我们深入研究了CNN架构的历史发展,从早期的先驱模型到目前的最新设计,突出了计算密集型操作的进步。我们检查了模型复杂性增加对计算需求和内存访问模式的影响。

本文对CNN中计算需求和内存带宽需求之间的演变权衡进行了比较分析。这一分析有助于设计高效的架构和潜在的硬件加速器,以提高边缘设备上CNN的性能。

Introduction

计算机视觉(CV)中人工智能(AI)模型的计算需求每年都在迅速增长。这导致了专注于计算的硬件加速器,通常是以牺牲内存层次结构等部分为代价的。许多计算密集型CNN应用程序将内存带宽通信作为瓶颈,这些加速器通常会牺牲内存层次结构等部分。DRAM内存加速器的扩展速度相对缓慢,每2年只能扩展2-3倍,与计算能力相比。推理所需的内存通常比参数数量大得多。这主要是因为需要3-4倍的内存来完成中间激活操作,并将数据从/移动到芯片上的本地内存。这些数据传输限制可以在芯片内存和DRAM内存之间,或者在不同处理器之间,其中带宽相对于计算能力明显滞后。

如图1所示,与DRAM/互连带宽相比,计算能力的十年增长达到了1500倍。这些挑战通常被称为“内存墙”问题,它解决了内存容量和带宽的问题。提高DRAM/互连带宽的基本挑战[6]很难克服。这旨在增加计算和带宽能力之间的差距,使在边缘部署最先进的CNN模型更加困难。

解决这个问题需要重新思考CNN模型的设计,而不仅仅是基于FLOPs或计算能力进行简单的扩展。硬件加速器的发展主要集中在峰值计算,但内存限制的瓶颈仍然存在。这导致了许多CNN模型受到带宽限制,导致这些加速器的利用率不高效。

模型优化技术,如剪枝或量化,可以在推理时压缩这些模型。剪枝是通过删除模型中的冗余参数来实现的,对准确性影响最小。使用结构稀疏性可以剪枝高达30%,使用非结构稀疏性可以剪枝80%,对准确性影响很小。这主要取决于模型架构,任何更高的剪枝都会导致显著的准确性降低。相反,量化方法在模型压缩方面已经取得了成功。

量化是指将CNN模型的精度降低到FP16/INT8或甚至低位精度,这会导致内存占用、带宽和延迟显著减少。INT8量化已经取得了成功,并被许多流行的开源框架所采用,如tflite/pytorch。

由于在提高计算和内存带宽方面的基本挑战,我们有必要重新思考CNN模型的架构设计和部署,以应对这些限制。我们可以牺牲计算能力以获得更好的带宽性能,从而使模型在边缘设备上实现高效部署。

Convolutional Neural Networks

卷积神经网络(CNN)在多个计算机和图像处理挑战和数据集上表现出了最先进的性能[1]。这导致CNN在诸如图像分类、超分辨率、分割和物体检测等应用中得到广泛使用。

CNN可以在多个阶段提取特征,这使得它们能够学习计算机视觉/图像处理应用中的数据模式。在使用不同的激活、损失函数、操作、参数优化的许多实验中,都探索了CNN在架构创新中的表现能力提高。CNN及其在计算机视觉/图像处理中的应用,允许人们思考空间、通道、深度和信息的多路径处理的架构理念。CNN的多层结构使其能够提取低级和高级特征。这些特征可以通过迁移学习(TL)转移到通用任务。CNN的创新来自于网络参数、处理单元、连接层和优化策略的不同方面。近年来硬件技术的进步也使得这些模型能够被开发和部署,使其在从云到边缘的各种应用中变得无处不在。

AlexNet

AlexNet由Krizhevsky等人提出,对于图像分类和识别任务,它标志着卷积神经网络(CNN)架构的重大进步。通过采用更深层次的模型和策略参数优化,它超越了传统方法。为了应对硬件限制,该模型在双NVIDIA GTX 580 GPU上进行训练,使其扩展到8层。这一扩展增强了其从不同图像类别中学习的容量,并提高了其适应不同分辨率的灵活性。然而,更深层次的架构带来了过拟合的挑战。具有6000万参数的模型通过像Dropout层和数据增强这样的措施减轻了过拟合。当它在2012年的ImageNet竞赛中获胜时,与最接近的竞争对手相比,错误减少了11%。

Vgg

CNN在图像识别方面的成功推动了架构上的进步。Simonyan等人创造的VGG-16采用了简单而有效的方法[9],使得可以构建更深层次的CNN模型。这标志着深度学习和计算机视觉领域的一个重要进步,引领了非常深层CNN的时代。VGG-16创新性地用3x3小滤波器替换了大的滤波器,展示了将较小的滤波器堆叠起来可以模拟大的滤波器。这种方法降低了计算复杂性,减少了参数和模型大小。该模型的简单性、深度和均匀结构使其成为领先的模型,在2014年的ILSVRC竞赛中获得了第二名。然而,其1.38亿参数的计算复杂性构成了部署在边缘设备上的挑战。

Inception

Inception-V1,也被称为GoogleNet,在2014年的ILSVRC竞赛中凭借高准确度和降低计算复杂度获胜[10]。以其Inception模块命名,该模型采用了分、变、合技术的多尺度卷积变换。这些模块包括了不同大小的滤波器(1x1、3x3和5x4),以捕捉不同的空间信息,有效地解决了不同分辨率下的图像类别多样性问题。

通过在更大核之前使用1x1卷积瓶颈层来保持计算效率,并用全局平均池替换全连接层来降低连接密度,实现了参数的剪枝。通过这样的调整,参数数量从1.38亿减少到400万。这种Inception概念在后续版本如Inception-V2、V3、V4和Inception-ResNet中得到了发展,引入了非对称滤波器来进一步简化计算复杂度。

ResNet

ResNet通过引入残差学习和深度网络训练的有效技术,对CNN架构进行了革命性的转变。它解决了梯度消失问题,使得可以构建更深层次的CNN模型。ResNet的创新使得一种152层的深度CNN在2015年的ILSVRC竞赛中获胜。与AlexNet和VGG相比,ResNet的20x和8x深度分别具有相对较低的计算复杂性。经验发现,50/101/152层的ResNet模型比较浅的模型在复杂视觉任务上如图像识别和定位方面获得了显著的准确性提升,如在COCO数据集上。

ResNeXt作为改进而出现,将其视为一个小网络的集成。利用多种卷积(1x1、3x3、5x5)和附加的1x1瓶颈卷积块,ResNeXt探索了不同路径上的各种拓扑结构。

DenseNet

DenseNet利用输入和输出之间的紧密联系,认为这会导致更深的、更准确的和更高效的CNN模型。通过将每一层以前馈方式连接到下一层,DenseNet通过串联将所有先前的层中的特征图集成在一起。这种策略使得模型能够区分网络中的新增和保留信息。在合理的参数数量下,模型使用相对较少的特征图。关键特性包括参数减少、提高特征重用和处理梯度消失问题。令人印象深刻的是,DenseNet在参数和计算资源更少的情况下,实现了与ResNet相当的表现。

MobileNet

MobileNets利用逐点卷积大幅度减小模型大小和计算需求。针对资源受限的移动设备,该架构通过宽度和分辨率乘数实现灵活性,使用户可以根据需要平衡计算和延迟。基于逐点卷积的MobileNet将参数从29.3M减少到4M,并将FLOPs减少近10倍。这些模型,如MobileNet,实现了更瘦和更深的设计,促进了表示多样性和计算效率。这种设计非常适合基于缓存的系统,并适合于带宽受限的边缘AI应用,因为它们具有紧凑而全面的特点。

SqueezeNet

SqueezeNet以其小巧的尺寸而脱颖而出,尽管参数数量只有AlexNet的1/50,但仍实现了ImageNet上的AlexNet级别准确性。该设计旨在提高训练通信并运行在资源受限的硬件上,从而优化内存利用率。SqueezeNet的紧凑性源于用1x1滤波器替换3x3滤波器,从而实现了9倍的参数减少。通过使用压缩层,3x3卷积中的通道数减少,以保持效率。晚期下采样,也称为延迟下采样,确保了更高的准确性得到保持。

EfficientNet

EfficientNet通过AutoML NAS开发,旨在优化准确性和计算效率。采用类似于MobileNet的移动倒置残差卷积(MBConv),它利用复合缩放在不同的计算预算和模型大小下实现多种网络。

EfficientNet在准确性和效率方面优于现有的CNN,显著减小了模型大小和FLOPs。例如,EfficientNet-B0在参数减少5倍和FLOPs减少10倍的情况下,超过了ResNet-50的性能。这些模型在使用了比ResNet、DenseNet和Inception更少的参数的同时,优于了它们。

表1总结了这些模型在ImageNet分类任务上的准确性。对ImageNet准确性的不同网络架构的概述提供了有益的观察。像AlexNet这样的先驱实现了可嘉的准确性(top-1分类57.2%,top-5分类80.2%),为后续研究奠定了基础。

VGG16和VGG19在top-1准确性上保持了稳定的性能(71.5%)。像Inception V2和GoogleNet这样的Inception模型利用了创新,实现了强大的准确性(高达73.9%)。ResNet系列通过深层结构突破了界限,达到了惊人的78.3% top-1准确性。DenseNet通过特征重用实现了74.9%的准确性。

像SqueezeNet(57.5%)这样的模型优化了紧凑性,而MobileNet V2(71.8%)和ShuffleNet V2(67.9%)则适应了移动设备。EfficientNet实现了效率和准确性(77.1%)。在不同的应用和硬件限制下,平衡准确性、大小和计算仍然至关重要。

3 Conclusion

随着CNN架构变得越来越深和复杂,准确估计其计算需求变得至关重要。用于估计计算能力的两种常用指标是每秒浮点运算次数(FLOPs)和乘加(MAC)操作。

  • FLOPs提供了估计神经网络前向传播所需浮点运算(加法和乘法)总数的估计。对于CNN,这包括卷积、池化、元素级加法和乘法以及全连接层等操作。
  • MAC操作是许多数学计算的基本构建块,特别是在矩阵乘法中。在CNN的背景下,MAC操作发生在卷积和全连接层中。对于卷积和全连接层这样的操作,我们可以通过执行前向传播来估计FLOPs和MAC。

在本节中,我们通过FLOPs估计CNN的计算复杂性,这可以更好地估计这些现代架构中更常见的前向传播操作,如元素级加/乘和平均池化。对不同架构的FLOPs估计取决于网络架构中使用的不相同操作。我们将讨论广泛使用的操作,并讨论如何估计这些操作的FLOPs。由于深层CNN模型的简化结构和扩展,我们往往会在不同的网络架构中看到许多重复的操作。这使得通过分析网络层中使用的不同操作来估计计算复杂性变得容易。

Convolution

卷积操作可以通过方程(1)表示,我们可以根据输入、权重和输出维度来估计FLOPs。

在这里,是输入通道维度,是输出维度,是核函数维度,步长和组。

Fully Connected (FC)

通常,全连接层位于网络的头部。由于它们的广泛连接性,它们通常具有比其他层高几个数量级的计算复杂度。在大多数情况下,特征图大小被减少,以避免网络中的这些瓶颈。

Average Pool

随着网络深度的增加,特征图的空间维度会减小,从而使网络能够捕捉到高空间特征。这是通过使用池化操作来实现的,这些操作将空间维度与固定内核大小和步长固定。平均池化或最大池化操作在CNN中得到了广泛的应用。

在最大池化操作的情况下,计算可以忽略不计,因为它只从内核维度中选择最大值。在本节中,我们将看看如何估计平均池化操作的计算量。

在这里,是输入通道维度,是输出特征图维度,是池化核函数维度,步长。

Elementwise Add/Mul

在ResNet架构展示了消失梯度问题的积极结果后,许多现代网络架构在元素级加法和乘法操作中广泛使用。这使得可以构建更深层次且具有更大表示能力的网络。对于这些操作的计算估计可以通过公式(5)实现,其中是输入特征维度,是输入空间维度。

3 Memory Bandwidth

在将卷积神经网络(CNN)模型部署到硬件平台进行推理时,内存带宽是一个关键的考虑因素。CNN涉及在内存和处理单元之间进行密集的数据移动,这使得内存带宽成为性能的潜在瓶颈。估计内存带宽需求有助于优化模型部署和选择适当的硬件。内存带宽是指数据可以从内存中读取或写入的速度。

在CNN推理的背景下,内存带宽至关重要,因为它涉及需要在内存和处理单元之间移动的数据移动。数据移动的两个主要组成部分包括:(i)权重加载,CNN层使用存储在内存中的学习权重。有效地获取这些权重对于平滑推理至关重要。ii)特征图,在计算过程中生成的中间特征图被存储在内存中供后续层使用。这些图的快速访问会影响推理速度。

边缘AI设备通常在较大计算能力、较小硅片面积和低功耗之间权衡,因此通常会移除内存层次结构,而采用更大的计算能力。这些系统具有专门的I/O控制块,允许指令/数据独立移动。

独立的指令/数据总线允许用户通过双缓冲区来隐藏内存和计算延迟,从而增加总体吞吐量。这些架构在内存和功耗方面具有优势,因此对于资源受限的硬件具有严格的延迟和功耗预算时,它们是一种受欢迎的选择。

为了估计带宽,我们需要将中间激活从本地内存移动到系统内存,并将其从系统内存移动回本地内存。这会给带宽需求带来额外的负担,在估计带宽时,我们需要考虑系统内存到本地内存以及本地内存到系统内存的数据移动,从而导致两次数据移动。这些估计是在模型推理时进行的,通过计算需要移动到本地和系统内存的中间激活和权重来完成。

4 Implementation

为了估计计算和内存带宽需求,我们基于讨论使用了ONNX模型。开放神经网络交换(ONNX)[14]是一个开源的机器独立格式,广泛用于交换神经网络模型。我们推断ONNX模型的中间结果大小,以便估计带宽需求。在进行带宽估计时,我们假设模型优化技术批标准化折叠和层融合,将批标准化和激活函数融合到之前的卷积操作中。

5 Results

在本节中,我们将回顾计算和内存估计的结果。这些估计基于过去几年CNN架构演变的一组CNN模型。对于这个分析,我们使用了AlexNet,VGG-16,InceptionV1/V2,ResNet18-152,DenseNet,MobileNet,SqueezeNet和EfficientNet,如第2节所述。图7显示了网络与计算(FLOPs)之间的关系,FLOPs采用对数尺度以适应各种网络。

所有这些ONNX模型都使用标准输入大小224x224x3,这使我们能够在不同的架构之间进行公平的比较。我们明显看到一个趋势,即FLOPs趋向于小型化,随着网络架构的成熟和不同的架构优化技术的应用。然而,带宽并没有显示出任何一致的趋势,这是因为许多这些架构设计并没有考虑边缘AI应用的带宽限制。

计算与内存带宽(图9)的比较显示,设计用于移动应用的MobileNet网络通常更瘦更深,需要更高的带宽,可能不是边缘AI应用的最佳架构。SqueezeNet在计算与内存带宽权衡方面表现优越,因为它是为了实现较小的尺寸和最小的内存带宽而设计的。

SUMMARY

本文对CNN在边缘AI应用中的计算需求和内存带宽的演变进行了全面的分析。CNN模型的快速演进,以FLOPs/参数作为性能估计的结果,导致了一些次优的模型。特别是硬件带宽限制成为模型性能的瓶颈。

为了设计能够为边缘AI应用提供最优性能,同时受到延迟、带宽和功耗严格限制的架构,必须同时估计计算和带宽。在本文中,我们为研究人员、实践者和硬件设计师提供了宝贵的洞察,以帮助他们更深入地了解在优化CNN以适应边缘部署时所涉及的权衡。

参考

[1]. Evolution of Convolutional Neural Network  (CNN): Compute vs Memory bandwidth for  Edge AI.

相关文章
|
6天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
106 0
|
1天前
|
机器学习/深度学习 编解码 算法
YOLOv5改进 | 主干网络 | 将backbone替换为MobileNetV3【小白必备教程+附完整代码】
本文介绍了将YOLOv5的backbone替换为MobileNetV3以提升目标检测性能的教程。MobileNetV3采用倒残差结构、Squeeze-and-Excitation模块和Hard-Swish激活函数,实现更高性能和更低计算成本。文中提供了详细的代码实现,包括MobileNetV3的关键组件和YOLOv5的配置修改,便于读者实践。此外,还分享了完整代码链接和进一步的进阶策略,适合深度学习初学者和进阶者学习YOLO系列。
|
6天前
|
数据采集 安全 数据处理
疫情期间航空网络演变复杂网络可视化
疫情期间航空网络演变复杂网络可视化
|
6天前
|
机器学习/深度学习 计算机视觉 异构计算
【CVPR2023】Backbone FasterNet:我不允许你不知道世界上还有比ShuffleNetV2还轻量的网络!
【CVPR2023】Backbone FasterNet:我不允许你不知道世界上还有比ShuffleNetV2还轻量的网络!
91 0
【CVPR2023】Backbone FasterNet:我不允许你不知道世界上还有比ShuffleNetV2还轻量的网络!
|
6天前
|
机器学习/深度学习 Go Python
【轻量化网络】实战:更改SqueezeNet网络&MobileNet网络& ShuffleNet网络输出替换yolo的backbone部分
【轻量化网络】实战:更改SqueezeNet网络&MobileNet网络& ShuffleNet网络输出替换yolo的backbone部分
50 0
|
6天前
|
机器学习/深度学习 存储 编解码
YOLOv5改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)
YOLOv5改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)
119 0
|
6天前
|
机器学习/深度学习 存储 计算机视觉
YOLOv5改进 | 2023主干篇 | EfficientViT替换Backbone(高效的视觉变换网络)
YOLOv5改进 | 2023主干篇 | EfficientViT替换Backbone(高效的视觉变换网络)
109 1
|
6天前
|
机器学习/深度学习 存储 编解码
YOLOv8改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)
YOLOv8改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)
105 2
|
4天前
|
运维 网络协议 Linux
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》

热门文章

最新文章