神经网络其实并不需要那么深!普林斯顿大学&英特尔提出ParNet,12层的网络就能达到80%以上的准确率!

详细信息如下:
  • 论文链接:https://arxiv.org/abs/2110.07641

  • 项目链接:https://github.com/imankgoyal/NonDeepNetworks

导言:
深度(Depth)是深度神经网络的一个重要特征,但深度网络越深就意味着串行计算越多,延迟越大。这就引出了一个问题——是否有可能构建高性能的“非深度”的神经网络?为了证明这一点,作者使用了并行子网络,而不是一层接一层地堆叠,这有助于在保持高性能的同时有效减少深度。
通过利用并行子结构,作者证明了,深度仅为12的网络可以在ImageNet、CIFAR10和CIFAR100上实现超过80%、96%和81%的Top-1精度。此外,作者还在COCO上进行了实验,深度为12的主干网络能够实现48%的AP精度。此外,作者还分析了此设计中缩放网络的规则,并展示了如何在不改变网络深度的情况下提高性能。

      01      

Motivation
深度神经网络(DNN)已经彻底改变了机器学习、计算机视觉和自然语言处理领域,DNN的一个关键特征是“深度”。其深度可以定义为从输入神经元到输出神经元的最长路径的长度。通常,神经网络可以看做是多个网络层的线性串联序列,在这种情况下,网络的深度就是其层数。
目前普遍认为,深度是高性能网络的重要组成部分,因为深度增加了网络的表现能力,有助于学习越来越抽象的特征。ResNet成功的一个主要原因是,它们允许训练多达1000层的非常深的网络。因此,越来越多的深度模型实现了SOTA性能,而所谓的“深度”已经从早期的深度学习中的“2层或更多层”转变为今天的模型中使用的“数十层或数百层”。
如上图所示,在ImageNet上性能比较高的模型通常都是在30层以上,不到20层的模型精度最多也只有75%左右。但很大的深度真的是必要的吗?这个问题值得一问,因为深度大并非没有缺点。更深的网络导致更多的顺序处理和更高的延迟;它更难并行化,不太适合需要快速响应的应用程序。
在这篇论文中,作者研究了是否有可能实现高性能的“非深度”神经网络。为了研究这个问题,作者提出了一种网络设计,它是非深度的,并且与深度网络相比具有竞争力的性能。
作者将其成为ParNet (Parallel Networks),并且实验表明,深度为12的ParNet 在ImageNet上可以达到80%以上的Top-1准确率,在CIFAR10上可以达到96%,在CIFAR100上可以达到81%以上的准确率。以ParNet 为主干网络的检测网络可以在MS-COCO上实现48%的AP性能。
ParNet中的一个关键设计选择是使用并行子网,作者没有按顺序排列网络层,而是在并行子网络中排列网络层。这种高度并行的结构可以减少网络的深度,同时保持高精度。

      02      

方法
ParNet由以不同分辨率处理特征的并行子结构组成,作者将这些并行子结构称为streams。来自不同stream的特征在网络的后期进行融合,这些融合的特征用于下游任务。上图展示了ParNet的示意图。

2.1. ParNet Block

在ParNet,作者使用VGG风格的block。为了了解非深度网络是否能够实现高性能,作者在实验中发现VGG类型的块比ResNet类型的块更合适。一般来说,训练VGG式网络比训练ResNet式网络更困难,但最近的研究表明,如果使用“结构再参数化”技术,则可以更容易地训练使用此类的block。
在训练期间,在3×3卷积块上使用多个分支。经过训练后,多个分支可以融合成一个3×3卷积。因此,最终得到一个仅由3×3块和非线性组成的单分支网络。这种块的重新参数化或融合有助于减少推理过程中的延迟。
作者借用Rep VGG的初始块设计,并对其进行修改,使其更适合本文的非深度架构。只有3×3卷积的非深度网络的一个挑战是感受野相当有限。
为了解决这一问题,作者构建了一个Skip-Squeeze-Excitatio(SSE)层,该层是基于Squeeze-and-Excitation(SE)设计的。标准的SE增加了网络的深度,因此,作者使用了一种Skip-Squeeze-Excitation的设计,并使用了一个全连接层。
作者发现这种设计有助于提高性能,上图展示了改进的Rep-VGG模块,称为RepVGG-SSE。对于像ImageNet这样的大规模数据集,一个非深度网络可能没有足够的非线性,从而限制了它的表现力。因此,作者将ReLU激活替换为SiLU。

2.2. 下采样和融合块

除了输入和输出大小相同的RepVGG SSE块外,ParNet还包含向下采样和融合块。下采样块降低分辨率并增加宽度以实现多尺度处理,而融合块组合了来自多分辨率的信息。
在下采样块中,没有 skip connection,但是,作者添加了一个与卷积层平行的单层SE模块。此外,作者在1×1卷积分支中添加了2D平均池化。融合块类似于下采样块,但包含额外的连接层。因为融合块的输入通道数是下采样块的两倍,为了减少参数计数,作者使用group=2的卷积。下采样和融合块的示意图如上图所示。

2.3. 网络架构

ParNet的示意图如上图所示,每个stream由一系列RepVGG SSE块组成,这些块以不同的分辨率处理特征。然后,使用拼接的融合块对来自不同stream的特征进行融合。最后,输出被传递到深度下标为11的下采样块。

2.4. Scaling ParNet

通过扩大网络规模可以获得更高的精度,之前的工作缩放了宽度、分辨率和深度。由于本文的目标是评估是否可以在小深度下实现高性能,因此作者保持深度不变,而是通过增加宽度、分辨率和stream的数量来放大ParNet。不同网络变体的参数如下表所示:

      03      

实验

3.1. Experiments on ImageNet

上表展示了ParNet在ImageNet上的性能,可以看出,只要深度为12,ParNet就可以获得高性能。
上表展示了ParNet和ResNet的速度对比,可以看出,本文的方法比ResNet具有更快的推理速度(但是参数量和FLOPs多了好多)。
上表展示了未融合、融合和多GPU的速度对比。

3.2. Boosting Performance

上表展示了加入其他训练的trick达到更高的性能,可以看出,ParNet-XL最高可以达到80.72的Top-1准确率。

3.3. Experiments on MS-COCO

上表展示了MS-COCO上目标检测的实验结果,即使在单个GPU上,ParNet也比baseline实现了更高的速度。

3.4. Experiments on CIFAR

上表展示了CIFAR10和CIFAR100上各种网络的性能。可以看出,ParNet与SOTA的深层网络(如Resnet和DenseNet)相比,在性能具有竞争力,同时使用了更低的深度和数量相当的参数。

3.5. Ablation Studies

上表展示了ParNet不同设置的消融实验结果。
上表展示了不同stream数量对实验结果的影响,可以看出stream为3时,实验结果是最好的。

3.6. ParNet vs. Ensembles

从上表可以看出,ParNet比模型集成可以获得更好的性能。

3.7. Scaling ParNet

上图展示了ParNet在缩放网络过程中的性能变化。

      04      

总结
在本文中,作者通过实验证明:非深度网络可以在大规模视觉识别任务中与深度网络实现类似的性能。作者使用了并行子结构,创建了性能相当好的非深度网络,此外,作者还展示了在不增加深度的情况下扩展和改进此类网络性能的方法。这种设计能更好地满足未来多芯片处理器的要求,因此本文的工作有助于促进高精度和极快的神经网络的发展。
▊ 作者简介
研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。

END

(0)

相关推荐