【重参数化】《DiverBranchBlock:BuildingaConvolutio。
。。
摘要:我们提出⼀种通⽤的卷积⽹络构造块⽤来在不增加任何推理时间的前提下提升卷积⽹络的性能。我们将这个块命名为分离分⽀块
(DiverBranchBlock)。通过结合不同尺⼨和复杂度的分离分⽀(包括串联卷积、多尺度卷积和平均池化层)来增加特征空间的⽅
法,它提升了单个卷积的表达能⼒。完成训练后,⼀个DBB(DiverBranchBlock)可以被等价地转换为⼀个单独的卷积操作以⽅便部
署。不同于那些新颖的卷积结构的改进⽅式,DBB让训练时微结构复杂化同时维持⼤规模结构,因此我们可以将它作为任意结构中通⽤卷积
层的⼀种嵌⼊式替代形式。通过这种⽅式,我们能够将模型训练到⼀个更⾼的表现⽔平,然后在推理时转换成原始推理时间的结构。
主要贡献点:
(1)我们建议合并⼤量的微结构到不同的卷积结构中来提升性能,但是维持原始的宏观结构。
(2)我们提出DBB,⼀个通⽤构造块结构,概括六种转换来将⼀个DBB结构转化成⼀个单独卷积,因为对于⽤户来说它是⽆损的。
(3)我们提出⼀个Inception-likeDBB结构实例(Fig1),并且展⽰它在ImageNet、COCOdetection和CityScapes任务中获得性能提
升。
结构重参数化
本⽂和⼀个并发⽹络RepVGG[1]是第⼀个使⽤结构重参数化来命名该思路------使⽤从其他结构转化来的参数确定当前结构的参数。
⼀个之前的⼯作ACNet[2]也可以被划分为结构重参数化,它提出使⽤⾮对称卷积块来增强卷积核的结构(i.e⼗字形结构)。相⽐于DBB,
它被设计来提升卷积⽹络(在没有额外推理时间损失的条件下)。这个流⽔线也包含将⼀个训练好的模型转化为另⼀个。但是,ACNet和
DBB的区别是:ACNet的思想被激发是基于⼀个观察,这个观察是⽹络结构的参数在过去有更⼤的量级,因此寻找⽅法让参数量级更⼤,
然⽽我们关注⼀个不同的点。我们发现平均池化、1x1conv和1x1-kxk串联卷积是更有效的,因为它们提供了不同复杂度的路线,以及
允许使⽤更多训练时⾮线性化。除此以外,ACB结构可以看作是DBB结构的⼀种特殊形式,因为那个1xk和kx1卷积层能够被扩⼤成
kxk(viaTransformVI(Fig.2)),然后合并成⼀个平⽅核(viaTransformII)。
3分离分⽀结构
3.1卷积的线性性
⼀个卷积操作可以表⽰为,其中为输⼊tensor,
为输出tensor。卷积核表⽰为⼀个四阶tensor,
偏置为。将加偏置的操作表⽰为。
因为,在第j个输出通道(h,w)位置的值可以由以下公式给出:
,其中
表⽰输⼊帧I的第c个通道上的⼀个滑动窗,对应输出帧O的坐标(h,w)。从上式可以看出,卷积操
作具有齐次性和加法性。
注意:加法性成⽴的条件是两个卷积具有相同的配置(即通道数、核尺⼨、步长和padding等)。
3.2分离分⽀的卷积
在这⼀⼩节,我们概括六种转换形式(Fig.2)来转换⼀个具有batchnormalization(BN)、branchaddition、depthconcatenation、
multi-scaleoperations、avaragepooling和quencesofconvolutions的DBB分⽀。
TransformI:aconvforconv-BN我们通常会给⼀个卷积配备配备⼀个BN层,它执⾏逐通道正则化和线性尺度放缩。设j为通道索引,
分别为累积的逐通道均值和标准差,分别为学习的尺度因⼦和偏置项,对应输出通道j为
卷积的齐次性允许我们融合BN操作到前述的conv来做推理。在实践中,我们仅仅建⽴⼀个拥有卷积核和偏置,⽤从原始BN序列的
参数转换来的值来赋值。我们为每个输出通道j构造
,
(6)
TransformIIaconvforbranchaddition卷积的加法性确保如果有两个或者多个具有相同配置的卷积层相加,我们能够将它们合并到⼀
个单独的卷积⾥⾯。对于conv-BN,我们应该⾸先执⾏TransformI。很明显的,通过下⾯的公式我们能够合并两个卷积
(7)
上述公式只有在两个卷积拥有相同配置时才成⽴。尽管合并上述分⽀能够在⼀定程度上增强模型,我们希望结合不同分⽀来进⼀步提升模型
性能。在后⾯,我们介绍⼀些分⽀的形式,它们能够等价地被转化为⼀个单独的卷积。在通过多个转化来为每⼀个分⽀构造KxK的卷积之
后,我们使⽤TransformII将所有分⽀合并到⼀个conv⾥⾯。
TransformIII:aconvforquentialconvolutions我们能够合并⼀个1x1conv-BN-kxkconv序列到⼀个kxkconv⾥⾯。我们暂时
假设卷积是稠密的(即组数groups=1)。组数groups>1的情形将会在TransformIV中实现。我们假定1x1和kxk卷积层的核形状分别
是DxCx1x1和ExDxKxK,这⾥D指任意值。⾸先,我们将两个BN层融合到两个卷积层⾥⾯,由此获得
。输出是
(8)
我们期望⽤⼀个单独卷积的核和偏置来表达,设,它们满⾜。对⽅程(8)应⽤卷积的加法性,
我们有
(10)
因为是⼀个1x1conv,它只执⾏逐通道线性组合,没有空间聚合操作。通过线性重组KxK卷积核中的参数,我们能够将
它合并到⼀个KxK的卷积核⾥⾯。容易证明的是,这样的转换可以由⼀个转置卷积实现:
,
其中是由转置获得的tensor张量。⽅程(10)的第⼆
项是作⽤于常量矩阵上的卷积操作,因此它的输出也是⼀个常量矩阵。⽤表达式来说明,设是⼀个常数矩阵,
其中的每个元素都等于p。*是⼀个2D卷积操作,W为⼀个2D卷积核。转换结果就是⼀个常量矩阵,这个常量矩阵是p与所有核元素之和
的乘积,即
基于以上观察,我们构造
。然后,容易证明。
因此我们有
显⽽易见地,对于⼀个zero-pads的KxK卷积,⽅程(8)并不成⽴,因为并不对的
结果做卷积操作(如果有⼀个零元素的额外的圈,⽅程(8)成⽴)。解决⽅案有A)⽤padding配置第⼀个卷积,第⼆个卷积不⽤,B)通过
做pad操作。后者的⼀个有效实现是定制第⼀个BN层,为了(1)如通常的batch-normalize输⼊。(2)计算(通过⽅程
(6))。(3)⽤padbatch-normalized结果,例如⽤⼀圈pad每⼀个通道j。
TransformIV:aconvfordepthconcatenationInception单元使⽤深度concatenation来组合不同分⽀。当每个分⽀都只包含⼀个相
同配置的卷积时,深度concatenation等价于⼀个卷积,它的核在不同的输出通道上concatenation(⽐如我们公式中的第⼀个轴)假设
。我们concatenate它们到。显然地
(16)
TransformIV可以⾮常⽅便地将TransformIII扩展到groupwi(即groups>1)的情景。直觉上,⼀个groupwi卷积将输⼊分割
成g个并⾏的组,单独卷积它们,然后concatenate形成输出。为了代替g-group卷积,我们建⽴⼀个DBB结构,这个结构的所有卷积层有
相同的组g。为了转换⼀个1x1-KxK序列,我们等价地分割它们成为g组,单独执⾏TransformIII,然后concatenate获得输出(如图Fig3
所⽰)。
TransformV:aconvforaveragepooling⼀个作⽤于C通道的核尺⼨为K,步长为s的平均池化层等价于⼀个拥有相同核尺⼨K,步长s的
卷积层。这样的核可以被构造为
(17)
就像⼀个通常的平均池化操作,当s>1时执⾏降采样操作,当s=1时保持相同尺⼨。
TransformVI:aconvformulti-scaleconvolutions考虑⼀个等价于⼀个拥有
相同zeropadding的核。特别地,卷积是格外实⽤的,因为它们能够有效实现。应该对输⼊
作pad操作来对齐滑动窗(Fig4)。
3.3AnInception-likeDBBInstance
我们提出了⼀种DBB结构的表达实例,它的通⽤性和灵活性允许⼤量的灵活实例。像Inception结构,我们使⽤1x1,1x1-
KxK,1x1-AVG去提升原始KxK层。对于1x1-KxK分⽀,我们设置内部通道数等于输⼊,初始化1x1核作为等价矩阵。其他卷积核按正常
初始化。每⼀个conv或者AVG层后⾯都跟⼀个BN层,这提供了训练时⾮线性化。没有这样的⾮线性化,性能提升将是⾮常⼩的(如table
4)。特别地,对于⼀个depthwiDBB,每个卷积应该有相同数量的组,我们在1x1-AVG路径中移除1x1路径和1x1conv,因为1x1
depthwiconv就是⼀个线性放缩。
4.实验
4.1在ImageNet上的实验结果
4.2AblationStudies
不同DBB结构如Figure6所⽰,实验结果如Table4所⽰。
reference
[1].Acnet:Strengtheningthekernelskeletonsforpowerfulcnnviaasymmetricconvolutionblocks.
[2].Repvgg:Makingvgg-styleconvnetsgreatagain.
本文发布于:2022-11-23 10:31:06,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/5239.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |