【读点论文】VanillaNet: the Power of Minimalism in Deep Learning,在浅层网络中加入更丰富的非线性元素加上提出的网络训练技巧得到了一些惊讶的效果

VanillaNet: the Power of Minimalism in Deep Learning

Abstract

  • 基础模型的核心理念是“多而不同”,计算机视觉和自然语言处理领域的惊人成功就是例证。然而,优化的挑战和transformer模型固有的复杂性要求范式向简单性转变。在这项研究中,我们介绍了VanillaNet,一个包含优雅设计的神经网络架构。通过避免高深度、残差方式和复杂的操作(如自我关注),vanillanet令人耳目一新的简洁却非常强大。每一层都被精心制作得紧凑而直接,非线性激活函数在训练后被修剪以恢复原始结构。

  • VanillaNet克服了固有复杂性的挑战,使其成为资源受限环境的理想选择。其易于理解和高度简化的架构为高效部署提供了新的可能性。大量的实验表明,VanillaNet提供的性能与著名的深度神经网络和视觉transformer相当,展示了极简主义在深度学习中的力量。VanillaNet的这一富有远见的旅程具有重新定义景观和挑战基础模型现状的巨大潜力,为优雅有效的模型设计开辟了一条新的道路。

  • 预训练的模型和代码可在https://github.com/huawei-noah/VanillaNet和https://gitee.com/mindspore/models/tree/master/research/cv/ vanillanet上获得。

  • 论文地址:[2305.12972] VanillaNet: the Power of Minimalism in Deep Learning (arxiv.org)

  • 来自华为诺亚、悉尼大学的研究者们提出了一种极简的神经网络模型 VanillaNet,以极简主义的设计为理念,网络中仅仅包含最简单的卷积计算,去掉了残差和注意力模块,在计算机视觉中的各种任务上都取得了不俗的效果。13 层的 VanillaNet 模型在 ImageNet 上就可以达到 83% 的精度,挑战了深度学习模型中复杂设计的必要性。

  • 一些不一样的声音:VanillaNet: The power of minimalism in deep learning | Svelte Hacker News

