清华&Meta提出HorNet,用递归门控卷积进行高阶空间相互作用
视觉Transformer的最新进展表明,在基于点积自注意力的新空间建模机制驱动的各种任务中取得了巨大成功。在本文中,作者证明了视觉Transformer背后的关键成分,即输入自适应、长程和高阶空间交互,也可以通过基于卷积的框架有效实现。作者提出了递归门卷积(g n Conv),它用门卷积和递归设计进行高阶空间交互。新操作具有高度灵活性和可定制性,与卷积的各种变体兼容,并将自注意力中的二阶交互扩展到任意阶,而不引入显著的额外计算。g nConv可以作为一个即插即用模块来改进各种视觉Transformer和基于卷积的模型。基于该操作,作者构建了一个新的通用视觉主干族,名为HorNet。在ImageNet分类、COCO对象检测和ADE20K语义分割方面的大量实验表明,HorNet在总体架构和训练配置相似的情况下,优于Swin Transformers和ConvNeXt。HorNet还显示出良好的可扩展性,以获得更多的训练数据和更大的模型尺寸。除了在视觉编码器中的有效性外,作者还表明g n Conv可以应用于任务特定的解码器,并以较少的计算量持续提高密集预测性能。本文的结果表明,g n Conv可以作为一个新的视觉建模基本模块,有效地结合了视觉Transformer和CNN的优点。
论文地址:https://arxiv.org/abs/2207.14284
代码地址:https://github.com/raoyongming/HorNet
- Motivation
- 方法
- 实验
- 小结
- HorNet系列结合YOLOv5、YOLOv7目标检测应用
1. Motivation
自AlexNet在过去十年中引入以来,卷积神经网络(CNN)在深度学习和计算视觉方面取得了显著进展。CNN有许多优良的特性,使其自然适用于广泛的视觉应用。平移等变性为主要视觉任务引入了有用的归纳偏差,并实现了不同输入分辨率之间的可传递性。高度优化的实现使其在高性能GPU和边缘设备上都非常有效。架构的演变进一步增加了其在各种视觉任务中的受欢迎程度。
基于Transformer的架构的出现极大地挑战了CNN的主导地位。通过将CNN架构中的一些成功设计与新的自注意力机制相结合,视觉Transformer在各种视觉任务上表现出领先的性能,如图像分类、物体检测、语义分割和视频理解。是什么让视觉Transformer比CNN更强大?通过学习视觉Transformer方面的新设计,已经做出了一些努力来改进CNN架构。然而,目前工作尚未从高阶空间交互的角度分析点积自注意力在视觉任务中的有效性。
虽然由于非线性,深度模型中的两个空间位置之间存在复杂且通常高阶的交互,但自注意力和其他动态网络的成功表明,结构设计引入的显式和高阶空间交互有利于提高视觉模型的建模能力。如上图所示,普通卷积运算没有明确考虑空间位置(即红色特征)及其相邻区域(即浅灰色区域)之间的空间交互。增强卷积运算,如动态卷积,通过生成动态权重引入显式空间交互。Transformers中的点积自注意力操作由两个连续的空间交互组成,通过在查询、键和值之间执行矩阵乘法。视觉建模基本操作的趋势表明,可以通过增加空间交互的顺序来提高网络容量。
在本文中,作者总结了视觉Transformers成功背后的关键因素是通过自注意力操作实现输入自适应、远程和高阶空间交互的空间建模新方法。虽然之前的工作已经成功地将元架构、输入自适应权重生成策略和视觉Transformers的大范围建模能力迁移到CNN模型,但尚未研究高阶空间交互机制。作者表明,使用基于卷积的框架可以有效地实现所有三个关键要素。作者提出了递归门卷积(g nConv),它与门卷积和递归设计进行高阶空间交互。与简单地模仿自注意力中的成功设计不同,g n Conv有几个额外的优点:1)**效率。**基于卷积的实现避免了自注意力的二次复杂度。在执行空间交互期间逐步增加通道宽度的设计也使能够实现具有有限复杂性的高阶交互;2) 可扩展。将自注意力中的二阶交互扩展到任意阶,以进一步提高建模能力。由于没有对空间卷积的类型进行假设,g n Conv与各种核大小和空间混合策略兼容;3) 平移等变性。g n Conv完全继承了标准卷积的平移等变性,这为主要视觉引入了有益的归纳偏置。
基于g n Conv,作者构建了一个新的通用视觉主干族,名为HorNet。作者在ImageNet分类、COCO对象检测和ADE20K语义分割上进行了大量实验,以验证本文模型的有效性。凭借相同的7×7卷积核/窗口和类似的整体架构和训练配置,HorNet优于Swin和ConvNeXt在不同复杂度的所有任务上都有很大的优势。通过使用全局卷积核大小,可以进一步扩大差距。HorNet还显示出良好的可扩展性,可以扩展到更多的训练数据和更大的模型尺寸,在ImageNet上达到87.7%的top-1精度,在ADE20K val上达到54.6%的mIoU,在COCO val上通过ImageNet-22K预训练达到55.8%的边界框AP。除了在视觉编码器中应用g n Conv外,作者还进一步测试了在任务特定解码器上设计的通用性。通过将g n Conv添加到广泛使用的特征融合模型FPN,作者开发了HorFPN来建模不同层次特征的高阶空间关系。作者观察到,HorFPN还可以以较低的计算成本持续改进各种密集预测模型。结果表明,g n Conv是一种很有前景的视觉建模方法,可以有效地结合视觉Transofrmer和CNN的优点。
2. 方法
2.1 gnConv: Recursive Gated Convolutions
在本节中,将介绍g n Conv,这是一种实现长期和高阶空间相互作用的有效操作。g n Conv由标准卷积、线性投影和元素乘法构建,但具有与自注意力类似的输入自适应空间混合功能。
Input-adaptive interactions with gated convolution
视觉Transformer最近的成功主要取决于视觉数据中空间交互的正确建模。与只需使用静态卷积核来聚合相邻特征的CNN不同,视觉Transformer应用多头自注意力动态生成权重以混合空间token。然而,二次复杂度在很大程度上阻碍了视觉Transformer的应用,尤其是在下游任务中,包括需要更高分辨率特征图的分割和检测。在这项工作中,作者没有像以前的方法那样降低自注意力的复杂性,而是寻求一种更有效的方法,通过卷积和完全连接层等简单操作来执行空间交互。
本文方法的基本操作是门卷积(gConv)。 x ∈ R H W × C \mathbf{x} \in \mathbb{R}^{H W \times C} x∈RHW×C是输入特征,门卷积的输出 y = g Conv ( x ) \mathbf{y}=g \operatorname{Conv}(\mathbf{x}) y=gConv(x)可以写成:
[ p 0 H W × C , q 0 H W × C ] = ϕ i n ( x ) ∈ R H W × 2 C \left[\mathbf{p}_{0}^{H W \times C}, \mathbf{q}_{0}^{H W \times C}\right]=\phi_{\mathrm{in}}(\mathbf{x}) \in \mathbb{R}^{H W \times 2 C} [p0HW×C,q0HW×C]=ϕin(x)∈RHW×2C
p 1 = f ( q 0 ) ⊙ p 0 ∈ R H W × C , y = ϕ out ( p 1 ) ∈ R H W × C , \mathbf{p}_{1}=f\left(\mathbf{q}_{0}\right) \odot \mathbf{p}_{0} \in \mathbb{R}^{H W \times C}, \quad \mathbf{y}=\phi_{\text {out }}\left(\mathbf{p}_{1}\right) \in \mathbb{R}^{H W \times C}, p1=f(q0)⊙p0∈RHW×C,y=ϕout (p1)∈RHW×C,
其中 ϕ i n , ϕ o u t \phi_{\mathrm{in}}, \phi_{\mathrm{out}} ϕin,ϕout是执行通道混合的线性投影层, f f f是深度卷积。 p 1 ( i , c ) = ∑ j ∈ Ω i w i → j c q 0 ( j , c ) p 0 ( i , c ) p_{1}^{(i, c)}=\sum_{j \in \Omega_{i}} w_{i \rightarrow j}^{c} q_{0}^{(j, c)} p_{0}^{(i, c)} p1(i,c)=∑j∈Ωiwi→jcq0(j,c)p0(i,c),其中 Ω i \Omega_{i} Ωi是以i为中心的局部窗口,w表示f的卷积权重。因此,上述公式通过元素乘法明确引入了相邻特征 p 0 ( i ) \mathbf{p}_{0}^{(i)} p0(i)和 q 0 ( i ) \mathbf{q}_{0}^{(i)} q0(i)之间的相互作用。作者将gConv中的相互作用视为一阶相互作用,因为每个 p 0 ( i ) \mathbf{p}_{0}^{(i)} p0(i)仅与其相邻特征 q 0 ( j ) \mathbf{q}_{0}^{(j)} q0(j)相互作用一次。
High-order interactions with recursive gating
在与gConv实现有效的1阶空间相互作用后,作者设计了g n Conv,这是一种递归门卷积,通过引入高阶相互作用来进一步增强模型容量。形式上,首先使用 ϕ in \phi_{\text {in }} ϕin 获得一组投影特征 p 0 \mathbf{p}_{0} p0和 { q k } k = 0 n − 1 \left\{\mathbf{q}_{k}\right\}_{k=0}^{n-1} {qk}k=0n−1 :
[ p 0 H W × C 0 , q 0 H W × C 0 , … , q n − 1 H W × C n − 1 ] = ϕ i n ( x ) ∈ R H W × ( C 0 + ∑ 0 ≤ k ≤ n − 1 C k ) \left[\mathbf{p}_{0}^{H W \times C_{0}}, \mathbf{q}_{0}^{H W \times C_{0}}, \ldots, \mathbf{q}_{n-1}^{H W \times C_{n-1}}\right]=\phi_{\mathrm{in}}(\mathbf{x}) \in \mathbb{R}^{H W \times\left(C_{0}+\sum_{0 \leq k \leq n-1} C_{k}\right)} [p0HW×C0,q0HW×C0,…,qn−1HW×Cn−1]=ϕin(x)∈RHW×(C0+∑0≤k≤n−1Ck)
然后,作者通过以下方式递归执行gating卷积:
p k + 1 = f k ( q k ) ⊙ g k ( p k ) / α , k = 0 , 1 , … , n − 1 \mathbf{p}_{k+1}=f_{k}\left(\mathbf{q}_{k}\right) \odot g_{k}\left(\mathbf{p}_{k}\right) / \alpha, \quad k=0,1, \ldots, n-1 pk+1=fk(qk)⊙gk(pk)/α,k=0,1,…,n−1
其中,将输出缩放 1 / α 1 / \alpha 1/α以稳定训练。 { f k } \left\{f_{k}\right\} {fk}是一组深度卷积层, { g k } \left\{g_{k}\right\} {gk}用于按不同阶匹配维数。
g k = { Identity , k = 0 Linear ( C k − 1 , C k ) , 1 ≤ k ≤ n − 1 g_{k}=\left\{\begin{array}{ll}\text { Identity }, & k=0 \\ \operatorname{Linear}\left(C_{k-1}, C_{k}\right), & 1 \leq k \leq n-1\end{array}\right. gk={ Identity ,Linear(Ck−1,Ck),k=01≤k≤n−1
最后,作者将最后一个递归步骤 q n \mathbf{q}_{n} qn的输出馈送到投影层 ϕ o u t \phi_{\mathrm{out}} ϕout,以获得g nConv的结果。从递归公式方程可以很容易地看出, p k \mathbf{p}_{k} pk的交互阶在每一步后将增加1。因此,可以看到,g nConv实现了n阶空间相互作用。还值得注意的是,只需要一个f来执行深度卷积,以串联特征 { q k } k = 0 n − 1 \left\{\mathbf{q}_{k}\right\}_{k=0}^{n-1} {qk}k=0n−1,而不是像上面等式中那样计算每个递归步骤中的卷积,这可以进一步简化实现并提高GPU的效率。为了确保高阶交互不会引入太多计算开销,作者将每个阶中的通道维度设置为:
C k = C 2 n − k − 1 , 0 ≤ k ≤ n − 1 C_{k}=\frac{C}{2^{n-k-1}}, \quad 0 \leq k \leq n-1 Ck=2n−k−1C,0≤k≤n−1
该设计表明,以从粗到细的方式执行交互,其中较低的阶数是用较少的通道计算的。此外, ϕ in ( x ) \phi_{\text {in }}(\mathbf{x}) ϕin (x)的通道维数正好为2C,即使n增加,总的浮点也可以严格有界。
F L O P s ( g n C o n v ) < H W C ( 2 K 2 + 11 / 3 × C + 2 ) \mathrm{FLOPs}\left(g^{n}\right. Conv )<H W C\left(2 K^{2}+11 / 3 \times C+2\right) FLOPs(gnConv)<HWC(2K2+11/3×C+2)
其中K是深度卷积的核大小。因此,g n Conv以与卷积层类似的计算成本实现高阶交互。
Long-term interactions with large kernel convolutions
视觉Transformer和传统CNN的另一个区别是感受野。传统的CNN通常在整个网络中使用3×3卷积,而视觉Transformer在整个特征图上或在相对较大的局部窗口(例如7×7)内计算自注意力。视觉Transformer中的感受野可以更容易地捕捉长期依赖关系,这也是公认的视觉Transformer的关键优势之一。受这种设计的启发,最近有一些努力将大型内核卷积引入CNN。为了使g n Conv能够捕捉长期交互,作者采用了两种深度卷积f实现:
1)7×7卷积。7×7是Swin Transformers和ConvNext的默认窗口/内核大小。[研究表明,内核大小在ImageNet分类和各种下游任务上具有良好的性能。作者遵循此配置,与视觉Transformers和现代CNN的代表性工作进行了公平比较。
2)全局滤波器(GF)。GF层将频域特征与可学习的全局滤波器相乘,这相当于具有全局核大小和圆形填充的空域卷积。通过使用全局滤波器处理一半通道和使用3×3深度卷积处理另一半通道来使用GF层的修改版本,并且仅在后期使用GF层来保留更多的局部细节。
Spatial interactions in vision models
作者从空间交互的角度回顾了一些有代表性的视觉模型设计。具体地说,作者对特征 x i \mathbf{x}_{i} xi与其相邻特征 x j , j ∈ Ω \mathbf{x}_{j, j} \in \Omega xj,j∈Ω之间的相互作用感兴趣。视觉Transformer和以前架构之间的关键区别,即视觉Transformer在每个基本块中具有高阶空间交互。这一结果启发作者探索一种能够以两个以上阶数实现更高效和有效空间交互的架构。如上所述,坐着提出的g n Conv可以实现复杂度有界的任意阶交互。还值得注意的是,与深度模型(如宽度和深度)中的其他比例因子类似,在不考虑整体模型容量的情况下简单地增加空间交互的顺序将不会导致良好的权衡。在本文中,作者致力于在分析精心设计的模型的空间交互阶数的基础上,开发一种更强大的视觉建模架构。对高阶空间相互作用进行更深入和正式的讨论可能是未来的一个重要方向。
Relation to dot-product self-attention
尽管本文的g nConv的计算与点积自注意有很大差异,但作者将证明g n Conv也实现了输入自适应空间混合的目标。假设M是通过多头自注意力(MHSA)获得的注意力矩阵,将M写为( m i j c m_{i j}^{c} mijc),因为混合权重可能在通道中变化。位置i处第c个通道的空间混合结果(在最终通道混合投影之前)为:
x M H S A ( i , c ) = ∑ j ∈ Ω i m i j c v ( i , j ) = ∑ j ∈ Ω i ∑ c ′ = 1 C m i j c ‾ w V ( c ′ , c ) x ( j , c ′ ) x_{\mathrm{MHSA}}^{(i, c)}=\sum_{j \in \Omega_{i}} m_{i j}^{c} v^{(i, j)}=\sum_{j \in \Omega_{i}} \sum_{c^{\prime}=1}^{C} \underline{m_{i j}^{c}} w_{V}^{\left(c^{\prime}, c\right)} x^{\left(j, c^{\prime}\right)} xMHSA(i,c)=j∈Ωi∑mijcv(i,j)=j∈Ωi∑c′=1∑CmijcwV(c′,c)x(j,c′)
其中, w V w_{V} wV是V投影层的权重。注意,通过点积运算获得的 m i j m_{i j} mij包含一阶相互作用。另一方面,g n Conv的输出(在 ϕ out \phi_{\text {out }} ϕout 之前)可以写成:
x g n C o n v ( i , c ) = p n ( i , c ) = ∑ j ∈ Ω i ∑ c ′ = 1 C w n − 1 , i → j c g n − 1 ( i , c ) ‾ w ϕ i n ( c ′ , c ) x ( j , c ′ ) ≜ ∑ j ∈ Ω i ∑ c ′ = 1 C h i j c ‾ w ϕ i n ( c ′ , c ) x ( j , c ′ ) x_{g^{n} \mathrm{Conv}}^{(i, c)}=p_{n}^{(i, c)}=\sum_{j \in \Omega_{i}} \sum_{c^{\prime}=1}^{C} \underline{w_{n-1, i \rightarrow j}^{c} \mathbf{g}_{n-1}^{(i, c)}} w_{\phi_{\mathrm{in}}}^{\left(c^{\prime}, c\right)} x^{\left(j, c^{\prime}\right)} \triangleq \sum_{j \in \Omega_{i}} \sum_{c^{\prime}=1}^{C} \underline{h_{i j}^{c}} w_{\phi_{\mathrm{in}}}^{\left(c^{\prime}, c\right)} x^{\left(j, c^{\prime}\right)} xgnConv(i,c)=pn(i,c)=j∈Ωi∑c′=1∑Cwn−1,i→jcgn−1(i,c)wϕin(c′,c)x(j,c′)≜j∈Ωi∑c′=1∑Chijcwϕin(c′,c)x(j,c′)
下图总结了g n Conv的细节实现:
2.2 Model Architectures
HorNet
g NCOV可以替代视觉Transformer或现代CNN中的空间混合层。作者遵循与以前的元架构来构建HorNet,其中基本块包含空间混合层和前馈网络(FFN)。根据模型大小和深度卷积 f k f_k fk的实现,有两个模型变体系列,分别命名为HorNet-T/S/B/L 7×7和HorNet-T/S/B/L GF。作者将流行的Swin Transformer和ConvNeXt视为视觉Transformer和CNN基线,因为本文的模型是基于卷积框架实现的,同时具有像视觉Transformer一样的高阶交互。为了与基线进行公平比较,作者直接遵循Swin Transformers-S/B/L的块数,但在第2阶段插入一个额外的块,以使整体复杂度接近,从而在所有模型变体的每个阶段中产生[2、3、18、2]个块。只需调整通道C的基本数量,以构建不同大小的模型,并按照惯例将4个阶段的通道数量设置为[C、2C、4C、8C]。对于HorNet-T/S/B/L,分别使用C=64、96、128、192。默认情况下,将每个阶段的交互顺序(即,g n Conv中的n)设置为2,3,4,5,这样最粗阶 C 0 C_0 C0的通道在不同阶段中是相同的。
HorFPN
除了在视觉编码器中使用g nConv之外,作者发现本文的g nConv可以是标准卷积的增强替代方案,该方案考虑了基于卷积的各种模型中的高阶空间相互作用。因此,g n Conv替换FPN中用于特征融合的空间卷积,以改善下游任务的空间交互。具体来说,作者在融合不同金字塔级别的特征后添加了g n Conv。对于目标检测,作者在每个级别用g nConv替换自顶向下路径后的3×3卷积。对于语义分割,作者简单地将多阶特征映射串联后的3×3卷积替换为g n Conv,因为最终结果直接从该串联特征预测。作者同样提供了两个实现,称为HorFPN 7×7和HorFPN GF,由 f k f_k fk的选择决定。
3.实验
ImageNet分类实验结果总结在上表中。本文的模型通过最先进的视觉Transformer和CNNs实现了非常有竞争力的性能。值得注意的是,HorNet超越了Swin Transformers和ConvNeXt,它们在各种模型尺寸和设置上都具有相似的整体架构和训练配置。
作者使用常用的UperNet 框架评估了ADE20K数据集上的HorNet语义分割任务。所有模型都使用AdamW 优化器训练160k次迭代,全局batch处理大小为16。训练期间的图像大小对于ImagNet-1k (HorNet-T/S/B) 预训练模型为512 × 512,对于ImageNet-22K预训练模型 (HorNet-L) 为640 × 640。结果总结在上表的左侧部分,其中报告了验证集上的单尺度 (SS) 和多尺度 (MS) mIoU。作者还在COCO数据集上评估了本文的模型。作者采用级联Mask R-CNN框架使用HorNet-T/S/B/L主干进行对象检测和实例分割。继Swin和ConvNeXt之后,作者使用了具有多尺度训练的3× schedule。上表的右侧部分比较了本文的HorNet模型和Swin/ConvNeXt模型的box AP和mask AP。
作者现在展示了所提出的g-nConv的另一个应用,即作为更好的融合模块,可以更好地捕获密集预测任务中不同级别特征之间的高阶交互。具体而言,作者直接修改了分别用于语义分割和对象检测的FPN,如SuperNet和Mask R-CNN。在上表中显示了结果,其中作者比较了本文的HorFPN和标准FPN在不同主干上的性能,包括ResNet-50/101、Swin-S和HorNet-S 7×7。对于语义分割,作者发现HorFPN可以显著减少FLOPs(∼50%),同时实现更好的mIoU。
上表展示了本文方法的消融实验结果。
上图展示了Swin、ConvNeXt和HorNet的权衡比较。
4. 总结
作者提出了递归门卷积(g n Conv),它与门卷积和递归设计进行有效、可扩展和平移等变的高阶空间交互。在各种视觉Transformer和基于卷积的模型中,g n Conv可以作为空间混合层的替代品。在此基础上,作者构建了一个新的通用视觉骨干HorNet家族。大量实验证明了g n Conv和HorNet在常用视觉识别基准上的有效性。
最后笔者已经将 HorNet 网络代码 汇总整理在以下 Github 库中,地址为:
https://github.com/xmu-xiaoma666/External-Attention-pytorch
该库是一个 面向小白的顶会论文核心代码库。里面汇总诸多顶会论文核心代码,包括Attention、Self-Attention、Backbone、MLP、Conv等
5. 将 HorNet 结合 YOLOv5 模型应用
YOLOAir库中 已经将 HorNet网络 应用在 YOLO模型 中
分别以下三种方式与 YOLOv5 模型 结合:
1.在YOLOv5中 使用 gnconv模块 示例
2.在YOLOv5中 使用 HorBlock模块 示例
3.在YOLOv5中 使用 HorNet主干网络 示例
由于篇幅有限,具体 改进代码及方式 可以在以下 GitHub
库中获取改进方式:
面向科研小白的YOLO目标检测库:https://github.com/iscyy/yoloair
参考
https://arxiv.org/abs/2207.14284
https://github.com/raoyongming/HorNet
https://github.com/xmu-xiaoma666/External-Attention-pytorch
https://github.com/iscyy/yoloair