特征重用一直是轻量级卷积神经网络设计的关键技术。目前的方法通常使用连接运算符,通过重用来自其他层的特征映射来廉价地保持大的通道数量(从而获得大的网络容量)。尽管级联是无参数和flops的,但它在硬件设备上的计算成本是不可忽略的。针对这一问题,本文提出了一种利用结构再参数化技术实现特征重用的新视角。提出了一种新的硬件高效的RepGhost模块,通过重新参数化来实现隐式特征重用,而不是使用连接运算符。在RepGhost模块的基础上,开发了高效的RepGhost瓶颈和RepGhostNet。在ImageNet和COCO基准测试上的实验表明,所提出的RepGhostNet在移动设备上比GhostNet和MobileNetV3更有效。特别是,在基于arm的手机上,我们的RepGhostNet以较少的参数和相当的延迟,在ImageNet数据集上Top-1精度相比GhostNet 0.5X模型 提高了2.5%。代码可从https://github.com/ChengpengChen/RepGhost获得。
随着移动和便携设备的普及,由于计算资源有限,高效的卷积神经网络(CNNs)变得不可或缺。为了达到提高cnn效率的目的,近年来提出了不同的方法,如轻量化架构设计[3,14,20,31,35,48]、神经架构搜索[13,27,38,44]、修剪[2,18,30,32]等,并取得了很大进展。
在体系结构设计领域,信道数量多往往意味着网络容量大[17,23,24],特别是对于轻量CNNs[14,19,31,35]。正如[31]中所述,给定固定的FLOPs,轻量级cnn更倾向于使用空闲连接(例如,组或深度卷积)和特性重用。这两者都得到了很好的研究,近年来提出了许多具有代表性的轻量cnn[5,14,15,19,20,31,35,47,48]。备用连接的目的是通过低浮点操作(flop)来保持大的网络容量,而特征重用的目的是通过简单地连接来自不同层的现有特征映射来显式地保持大量的通道(从而保持大的网络容量)[14,23,24,37]。例如,在DenseNet[24]中,在一个阶段中重用前一层的特征映射并将其发送到后续层,从而导致越来越多的通道。GhostNet[14,15]提出通过廉价的操作生成更多的特征图,并将其与原有的特征图连接,以保留大量通道。ShuffleNetV2[31]只处理一半的通道,保留另一半通道进行连接。它们都通过连接操作利用特性重用来扩大通道数量和网络容量,同时保持较低的flop。连接似乎已经成为特性重用的一种标准和优雅的操作。
连接是不受参数和FLOPs影响的,然而,它在硬件设备上的计算成本是不可忽略的,因为参数和FLOPs并不是机器学习模型实际运行时性能的直接成本指标[8,31]。为了验证这一点,我们在3.1节提供了详细的分析。我们发现,在硬件设备上,连接操作由于其复杂的内存拷贝,比添加操作效率要低得多。因此,在连接操作之外,探索一种更好的、硬件效率更高的特性重用方法是值得关注的。
近年来,结构再参数化在CNNs体系结构设计中的有效性得到了验证,包括direcnet[46]、ExpandNets[12]、ACNet[10]、RepVGG[11]等。该方法可以将复杂的训练时间结构转化为权空间中等价的更简单的推理时间结构,且不需要任何时间成本。受此启发,我们提出利用结构的再参数化,而不是广泛使用的连接,来实现特征的隐式重用,以实现硬件高效的架构设计。
本文通过结构重新参数化,提出了一个硬件高效的RepGhost模块,实现了特征的隐式重用。注意,这不仅仅是将重参数化技术应用到Ghost模块中的现有层,而是为了改进模块以便更快地推断。具体来说,我们首先去掉了低效的拼接运算符,然后修改体系结构以满足结构重新参数化的规则。因此,在推断之前,特征重用过程可以从特征空间转移到权重空间,使我们的模块高效。最后,基于RepGhost模块,我们开发了一种硬件高效的cnn,称为RepGhostNet,它在精度-延迟权衡方面优于现有最先进的轻量级cnn,如图1所示。我们的贡献摘要如下:
说明了在硬件高效架构设计中,特征重用并非无成本且不可或缺的拼接操作,并提出了通过结构再参数化技术实现特征重用的新视角。
我们提出了一个具有隐式特性重用的新颖RepGhost模块,并开发了一个比GhostNet[14]和MobileNetV3[19]更有效的硬件RepGhostNet。
我们表明,与之前最先进的轻量级cnn相比,我们的RepGhostNet可以在多个视觉任务中实现更好的性能,并具有更低的移动延迟。
无论是人工设计的[3,20,35,47,48],还是基于神经结构搜索(NAS)[7,13,22,42,44]的轻型cnn,其设计目的都是为了获得更少参数和更低flop的竞争性能。其中,ShuffleNetV1[47]和MobileNetV2[35]通过使用大量的深度卷积而不是密集的卷积来建立基准。FBNet[42,44]采用复杂NAS技术自动设计轻量级架构。然而,参数和flop往往不能反映轻量级cnn的实际运行时性能(即:延迟)[8,31]。很少有模型是直接为低延迟设计的,如ProxylessNAS[27]、MNASNet[38]、MobileNetV3[19]和ShuffleNetV2[31]。本文以此为基础,设计了高效、低时延的cnn。
另一方面,cnn中的特征重用也激发了许多令人印象深刻的作品[14,15,23,24,31,37,45],这些作品成本低廉甚至免费。GhostNet[14]作为轻量CNNs,使用廉价的操作,以较低的计算成本产生更多的信道,ShuffleNetV2[31]只处理一半的特征信道,保留另一半进行连接。它们都使用连接操作来保持大的通道数,因为它是参数和flops自由的。但我们注意到,由于其复杂的内存复制过程,它在移动设备上的效率很低,这使得它在轻量级cnn的特性重用中不是不可或缺的。因此,在本文中,我们探索在轻量级cnn架构设计中利用特征重用,而不仅仅是串接操作。
结构重新参数化通常是将训练时表达能力更强、更复杂的体系结构转换为更简单的体系结构,以便快速推断。ExpandNets[12]在训练过程中将模型中的线性层重新参数化为几个连续的线性层。ACNet[10]和RepVGG[11]将单个卷积层分解为训练时多分支块。例如,RepVGG中的一个这样的训练时间块包含三个并行层,即:3x3卷积、1x1卷积和标识映射,以及一个add操作符来融合它们的输出特征。在推理过程中,融合过程可以从特征空间移动到权重空间,从而得到一个简单的推理块(只有一个3x3卷积)[11]。这促使我们使用该技术设计具有高效推理体系结构的轻量级cnn。
最近,MobileOne[41]还采用了结构重新参数化技术,为iPhone12中功能强大的NPU设计了具有大FLOPs的移动骨干,去除快捷键(或跳过连接)。然而,在本文中,我们注意到,在极其轻量级的cnn中,这种捷径是必要的,而且不会带来太多的时间成本(见第4.3节)。我们利用重参数化技术,替代了Ghost模块中低效的拼接运算符,隐式实现了特征重用,使我们的RepGhostNet在计算受限的移动设备上更加高效。
在本节中,我们将首先回顾用于特征重用的连接操作,并介绍如何利用结构重新参数化来实现这一点。在此基础上,提出了一种用于隐式特征重用的新参数化模块RepGhost。在此之后,我们描述了在此模块上构建的硬件高效网络,称为RepGhostNet。
特征重用技术已广泛应用于CNNs中以扩大网络容量,如DenseNet[24]、ShuffleNetV2[31]和GhostNet[14]。大多数方法利用连接算子组合来自不同层的特征映射,以更低的成本产生更多的特征。连接是不受参数和flops影响的,但是由于硬件设备上复杂的内存拷贝,它的计算成本是不可忽略的。为了解决这个问题,我们提供了一种隐式实现特征重用的新视角:通过结构重新参数化实现特征重用。
连接成本。如上所述,串联的内存拷贝给硬件设备带来不可忽略的计算成本。例如,设 M 1 ∈ R N × C 1 × H × W M_{1} \in \mathbb{R}^{N \times C_{1} \times H \times W} M1∈RN×C1×H×W和 M 2 ∈ R N × C 2 × H × W M_{2} \in \mathbb{R}^{N \times C_{2} \times H \times W} M2∈RN×C2×H×W为数据布局NCHW 1中单独连接通道维的两个特征映射。在处理M1和M2时所需的最大连续内存块分别是 b 1 ∈ R 1 × C 1 × H × W b_{1} \in \mathbb{R}^{1 \times C_{1} \times H \times W} b1∈R1×C1×H×W和 b 2 ∈ R 1 × C 2 × H × W b_{2} \in \mathbb{R}^{1 \times C_{2} \times H \times W} b2∈R1×C2×H×W。连接b1和b2是直接的,这个过程会重复N次。对于布局NHWC[1]中的数据,最大的连续内存块要小得多,即 b 1 ∈ R 1 × 1 × 1 × C 1 b_{1} \in \mathbb{R}^{1 \times 1 \times 1 \times C_{1}} b1∈R1×1×1×C1,这使得复制过程更加复杂。而对于像Add这样的元素操作符,最大的连续内存块是M1和M2本身,这使得操作更加容易。
为了定量地评估连接操作,我们分析了它在移动设备上的实际运行时。我们以GhostNet 1.0x[14]为例,将其所有的拼接操作符替换为添加操作符进行比较,这也是一种处理不同特征的简单操作符,成本较低[17,36]。注意这两个算符作用于形状完全相同的张量上。表1给出了对应网络中所有32个对应算子的累计运行时间。连接成本是添加的2倍。我们还在图2中绘制了不同批次大小下的时间百分比。随着批处理大小的增加,concatation和add之间的runtime百分比差距越大,这与我们的数据布局分析是一致的。
重新参数化vs.连接 设 y ∈ R N × C out × H × W y \in \mathbb{R}^{N \times C_{\text {out }} \times H \times W} y∈RN×Cout ×H×W表示带有 C o u t C_{out} Cout通道的输出, x ∈ R N × C i n × H × W x \in \mathbb{R}^{N \times C_{i n} \times H \times W} x∈RN×Cin×H×W表示要处理和重用的输入。 Φ i ( x ) , ∀ i = 1 , … , s − 1 \Phi_{i}(x), \forall i=1, \ldots, s-1 Φi(x),∀i=1,…,s−1表示应用于x的其他神经网络层,如卷积或BN。在不丧失一般性的情况下,通过拼接的特征重用可以表示为:
y = Cat ( [ x , Φ 1 ( x ) , … , Φ s − 1 ( x ) ] ) y=\operatorname{Cat}\left(\left[x, \Phi_{1}(x), \ldots, \Phi_{s-1}(x)\right]\right) y=Cat([x,Φ1(x),…,Φs−1(x)])
其中Cat是拼接操作。它只保留现有的特征映射,将信息处理留给其他操作员。例如,在连接层之后通常会有一个1×1密集卷积层来处理信道信息[14,24,37]。然而,如表1所示,对于硬件设备上的特性重用,连接并不是没有成本的,这促使我们寻找一种更有效的方法。
近年来,结构重新参数化被视为一种无成本的技术来提高cnn的性能[10,11,41]。受此启发,我们注意到结构重新参数化也可以被视为隐式特征重用的一种有效技术,从而设计出更高效的硬件cnn。例如,结构重参数化通常在训练过程中利用多个线性算子生成不同的特征映射,并通过参数融合将所有算子融合为一个,实现快速推理。也就是说,它将融合过程从特征空间转移到权重空间,这可以被视为特征重用的一种隐式方式。根据等式1中的符号,通过结构重新参数化的特征重用可表示为:
y = Add ( [ x , Φ 1 ( x ) , … , Φ s − 1 ( x ) ] ) = Φ ∗ ( x ) y=\operatorname{Add}\left(\left[x, \Phi_{1}(x), \ldots, \Phi_{s-1}(x)\right]\right)=\Phi^{*}(x) y=Add([x,Φ1(x),…,Φs−1(x)])=Φ∗(x)
与拼接不同,添加还具有特征融合的作用。所有操作 Φ i ( x ) , ∀ i = 1 , … , s − 1 \Phi_{i}(x), \forall i=1, \ldots, s-1 Φi(x),∀i=1,…,s−1结构再参数化的S−1为线性函数,最终融合为 Φ ∗ ( x ) \Phi * (x) Φ∗(x)。特征融合过程是在权值空间中完成的,不会引入额外的推理时间,使得最终的体系结构比拼接更高效。如图2所示,通过结构重新参数化实现特征重用比连接节省7% ~ 11%的时间,增加5% ~ 8%的时间。基于这一概念,我们在下一小节中提出了一个硬件高效的RepGhost模块,通过结构重新参数化实现特征重用。
为了通过重新参数化来利用特性重用,本小节将介绍Ghost模块如何演变为RepGhost模块。由于连接运算符的存在,直接对原始Ghost模块进行重参数化并非易事。为了派生RepGhost模块,我们做了一些调整。如图3所示,我们从图3a的Ghost模块开始,逐步调整内部组件。
添加操作。 由于3.1节讨论的拼接对特征重用的效率不高,我们首先用添加算子[17,36]替换拼接算子,得到图3b中的模块b。它应该提供如表1和图2所示的更高的效率。
向后移动ReLU。 本着结构重新参数化的精神[10,11],我们将深度卷积层后的ReLU在添加算子后向后移动,即i:e:,如图3c所示模块c。这种移动使模块满足结构再参数化规则[10,11],从而可以融合到模块e中进行快速推理。将ReLU向后移动的效果将在第4.3节讨论。
Re-parameterization。 c模块作为一个重参数化模块,在重参数化结构上比恒等映射更灵活[10,41]。如图3d所示的d模块,我们简单地在identity分支中加入了Batch Normalization(BN)[25],这在训练过程中带来了非线性,可以融合快速推理。这个模块被标记为我们的RepGhost模块。我们还将在第4.3节探讨其他的重新参数化结构。
快速推理。 模块c和模块d作为重新参数化的模块,可以融合到图3e中的模块e中进行快速推断。我们的RepGhost模块有一个简单的推理结构,只包含规则的卷积层和ReLU,使其硬件高效[11]。具体来说,特征融合过程是在权重空间中进行的,而不是在特征空间中,即每个分支的融合参数,并产生一个简化的结构,以快速推断,这是无成本的。由于每个算子的线性性,参数融合过程是直接的(详见[10,11])。
与Ghost模块的比较。 GhostNet[14]提出通过低成本的操作生成更多的特征图,从而以低成本的方式扩大网络容量。在RepGhost模块中,我们进一步提出了一种更有效的方法,通过重参数化来生成和融合不同的特征映射。与Ghost模块不同的是,RepGhost模块去掉了低效的拼接运算符,节省了大量的推理时间。信息融合过程由隐式添加算子执行,而不依赖于其他卷积层。
在GhostNet[14]中,Ghost模块有一个比率s来控制复杂度。根据等式1, C in = 1 s ∗ C out C_{\text {in }}=\frac{1}{s} * C_{\text {out }} Cin =s1∗Cout 和其余 s − 1 s ∗ C out \frac{s-1}{s} * C_{\text {out }} ss−1∗Cout 通道由深度卷积 Φ i , ∀ i = 1 , … , s − 1 \Phi_{i}, \forall i=1, \ldots, s-1 Φi,∀i=1,…,s−1产生。而RepGhost的最终输出 C o u t C_{out} Cout等于 C i n C_{in} Cin。RepGhost模块在训练过程中产生 s ∗ C i n s * C_{in} s∗Cin通道,并将它们融合到Cin通道中进行推理,既保持了不同特征图的生成,又节省了硬件设备上的推理时间。
RepGhost瓶颈。 基于图4a中的Ghost瓶颈[14],我们直接用RepGhost模块替换Ghost模块来构建我们的RepGhost瓶颈。然而,RepGhost模块中的添加操作符与输出通道中的Ghost模块中的拼接操作符不同。比如是后者的50%。简单地改变下面一层的输入通道将会严重改变网络。为了解决这个问题,RepGhost瓶颈保持输入和输出通道号与Ghost瓶颈相同。如图4b所示,RepGhost瓶颈相对于Ghost瓶颈在通道设置上有两个变化:a)中间通道“更薄”,b)第二深度卷积层通道“更厚”。首先,在通道减少的特征图上应用downsample和SE使RepGhost瓶颈更加有效。其次,在信道增加的特征图上进行深度卷积,使网络容量[35]增大,从而使RepGhost瓶颈更加有效。由于结构的重新参数化,RepGhost瓶颈在推理过程中只包含2个分支(图4c):一个捷径和一个操作符链(1×1卷积、深度卷积和ReLU),这使得它在内存成本和快速推理方面更高效[11,31]。我们将在第4.3节讨论快捷方式的必要性,并分析移动设备上的实际运行时,以演示克服Ghost瓶颈的硬件效率。
RepGhostNet。 通过上面构建的RepGhost瓶颈及其输入和输出通道号与Ghost瓶颈相同,RepGhostNet可以简单地通过用我们的RepGhost瓶颈替换GhostNet[14]中的Ghost瓶颈来构建。体系结构细节如表2所示。RepGhostNet栈除输入和输出层之外的RepGhost瓶颈。一个具有16个通道的密集卷积层处理输入数据,一堆正常的1×1卷积和平均池预测最终输出。我们根据RepGhost瓶颈的输入大小将其分组为5组,并为每组中除最后一个之外的最后一个瓶颈设置stride=2。注意,我们稍微改变了组4中的中间通道,以保持组[34]中的通道不减少。我们同样应用SE块[21],并像GhostNet[14]一样在RepGhostNet中使用ReLU作为非线性函数。下面[14,31]使用宽度乘子α来缩放网络,记为RepGhostNet α×。
在本节中,为了展示所提出的RepGhost模块和RepGhostNet的优越性,我们在ImageNet 2012分类基准[9]、MS COCO 2017对象检测和实例分割基准[29]上评估了该体系结构,并与其他最先进的轻量级cnn进行了公平的比较。我们还利用张量计算引擎MNN[26]在基于arm的手机上评估了所有模型的延迟。
数据集。 ImageNet[9]已经成为可视化模型的标准基准。它包含1,000个类,包含1.28M的训练图像和50k的验证图像。我们使用所有的训练数据和评估模型的验证图像。报告了单作物的Top-1和Top-5精度。
MS COCO数据集[29]也是可视化模型的一个著名基准。我们使用COCO 2017 trainval35k分割训练我们的模型,并使用5K图像评估minival分割,遵循开源mmdetection[4]库中的设置。
延迟。 张量计算引擎MNN[26]是一个轻量级的深度学习框架,在移动设备上提供高效的推理。因此,我们使用MNN在基于arm的单线程手机上评估模型的延迟。如果没有说明,批处理大小默认设置为1。每个模型运行100次,延迟记录为它们的平均值。
为了演示我们提出的RepGhostNet的有效性和效率,我们将其与最先进的轻量级cnn进行比较,包括ImageNet基准测试的准确性和基于arm的手机上的实际运行时。竞争对手包括MobileNet系列[19,35],ShuffleNetV2 [31], GhostNet [14], MobileNeXt [48], MobileOne [41], ProxylessNAS [27], efficient entnet[39]。下面提供了培训细节。为了进行公平的比较,我们还使用我们的训练设置重新训练MobileNetV3[19]和GhostNet[14]。
实现细节。 我们采用PyTorch[33]作为我们的训练框架,并使用timm[43]库。在8个NVIDIA V100 gpu上,全局批处理大小设置为1024。动量系数为0.9的标准SGD是优化器。基本学习率为0.6,300期余弦退火,前5期为预热,权值衰减设置为1e-5。分类器层前的退出率设置为0.2。我们还使用了衰减常数为0.9999的EMA(指数移动平均)加权平均法。对于数据增强,除了timm[43]中的常规图像裁剪和翻转外,我们还使用prob 0.2中的随机擦除。对于较大的模型,如RepGhostNet 1.3× (231M),采用自动增强[6]。对于类似resnet50的模型,我们只在[14]之后训练100个epoch。
所有模型根据FLOPs[14]分为三个级别。每个模型对应的延迟在基于arm的手机上进行评估。图1为各模型的时延和准确率图。我们可以看到,我们的RepGhostNet在精度-延迟权衡方面优于其他手工设计的和基于nas的模型。
有效和高效。 如图1和表3所示,我们的RepGhostNet实现了与其他最先进的轻量级CNNs相当甚至更好的精度,但延迟更低,例如,RepGhostNet 0.5×比GhostNet 0.5×快20%,Top-1精度提高0.5%,RepGhostNet 1.0×比MobileNetV3 Large 0.75×快14%,Top-1精度提高0.7%。在具有相当延迟的情况下,我们的RepGhostNet在所有三个级别上都大大超过所有模型,例如,我们的RepGhostNet 0.58×超过GhostNet 0.5× 2.5%的Top-1精度,RepGhostNet 1.11×超过MobileNetV3 large 0.75× 1.6%的Top-1精度。
为了验证我们的RepGhostNet的泛化性,我们使用mmdetection[4]库对COCO对象检测和实例分割基准进行了实验。我们将RepGhostNet与任务中的其他几个骨干进行比较。
实现细节。 我们使用RetinaNet[28]和Mask RCNN[16]分别完成检测任务和实例分割任务。按照[4]中的默认训练设置,我们只替换imagenet预先训练的主干,并在8个NVIDIA V100 gpu中训练模型12个epochs。同步BN也已启用。报告的是0.5:0.05:0.95的mAP@IoU。在时延方面,我们对基于arm的手机上单阶段模型RetinaNet的运行时间进行了评估。我们还报告了每个骨干的延迟(见表3),以供参考。
结果。 如表4所示的检测和实例分割结果,我们的RepGhostNet在两个任务上都优于MobileNetV2[35]、MobileNetV3[19]和GhostNet[14],推理速度更快。例如,在延迟相当的情况下,RepGhostNet 1.3×在两个任务中都超过GhostNet 1.1×超过1%的mAP, RepGhostNet 1.5×在两个任务中都超过MobileNetV2 1.0×超过2%的mAP。
在本小节中,我们进行实验来验证我们的体系结构设计。首先,在对大模型ResNet50[17]的泛化方面比较了RepGhost模块和Ghost模块。然后对RepGhost模块的不同重参数化结构进行了测试和验证。最后,考虑到现代CNNs正在逐渐抛弃快捷方式(即跳过连接)[11,41],我们讨论了一个问题:对于轻量级CNNs来说,是否必须使用快捷方式?
与Ghost-Res50的比较。 为了验证RepGhost模块对大型模型的生成,我们将其与[14]中报告的Ghost-Res50进行比较。我们用RepGhost模块替换Ghost- res50中的Ghost模块,得到RepGhost- res50。所有模型都使用相同的训练设置进行训练。手机上的MNN延迟评估与表3相同。对于TRT延迟,我们首先将模型转换为TensorRT[40],然后在批处理大小为32的T4 GPU上在框架上运行每个模型100次,并报告平均延迟。结果如表5所示。我们可以看到RepGhost-Res50在CPU和GPU上都明显比Ghost-Res50快,而且精度相当。特别地,RepGhost-Res50 (s=2)在MNN和TensorRT推理中分别比Ghost-Res50 (s=4)获得22%和44%的加速。
Re-parameterization结构。 为了验证重参数化结构,我们在RepGhostNet 0.5×上进行消融研究,方法是交替单位映射分支(图3c中模块c)中的组件,如BN、1×1深度卷积(后面是一个BN)和单位映射本身[10,11,41]。从表6的结果可以看出,采用BN重参数化的RepGhostNet 0.5×性能最好,我们将其作为所有其他RepGhostNet的默认重参数化结构。我们将这种改进归因于BN的训练时间非线性,它提供了比恒等映射更多的信息。1×1深度卷积后面也跟着BN,因此它的参数由于后面的归一化对特征没有作用,可能会使BN统计不稳定,我们推测这是BN性能不佳的原因。注意,表6中的所有模型都可以融合到一个相同的高效推理模型中,除了最后一行。特别地,我们在3×3深度卷积之后插入一个ReLU,就像Ghost模块一样,以验证向后移动ReLU是安全的,就像我们在图3c中所做的那样。此外,与MobileOne[41]相比,我们的重参数化结构要简单得多,即RepGhostNet中只有一个BN层。更简单的重新参数化结构使得RepGhostNet的额外培训成本可以忽略不计。
捷径的必要性。 去除快捷方式是近年来CNNs架构设计中备受关注的问题[11,41]。为了验证轻量级cnn中快捷方式的必要性,我们去掉RepGhostNet中的快捷方式,并在基于arm的手机上评估其延迟和在ImageNet数据集上的准确性。具体来说,我们只去掉了身份映射的快捷方式,保留了下采样的快捷方式块,以保持模型参数和flop的公平比较。据统计,RepGhostNet中删除了11个身份映射快捷方式。我们使用相同的训练设置和重参数化结构训练有和没有捷径的模型。
表7给出了带有和不带有快捷方式的RepGhostNet的准确率和延迟时间。显然,快捷方式并不会严重影响实际运行时间,反而会帮助优化过程[17]。一方面,去除较大模型(RepGhostNet 2×)的快捷键对精度的影响小于较小模型,这可能意味着快捷键对于轻量cnn比较大模型更重要,例如RepVGG[11]和MobileOne[41]。另一方面,尽管快捷方式增加了内存访问成本(因此影响运行时性能),但这种影响对于计算受限的移动设备是可以忽略的,如表7所示。综上所述,我们确认了轻量cnn必须使用快捷方式,并将该快捷方式保留在我们的RepGhostNet中。
为了在轻量级cnn架构设计中有效地利用特征重用,本文提出了一种新的视角,即通过结构重参数化技术来隐式实现特征重用,而不是使用广泛但效率低的连接操作。在此基础上,提出了一种新颖的、硬件效率高的RepGhost模块,用于隐式特征重用。提出的RepGhost模块在训练时融合来自不同层的特征,并在推理前的权值空间中进行融合过程,从而实现了一种简化和硬件高效的快速推理架构。基于RepGhost模块,我们开发了一种名为RepGhostNet的硬件高效轻型cnn,它在移动设备的精度-延迟权衡方面展示了几个视觉任务的最新技术。