Introduction

  • 在过去的几十年里,人工神经网络已经取得了显著的进步,这是由增加网络复杂性导致性能提高的想法驱动的。这些网络由具有大量神经元或transformer块的多层组成,能够执行各种类似人类的任务,如人脸识别、语音识别、对象检测、自然语言处理和内容生成。现代硬件令人印象深刻的计算能力使神经网络能够以高精度和高效率完成这些任务。因此,人工智能嵌入式设备在我们的生活中变得越来越普遍,包括智能手机、人工智能摄像头、语音助手和自动驾驶汽车。

  • 诚然,该领域的一个显著突破是AlexNet的开发,它由12层组成,在大规模图像识别基准上达到了最先进的性能。在此成功的基础上,ResNet通过残差连接引入恒等映射,使深度神经网络能够在广泛的计算机视觉应用中训练出高性能,如图像分类、目标检测和语义分割。不可否认,在这些模型中引入人为设计的模块,以及网络复杂性的持续增加,增强了深度神经网络的表征能力,导致了如何训练具有更复杂架构的网络以获得更高性能的研究激增。

  • 除了卷积架构,Dosovitskiy等人还将transformer架构引入到图像识别任务中,展示了其利用大规模训练数据的潜力。Zhai等人研究了视觉transformer架构的缩放规律,在ImageNet数据集上达到了令人印象深刻的90.45%的top-1精度,这表明更深层次的transformer架构,如卷积网络,往往表现出更好的性能。Wang等人进一步提出将transformer的深度缩放到1000层,以获得更高的精度。Liu等人重新审视了神经网络的设计空间,并引入了ConvNext,实现了与最先进的transformer架构相似的性能。

  • 尽管经过优化的深度和复杂神经网络取得了令人满意的性能,但其日益增加的复杂性给部署带来了挑战。例如,ResNets中的残差操作在合并来自不同层的特征时消耗了大量的片外内存流量。此外,as - mlp中的轴向移位和Swin Transformer中的移位窗口自关注等复杂操作需要复杂的工程实现,包括重写CUDA代码。

  • 这些挑战要求神经网络设计的范式向简单性转变。然而,ResNet的发展似乎导致了纯卷积层的神经架构的放弃(没有额外的模块,如残差连接)。这主要是由于通过添加卷积层实现的性能增强没有达到预期。如[resnet]所述,没有残差的普通网络会出现梯度消失,导致34层的普通网络比18层的网络性能更差。

  • 此外,AlexNet和VGGNet等简单网络的性能在很大程度上已经被ResNets和ViT等深度和复杂网络所超越。因此,对于结构简单的神经网络的设计与优化,人们关注较少。解决这个问题并开发具有高性能的简洁模型将具有很大的价值。

  • 为此,我们提出了VanillaNet,这是一种新颖的神经网络架构,强调设计的优雅和简单,同时在计算机视觉任务中保持卓越的性能。VanillaNet通过避免过度的深度、残差和复杂的操作(如自我关注)来实现这一点,从而产生了一系列简化的网络,这些网络解决了固有的复杂性问题,非常适合资源有限的环境。

  • 为了训练我们提出的V anillanet,我们对其简化架构相关的挑战进行了全面分析,并设计了一个“深度训练”策略。这种方法从包含非线性激活函数的几个层开始。随着训练的进行,我们逐步消除这些非线性层,在保持推理速度的同时允许轻松合并。

  • 为了增强网络的非线性,我们提出了一个有效的、基于序列的激活函数,该函数包含多个可学习的仿射变换。应用这些技术已被证明可以显著提高不太复杂的神经网络的性能。如下图所示,VanillaNet在效率和准确性方面都超越了现代网络,突出了极简方法在深度学习中的潜力。VanillaNet的开创性研究为神经网络设计的新方向铺平了道路,挑战了基础模型的既定规范,并为精细化和有效的模型创建建立了新的轨迹。

    • 在这里插入图片描述

    • ImageNet上的精度vs .批处理大小为1的Nvidia A100 GPU上的推理速度。圆的大小分别与(a)和(b)中每个结构的深度和参数有关。VanillaNet在深度和延迟小得多的情况下实现了与深度神经网络相当的性能。

  • 然而,如此简单的神经网络结构真的可以达到 SOTA 的精度吗?从过往的经验来看,AlexNet 和 VGG 等网络由于难以训练,精度低等特性早已被抛弃。而如何提升这类网络的精度,是一个需要解决的难关。

    • 作者认为,VanillaNet 的瓶颈主要在于由于其层数少带来的非线性差的问题,作者基于此观点,首先提出了深度训练策略来解决这一问题。残差模块在 VanillaNet 这种简单的网络中是否还奏效?作者同样针对这一问题进行了实验,实验表明,不管是采用 ResNet 本身的残差方案还是改进后的 PreAct-ResNet 残差方案,对于 VanillaNet 来说都没有提升,这是否说明了残差网络不是深度学习的唯一选择?这值得后续研究者们的思考。作者的解释是由于 VanillaNet 的深度较少,其主要瓶颈在于非线性而非残差,残差反而可能会损害网络的非线性。

    • 它的结构十分简洁,由 5 个卷积层,5 个池化层,一个全连接层和 5 个激活函数构成,结构的设计遵循 AlexNet 和 VGG 等传统深度网络的常用方案:分辨率逐渐缩小,而通道数逐渐增大,不包含残差,自注意力等计算。论文自己表示,VanillaNet 是一种十分简洁但强大的计算机视觉网络架构,使用简单的卷积架构就可以达到 SOTA 的性能。自从 Transformer 被引入视觉领域后,注意力机制被认为是十分重要且有效的结构设计,然而 ConvNeXt 通过更好的性能重振了卷积网络的信心。那么,VanillaNet 是否可以引发无残差网络、浅层网络等设计 “文艺复兴” 的浪潮?让我们拭目以待。

