1、事出有因
在架构设计领域,大量通道通常意味着大的网络容量,特别是对于轻型CNN。如Shufflflenet v2所述,给定固定的FLOP,轻型CNN更喜欢使用spare connections (例如,组或深度卷积)和特征重用。它们都得到了很好的探索,近年来提出了许多具有代表性的轻量化CNN。
spare connections 旨在通过低浮点运算(FLOP)保持大的网络容量,而特征重用旨在通过简单地连接不同层的现有特征图来显式地保持大量通道(从而保持大网络容量)。例如,在DenseNet中,重复使用先前层的特征图,并将其发送到阶段内的后续层,从而产生越来越多的通道。
GhostNet建议从廉价操作中生成更多的特征图,并将它们与原始特征图连接起来,以保留大量的通道。
ShuffleNetV2只处理一半的通道,并将另一半保持串联。它们都通过concatenation操作利用特征重用来扩大通道数量和网络容量,同时保持低FLOP。对于特征重用来说,concatenation是一种标准而优雅的操作。因为concatenation是无参数和无FLOP的,但是,它在硬件设备上的计算成本是不可忽略的,因为参数和FLOP不是机器学习模型实际运行时性能的直接成本指标。
如上表所示,RepGhost作者发现,由于concatenation复杂的内存拷贝,concatenation操作比硬件设备上的add操作效率低得多。因此,值得注意的是,探索一种更好、更硬件高效的方式,以实现concatenation操作之外的特征复用。
2、寻求答案
最近,结构重参化已证明其在CNN体系结构设计中的有效性,包括DiracNet、ExpandNets、ACNet、RepVGG等。它可以将复杂的训练时间体系结构转换为更简单的推理时间体系结构,而无需任何时间成本。受此启发,作者也建议利用结构重参化,而不是广泛使用的concatenation来实现硬件高效架构设计的隐式特征重用。
在本文中提出了一个硬件高效的RepGhost模块,该模块通过结构重参化来隐式实现特征重用。请注意,这不仅仅是将重参化技术应用于Ghost模块中的现有层,而是改进模块以实现更快的推理。具体来说,首先移除了效率低下的concatenation运算符,然后修改架构以满足结构重参化的规则。因此,在推理之前,特征重用过程可以从特征空间移动到权重空间,使模块高效。
2.1、RepGhost模块
为了通过重参化来利用特征重用,这里介绍Ghost模块如何演变为RepGhost模型。由于concatenation运算符的原因,将重参化直接应用于原始Ghost模块是非常重要的。作者对RepGhost模块进行了若干调整。如图所示,从图3a中的Ghost模块开始,逐步调整内部组件。
1、Add Operator
由于第3.1节中讨论的用于特征重用的concatenation效率低下,作者首先用add运算符替换concatenation运算符,以获得图3b中的模块b。它应提供更高的效率,如表1和图2所示。
2、Moving ReLU Backward
本着结构重新参数化的精神,将深度卷积层之后的ReLU向后移动,即在add运算之后,如图3c所示的模块c。这种移动使模块满足结构重参化的规则,因此可以融合到模块e中进行快速推理。第4.3节将讨论向后移动ReLU的影响。
3、Re-parameterization
作为重参化的模块,模块c在重参化结构中比identity映射更灵活。如图3d所示的模块d,只需在恒等分支中添加批量归一化(BN),这在训练过程中带来非线性,并可以融合用于快速推断。此模块表示为RepGhost模块。在第4.3节中探讨了其他重参化结构。
4、Fast Inference
作为重参化的模块,模块c和模块d可以融合为图3e中的模块用于快速推断。RepGhost模块有一个简单的推理结构,它只包含规则的卷积层和ReLU,使其具有硬件效率。
具体而言,特征融合过程是在权重空间而不是特征空间中进行的,即,融合每个分支的参数并产生用于快速推断的简化结构,这使得其无成本。由于每个算子的线性,参数融合过程是直接的。
5、Comparison with Ghost module
GhostNet建议通过廉价的操作生成更多的特征图,从而以低成本的方式扩大网络容量。在RepGhost模块中进一步提出了一种更有效的方法,通过重参化来生成和融合不同的特征图。与Ghost模块不同,RepGhost删除了效率低下的concatenation运算符,节省了大量的推理时间。信息融合过程由add算子以隐式方式执行,而不是留给其他卷积层。
在GhostNet中,Ghost模块具有比率s以控制复杂性。根据等式1,和其他通道由深度卷积产生。虽然RepGhost的最终输出等于。RepGhost模块产生通道,并将其融合到通道中进行推理,这不仅保持了不同特征图的生成,还节省了硬件设备上的推理时间。
到这里Ghost Module到RepGhost Module的改进就完成了,小伙伴们可以选择插入到你想用的模型之中。
3、参考
[1].RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization.
4、推荐阅读
重参系列 | 只会结构重参说不过去!YOLOv7使用的在线重参OREPA可以再卷一下!
重参系列 | 以伤换杀,RMNet带你一键将ResNet重参为VGG(附代码及ONNX对比)
重参巅峰 | 你喜欢的RepVGG其实也是有缺陷的,RepOpt才是重参的巅峰
