本文提出了一种卷积神经网络的硬件高效架构,它具有类似repvgg的架构。
浮点值或参数是评估网络效率的传统度量,网络对硬件(包括计算能力和内存带宽)不敏感。因此,如何设计一个神经网络来有效地利用硬件的计算能力和存储带宽是一个关键问题。
本文提出了一种硬件感知神经网络的设计方法。基于该方法作者设计了高效Rep系列卷积网络,该网络对高计算硬件(例如GPU)友好,并应用于YOLOv6目标检测框架。
YOLOv6代码在:https://github.com/meituan/YOLOv6
1、简介
自VGG在图像分类任务中取得成功以来,卷积神经网络设计已经引起了学术界和工业界的广泛关注。目前,已有大量经典网络被提出,如Inception和Resnet。这些精心设计的架构使得图像分类的准确性越来越高。
除了手动设计,最近的神经架构搜索还自动设计了几个代表性的网络,如Nasnet和AmoebaNet。尽管复杂的网络为图像分类、目标检测和分割等视觉任务带来了成功,但这些网络在部署的硬件上可能无法获得合适的精度和速度平衡。
针对硬件效率的深度学习网络设计和部署已经得到了一致的研究。传统的推理效率评估指标是浮点运算(FLOP)和参数计数。然而,这些度量不能表示与硬件的关系,例如内存访问成本和I/O吞吐量。
图3显示了计算能力与内存资源之间的关系。因此,提出了一个重要的问题:如何设计一个具有强感知能力的友好网络,以实现更好的精度和速度平衡?
为了解决这个问题,作者探索了一些具有竞争力的新架构,并将其应用于YOLOv6目标检测框架。RepVGG是一种新型网络,具有3x3卷积核,通过GPU或CPU上的winograd算法进行了高度优化。单路径模型可以在GPU等设备上快速训练和推断。
图4显示了rep conv在训练状态和推理状态之间的转换。在训练状态下,通过额外的1x1 conv和identity,rep conv可以保证训练期间的准确性。在推理状态下,重参化结构可以同等地转换为推理状态。
在YOLOv6-1.0中,基于rep conv设计了名为Efficient rep主干和rep PAN neck架构,以有效利用GPU的计算资源。在YOLOv6-2.0中,为了平衡计算和内存资源,探索了一种名为Bep(Beer-mug)单元和BepC3(或名为CSPStackRep)块的新结构。
与rep-conv相比,作者发现在某些状态下,Bep单元是一个更有效的基本神经网络单元。尽管RepVGG提出rep风格的多分支训练可以达到与原始多分支训练(如resnet)类似的性能,但作者发现rep风格网络的精度-速度权衡在很大程度上降低。因此,设计了适用于YOLOv6-2.0的CSPBep主干和CSPRepPAN颈部,他们都具有Bep单元和BepC3块结构。
基于以上考虑,作者将混合策略应用于YOLOv6,即在小尺寸中选择单分支模型,在大尺寸中选择多分支模型。图1和图2描述了与其他目标检测器类似的精度-速度权衡。
2、相关工作
2.1、神经网络设计
VGG网络实现了ImageNet分类的最高精度,达到70%以上,已经提出了许多相关创新,例如GoogLeNet和Inception网络是在多分支架构中设计的。ResNet是一种具有代表性的双分支网络,在工业中得到了广泛应用。在repvgg提出之前,单路径网络在某些设备上显示出了高效率。
2.2、神经网络架构搜索
神经结构搜索(NAS)是一种新的技术,旨在与人工设计相比实现网络的自动设计。通过手动设计空间设计,NAS可以以巨大的资源成本自动生成大量网络。目前,为了节省计算资源,已经提出了低成本的神经网络搜索,例如One For All等。
2.3、具有硬件感知的神经网络设计
最近,已经提出了诸如MobileOne和TRT-VIT等多种新型网络。考虑到设备的性能,这些网络是手动设计的。除了关于精度或参数的度量外,推理速度被同时考虑,这被称为硬件感知神经网络设计。
本文的主要贡献:
- 提出了Bep unit、Repblock和BepC3嵌段的新结构。
- 提出了一种新型的EfficientRep、Rep-PAN、CspBep和CSPRepPAN网络。
- 提出了具有计算能力和内存带宽平衡的新型网络设计,并针对不同大小的模型采用了各种策略。
3、本文方法
3.1、纯Repvgg风格高效设计
Repvgg-style conv具有3x3 conv的结构,后跟ReLU,可以有效地利用硬件计算。在训练状态下,Repvgg-style的conv由3x3分支、1x1分支和identity组成(图4)。通过重参化,多分支结构在推理状态下转换为单分支3x3 conv。如图5和图6所示,设计了名为EfficientRep主干和Rep PAN颈部的Repvgg风格网络,该网络对GPU友好,并应用于YOLOv6检测框架(YOLOv6-v1)。
然而,与csp风格的YOLO系列相比,当YOLOv6-v1增长到中等尺寸时,推理速度减慢得太快,精度也没有竞争力。如表1所示,纯repvgg-style YOLOv6m无法实现类似的精度-速度权衡。因此,探索了用于大尺寸模型的新型结构,如多路径结构。
3.2、多路径高效设计
为了解决纯repvgg型网络无法获得预期的精度-速度权衡的问题,提出了一种新的Bep单元结构。Bep单元的细节如图7所示,多个rep conv通过额外的shortcut线性连接。使用Bep单元设计了一个新的主干和颈部,分别命名为CSPBep和CSPRepPAN。在YOLOv6-v2中应用了上述结构,并实现了更好的精度和速度权衡。
CSP-Style是一种广泛应用于YOLO系列框架的高效设计,如YOLOv5、PPYOLOE等。CSP-Style结构使用跨阶段部分网络,在减少计算量的同时实现了更丰富的梯度组合。将Bep单元与CSP-Style结构相结合,设计了一种名为BepC3块的新结构,以平衡精度和推理速度。BepC3的设计如图8所示,它由CSP-Style结构和Bep单元的Repblock组成。如表I所示,BepC3块的改进,准确度和速度均达到预期的平衡。
基于BepC3块,作者分别设计了CSPBep主干和CSPRepPAN颈部,从而得到YOLOv6-v2模型。对于YOLO系列中的CSP-Style网络,默认情况下,partial ratio为1/2。在YOLOv6-v2的设计中,为YOLOv6m应用了2/3的partial ratio,为YOLOv2l应用了1/2的partial ratio。
3.3、缩放策略
在YOLOv5之后都开始使用深度乘数和宽度乘数的比例策略来生成各种大小的模型。在YOLOv6-v1和YOLOv6-v2中,Backbone的深度设置均为[1,6,12,18,6]。此外,宽度设置为[64,128,256,512,1024]。Neck的深度设置均为[12,12,12,12],宽度设置为[256,128,128,256,256,512]。表II显示了YOLOv6中应用的特定深度乘数和宽度乘数。
4、实验
5、参考
[1].EfficientRep: An Efficient Repvgg-style ConvNets with Hardware-aware Neural Network Design.