A Vanilla Neural Architecture

  • 在过去的几十年里,研究人员在神经网络的基本设计上已经达成了一些共识。大多数最先进的图像分类网络架构应该由三部分组成:一个干块(stem),用于将输入图像从3通道转换为多通道并进行下采样,一个主体用于学习有用信息,一个完全连接层用于分类输出。主体通常有四个阶段,其中每个阶段都是通过堆叠相同的块派生出来的。每一阶段过后,特征的通道会扩大,而高度和宽度会减小。不同的网络利用和堆叠不同类型的块来构建深度模型。

  • 尽管现有的深度网络取得了成功,但它们利用大量复杂的层来提取以下任务的高级特征。例如,众所周知的ResNet需要34或50层的残差连接才能在ImageNet上达到70%以上的top-1精度。ViT的基础版本由62层组成,因为自关注中的query、key和value需要多层计算。

  • 随着AI芯片的不断发展,神经网络推理速度的瓶颈将不再是flop或参数,因为现代gpu具有强大的计算能力,可以很容易地进行并行计算。相比之下,它们复杂的设计和大的深度阻碍了它们的速度。为此,我们提出香草网络,即VanillaNet,其架构如下图所示。我们遵循流行的神经网络设计,包括主干、主体和全连接层。与现有的深度网络不同,我们在每个阶段只使用一层,以建立一个尽可能少层的极其简单的网络。

    • 在这里插入图片描述

    • vanillanet -6模型的架构,仅由6个卷积层组成,非常容易在任何现代硬件上使用。输入特征的大小被下采样,而通道在每个阶段加倍,这借鉴了经典神经网络的设计,如AlexNet和VGGNet。

  • 这里我们以6层为例,详细展示了网络的架构。对于茎,我们使用步长为4的4 × 4 × 3 × C卷积层,遵循[resnet,swin transformer,ConvNeXt]中的流行设置,将具有3通道的图像映射到具有C通道的特征。在第1、2和3阶段,使用步幅为2的maxpooling层来减小大小和特征映射,通道数增加2。在阶段4,我们不增加通道的数量,因为它遵循平均池化层。最后一层是输出分类结果的全连通层。

  • 每个卷积层的核大小为1 × 1,因为我们的目标是在保留特征映射信息的同时,使用最小的每层计算代价。激活函数在每个1 × 1卷积层之后应用。为了简化网络的训练过程,在每一层之后还加入了批归一化。对于不同层数的VanillaNet,我们在每个阶段都添加了block,在补充资料中会详细说明。

  • 值得注意的是,vanillanet没有残差方式,因为我们的经验发现,添加残差方式对性能的改善很小。这也提供了另一个好处,即所提出的架构非常容易实现,因为没有分支和额外的块,如SE模块。

  • 虽然vanillanet的架构简单且较浅,但其较弱的非线性对性能造成了限制,因此,我们提出了一系列技术来解决这个问题。

Training of Vanilla Networks

  • 在深度学习中,通过在训练阶段引入更强的能力来增强模型的性能是很常见的[Universal adder neural networks,Quantization networks]。我们建议利用深度训练技术来提高所提出的vanillanet在训练过程中的能力,因为深度网络比浅网络具有更强的非线性

Deep Training Strategy

  • 深度训练策略的主要思想是在训练过程的开始阶段用一个激活函数来训练两个卷积层,而不是单个卷积层。随着训练次数的增加,激活函数逐渐简化为恒等映射。在训练结束时,可以很容易地将两个卷积合并为一个卷积,从而减少推理时间。这种思路在cnn中也被广泛使用。然后,我们将详细描述如何执行此技术。

  • 对于激活函数A(x)(可以是通常的函数,如ReLU和Tanh),我们将其与恒等映射结合起来,可以表示为:

    • A ′ ( x ) = ( 1 − λ ) A ( x ) + λ x , ( 1 ) A'(x)=(1-\lambda)A(x)+\lambda x,(1) A(x)=(1λ)A(x)+λx,(1)

    • 其中λ是一个超参数,用于平衡修改后的激活函数 A ′ ( x ) A ' (x) A(x)的非线性。将当前epoch和深度训练epoch的个数分别表示为e和E。设 λ = e E λ = \frac e E λ=Ee。因此,在训练开始时(e = 0), A ′ ( x ) = A ( x ) A ' (x) = A(x) A(x)=A(x),说明网络具有较强的非线性。当训练收敛时,我们得到 A ′ ( x ) = x A ' (x) = x A(x)=x,这意味着两个卷积层中间没有激活函数。我们进一步演示了如何合并这两个卷积层。

  • 我们首先将每个批处理归一化层及其前一个卷积转换为单个卷积。我们将 W ∈ R C o u t × ( C i n × k × k ) , B ∈ R C o u t W∈\R^{C_{out}×(C_{in}×k×k)}, B∈\R^{C_{out}} WRCout×(Cin×k×k)BRCout作为卷积核的权矩阵和偏置矩阵,其中输入通道为 C i n C_{in} Cin,输出通道为 C o u t C_{out} Cout,核的大小为k。批归一化中的scale, shift, mean和variance分别用 γ , β ,µ, σ ∈ R o u t γ, β,µ,σ∈\R^{out} γβµσRout表示。合并后的权重和偏置矩阵为:

    • W i ′ = γ i σ i W i , B i ′ = ( B i − µ i ) γ i σ i + β i , ( 2 ) W'_i=\frac{γ_i}{σ_i}W_i,\\ B'_i=\frac{(B_i-µ_i)γ_i}{σ_i}+β_i,(2) Wi=σiγiWi,Bi=σi(Biµi)γi+βi,(2)

    • 其中下标 i ∈ { 1 , 2 , … , C o u t } i∈\{1,2,…,C_{out}\} i{1,2Cout}表示第i个输出通道中的值。

  • 在将卷积与批处理归一化合并之后,我们开始合并两个1×1卷积。设 x ∈ R C i n × H × W , y ∈ R C o u t × H ′ × W ′ x∈\R^{C_{in}×H×W}, y∈\R^{C_{out}×H ' ×W '} xRCin×H×W,yRCout×H×W为输入和输出特征,则卷积可表示为:

    • y = W ∗ x = W ⋅ i m 2 c o l ( x ) = W ⋅ X , ( 3 ) y=W*x=W·im2col(x)=W·X,(3) y=Wx=Wim2col(x)=WX,(3)

    • 其中*表示卷积运算,· 表示矩阵乘法, X ∈ R ( C i n × 1 × 1 ) × ( H ′ × W ′ ) X∈\R^{(C_{in}×1×1)×(H ' ×W ')} XR(Cin×1×1)×(H×W)由im2col运算导出,将输入变换成与核形状对应的矩阵。幸运的是,对于1 × 1卷积,我们发现im2col操作变成了简单的重塑操作,因为不需要有重叠的滑动核。因此,将两个卷积层的权矩阵记为 W 1 W^1 W1 W 2 W^2 W2,不带激活函数的两个卷积表示为:

    • y = W 1 ∗ ( W 2 ∗ x ) = W 1 ⋅ W 2 ⋅ i m 2 c o l ( x ) = ( W 1 ⋅ W 2 ) ∗ X , ( 4 ) y=W^1*(W^2*x)=W^1·W^2·im2col(x)=(W^1·W^2)*X,(4) y=W1(W2x)=W1W2im2col(x)=(W1W2)X,(4)

    • 因此,可以在不增加推理速度的情况下合并1 × 1卷积。

Series Informed Activation Function

  • 已经提出了几种不同的深度神经网络激活函数,包括最流行的整流线性单元(ReLU)及其变体(PReLU , GeLU和Swish)。他们着重于利用不同的激活函数来提高深层复杂网络的性能。然而,已有的理论证明[Deep vs. shallow networks: An approximation theory perspective,The power of depth for feedforward neural networks,Benefits of depth in neural networks],简单浅层网络的有限功率主要是由于其较差的非线性造成的,这与深层复杂网络不同,尚未得到充分的研究。

  • 实际上,改善神经网络非线性的方法有两种:将非线性激活层叠加或增加每个激活层的非线性,而现有网络的趋势是选择前者,这会导致在并行计算能力过剩时产生较高的延迟。改善激活层非线性的一个直接方法是叠加。激活函数的连续叠加是深度网络的核心思想。相反,我们转而并发地堆叠激活函数。表示神经网络中输入x的单个激活函数为 A ( x ) A(x) A(x),它可以是常用的函数,如ReLU和Tanh。 A ( x ) A(x) A(x)的并发叠加可表示为:

    • A S ( x ) = ∑ i = 1 n a i A ( x + b i ) , ( 5 ) A_S(x)=\sum_{i=1}^na_iA(x+b_i),(5) AS(x)=i=1naiA(x+bi),(5)

    • 其中n为堆叠激活函数的个数,ai, bi为每个激活的尺度和偏差,避免简单累积。同时叠加可以大大增强激活函数的非线性。等式5在数学上可以看作是一个级数,它是多个量相加的运算。

  • 为了进一步丰富序列的逼近能力,我们使基于序列的函数通过改变其邻居的输入来学习全局信息,这与BNET类似。具体来说,给定一个输入特征 x ∈ R H × W × C x∈\R^{H×W ×C} xRH×W×C,其中H、W、C分别为其宽度、高度和通道的个数,则激活函数表示为:

    • A s ( x h , w , c ) = ∑ i , j ∈ { − n , n } a i , j , c A ( x i + h , j + w , c + b c ) , ( 6 ) A_s(x_{h,w,c})=\sum_{i,j\in\{-n,n\}}a_{i,j,c}A(x_{i+h,j+w,c}+b_c),(6) As(xh,w,c)=i,j{n,n}ai,j,cA(xi+h,j+w,c+bc),(6)

    • 式中 h ∈ 1 , 2 , … , H , w ∈ 1 , 2 , … , W , c ∈ 1 , 2 , … C h∈{1,2,…, H}, w∈{1,2,…, W}, c∈{1,2,…C} h1,2Hw1,2Wc1,2C。不难看出,当n = 0时,基于级数的激活函数 A s ( x ) A_s(x) As(x)退化为普通激活函数A(x),这意味着所提出的方法可以看作是对现有激活函数的一般扩展。我们使用ReLU作为基本激活函数来构建我们的系列,因为它在gpu中的推理是有效的。

  • 我们进一步分析了所提出的激活函数与其对应的卷积层的计算复杂度。对于核大小为K、输入通道为 C i n C_{in} Cin、输出通道为 C o u t C_{out} Cout的卷积层,计算复杂度为:

    • O ( C O N V ) = H ∗ W ∗ C i n ∗ C o u t ∗ k 2 , ( 7 ) O(CONV)=H*W*C_{in}*C_{out}*k^2,(7) O(CONV)=HWCinCoutk2,(7)

    • 而其串联激活层的计算代价为:

    • O ( S A ) = H ∗ W ∗ C i n ∗ n 2 , ( 8 ) O(SA)=H*W*C_{in}*n^2,(8) O(SA)=HWCinn2,(8)

    • 因此,我们有:

    • O ( C O N V ) O ( S A ) = H ∗ W ∗ C i n ∗ C o u t ∗ k 2 H ∗ W ∗ C i n ∗ n 2 = C o u t ∗ k 2 n 2 ,( 9 ) \frac{O(CONV)}{O(SA)}=\frac{H*W*C_{in}*C_{out}*k^2}{H*W*C_{in}*n^2}=\frac{C_{out}*k^2}{n^2},(9) O(SA)O(CONV)=HWCinn2HWCinCoutk2=n2Coutk2,(9

    • 以VanillaNet-B中的第4阶段为例,其中 C o u t = 2048 , k = 1 , n = 7 C_{out} = 2048, k = 1, n = 7 Cout=2048,k=1,n=7,比值约为84。综上所述,所提出的激活函数的计算成本仍然远远低于卷积层。更多的实验复杂性分析将在下一节中展示。

Experiments

  • 在本节中,我们通过实验验证了所提出的VanillaNet在大规模图像分类上的性能。通过消融研究,研究了所提出的vanillanet各组分的有效性。我们还可视化了vanillanet的特征,以进一步研究所提出的网络如何从图像中学习。

Ablation Study

  • 在本节中,我们进行消融研究以检验所提出的模块的有效性,包括串联激活函数和深度训练技术。此外,我们还分析了在所提出的vanillanet中添加残差方式的影响。

  • 串联数对激活函数的影响。在上一节中,我们提出了一个序列激活函数,以提高普通激活函数的性能,并实现特征映射中的全局信息交换。下表显示了公式6中使用不同n数时所提出的VanillaNet的性能。当n = 0时,激活函数退化为普通的ReLU激活函数。虽然该网络的推理速度比使用串联激活函数的推理速度要快,该网络在ImageNet数据集上只能达到60.53%的top-1精度,这无法应用于实际应用。证明了激活函数的非线性较差导致了vanilla网络的性能较差

    • 在这里插入图片描述
  • 为此,我们提出了串联激活函数。当n = 1时,网络可以达到74.53%的准确率,与60.53%相比有了巨大的提高。结果证明了所提激活函数的有效性。当n的数量增加时,网络的性能就会提高。我们发现n = 3很好地平衡了前1名的准确性和延迟。因此,我们用n = 3进行其余的实验。值得注意的是,所提出的激活函数的FLOPs与原始网络相比非常小,这与我们在式9中得出的结论相同。

  • 深度训练的影响。由于vanillanet非常浅,我们建议增加训练非线性来提高其性能。然后,我们分析了所提出的深度训练技术的有效性。下表显示了VanillaNet-6使用深度训练技术的结果。结果,原始的VanillaNet达到了75.23%的top-1精度,这是基线。通过使用深度训练技术,所提出的V anillaNet的准确率达到了76.36%。结果表明,所提出的深度训练技术对浅层网络是有效的。

    • 在这里插入图片描述
  • 此外,我们进一步将深度训练和序列激活函数应用于其他网络,以显示这两种技术的泛化能力。上表报告了AlexNet和ResNet-50这两个经典的深度神经网络在ImageNet数据集上的结果。原来的AlexNet在12层的情况下只能达到57.52%的准确率。通过应用所提出的深度训练和串联激活函数,AlexNet的性能可以大大提高约6%,这表明所提出的技术对于浅层网络是非常有效的。当转向架构相对复杂的ResNet-50时,性能提升很少。这一结果表明,即使没有提出的技术,深度和复杂的网络也已经具有足够的非线性

  • 残差的影响。在深度神经网络中,一个常识是添加残差方式可以在很大程度上简化训练过程并提高性能。为此,我们研究了残差是否有利于浅层简单网络的性能。我们建议使用两种残差方式的位置,即激活函数之后的残差方式和激活函数之前的残差方式,这两种方式分别在原始的ResNet和PreAct-ResNet中提出。由于通道数量很大,并且在vanillanet中原始卷积的内核大小为1 × 1,因此添加残差方式(即使内核大小为1 × 1)也会大大增加FLOPs。

  • 因此,我们使用无参数残差方式。需要注意的是,如果步幅为2,无参数残差方式将使用平均池化来减小特征图的大小,如果通道数量增加,则无参数快捷方式将按照[resnet]中的原始设置对多余的通道进行填充。

  • 下表显示了添加残差方式的消融研究。我们惊讶地发现,使用shortcuts方式,尽管任何类型的shortcuts方式,对所提出的vanillanet的性能几乎没有改善。我们认为香草网络的瓶颈不是恒等映射,而是弱非线性。shortcuts方式对提高非线性是无用的,并且可能会减少非线性,因为shortcuts方式跳过激活函数以减少香草网络的深度,因此导致较低的性能

Visualization of Attention

  • 为了更好地理解所提出的VanillaNet,我们使用GradCam++进一步可视化特征,它利用最后一个卷积层相对于特定类生成的特征映射的正偏导数的加权组合来生成一个很好的视觉解释。

  • 下图显示了性能相似的VanillaNet-9和ResNets-50-TNR的可视化结果。红色表示该区域高度激活,而蓝色表示预测类别的弱激活。我们可以发现这两个网络对于不同的样本有不同的注意图。

    • 在这里插入图片描述

    • 利用ResNet-50和vanillanet -9对分类样本的注意图进行可视化。我们展示了他们错误分类样本和正确分类样本的注意图进行比较。

  • 可以很容易地发现,对于ResNet-50,活跃区域的面积较小。对于深度只有9的VanillaNet,活跃区域要比深度网络大得多。我们认为,通过使用大量的参数和FLOPs, VanillaNet可以较强地提取输入图像中的所有相对激活,并彻底提取其信息。相比之下,由于非线性相对较低,vanillanet在分析部分有用区域时可能较弱

Comparison with SOTA architectures

  • 为了说明该方法的有效性,我们在ImageNet数据集上进行了实验,该数据集由224 × 224像素的RGB彩色图像组成。ImageNet数据集包含1.28M张训练图像和50K张带有1000个类别的验证图像。我们利用强正则化,因为所提出的vanillanet在每层都有大量的参数,从非线性有限的图像中捕获有用的信息。我们还报告了ImageNet Real结果,其中对标签进行了改进。延迟是在Nvidia A100 GPU上测试的。

  • 我们提出了不同层数的网络架构。下表显示了使用不同网络在ImageNet数据集上的分类结果。我们列出了参数的数量,FLOPs,深度,GPU延迟和精度进行比较。

    • 在这里插入图片描述
  • 在过去的几十年里,由于边缘设备的计算能力有限,研究人员主要关注于最小化便携式网络中ARM/CPU的flop或延迟。随着现代AI芯片的发展,无人驾驶汽车、机器人等多种移动设备需要并且能够携带多个具有巨大计算能力的gpu,以寻求外部输入的实时反馈。

  • 因此,我们以批大小为1来测试GPU延迟,这意味着AI芯片有足够的计算能力来计算每个网络。在这种情况下,我们发现推理速度与flop数和参数的关系不大。以MobileNetV3-Large为例,虽然它的FLOPs很低(0.22B),但它的GPU延迟是7.83,甚至比我们的VanillaNet-13的11.9B FLOPs还要大。

  • 实际上,这种情况下的推理速度与层的复杂性和层数高度相关。我们可以比较ShuffleNetV2x1.5和ShuffleNetV2x2的推理速度。实际上,它们的区别只在于通道的数量。因此,虽然它们的参数数量和flop相差很大。(0.3B vs . 0.6B),他们的推理速度几乎相同(7.23和7.84)。

  • 我们还可以在上表中发现,简单的体系结构包括ResNet, VGGNet和我们的vanillanet没有额外的分支和复杂的块(例如,SE块或密集连接)实现了最高的推理速度。

  • 为此,我们提出了VanillaNet,它简单,卷积层很少,没有任何分支(甚至没有残差)。我们在网络中设置不同的层数来构建一系列的网络。如上表所示,VanillaNet-9在GPU上的推理速度仅为2.91ms,准确率达到79.87%,比同等性能的ResNet-50和ConvNextV2-P快50%以上。

  • 这一惊人的结果证明了vanillanet在现有深度网络上进行实时处理的潜力。我们还扩展了通道数和池化大小,得到了本文提出的VanillaNet-13-1.5׆,在ImageNet上达到了83.11%的Top-1准确率,这表明本文提出的vanilla神经网络仍然有能力在大规模图像分类任务上获得如此高的性能。建议我们可能不需要深度和复杂的图像分类网络,因为扩展Vanillanet可以获得与深度网络相似的性能。

  • 第一张图显示了不同架构的深度和推理速度。批大小为1时的推理速度与网络深度高度相关,而与参数数量无关,这表明简单浅层网络在实时处理方面具有巨大的潜力。可以很容易地发现,在所有这些架构中,所提出的VanillaNet实现了最佳的速度-精度权衡,并且具有较低的GPU延迟,这表明在计算能力足够的情况下,所提出的VanillaNet具有优势

Experiments on COCO

  • 为了进一步证明所提出的VanillaNet在下游任务上的有效性,我们在COCO数据集中进行了评估。我们使用RetinaNet和Mask-RCNN作为框架来评估所提出的方法。FPS是在Nvidia A100 GPU上测量的。

  • 下表显示了所提出的vanillanet在COCO检测和分割方面的性能。所提出的vanillanet可以成功地达到与ConvNext和Swin骨干网络相似的性能。虽然VanillaNet的FLOPs和Parameters远高于Swin和ConvNext,但它的FPS要高得多,这证明了香草架构在对象检测和实例分割任务上的有效性

    • 在这里插入图片描述

    • COCO检测和分割性能。在Nvidia A100 GPU上以图像大小(1280,800)计算FLOPs。

Conclusion

  • 本文充分探讨了建立高性能但不需要残差、高深度和注意层等复杂架构的神经网络的可行性,体现了设计向简单和优雅的范式转变。本文提出了一种深度训练策略和串联激活函数,以增强vanillanets在训练和测试过程中的非线性,提高其性能。在大规模图像分类数据集上的实验结果表明,VanillaNet的性能与知名的深度神经网络和视觉transformer相当,从而突出了极简主义在深度学习中的潜力。我们将进一步探索更好的参数分配,以实现高效的高性能网络架构。总之,我们证明了使用非常简洁的架构可以实现与最先进的深度网络和视觉transformer相当的性能,这将在未来释放普通卷积网络的潜力。

Network Architectures

  • 下表列出了7-13层的vanillanet的详细架构,其中每个卷积层后面都有一个激活函数。对于VanillaNet-13-1.5×,通道数乘以1.5。对于V anillaNet-13-1.5׆,我们进一步对阶段2、3和4使用自适应池化,特征形状分别为40×40、20×20和10×10。

    • 在这里插入图片描述

    • 详细的体系结构规范。

Training Details

  • 对于ImageNet上的分类,我们利用余弦学习率衰减训练了300个epoch的Vanillanet。方程1中的 λ 分别在epoch 0和100从1线性衰减到0。训练细节见下表。对于VanillaNet-11,由于训练难度较大,我们使用VanillaNet-10的预训练权值作为初始化。vanillanet -12/13采用了同样的技术。

    • 在这里插入图片描述

    • ImageNet-1K training settings.

  • 对于COCO的检测和分割,我们使用ImageNet预训练的权值。我们使用Adamw优化器训练VanillaNet-11,批量大小为32,初始学习率为1.4e-4,分层衰减为0.8。
    nillaNet-10的预训练权值作为初始化。vanillanet -12/13采用了同样的技术。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值