YoloV5改进策略:Neck和Head改进|ECA-Net:用于深度卷积神经网络的高效通道注意力|多种改进方法|附结构图

news2024/9/25 15:23:36

摘要

本文使用ECA-Net注意力机制加入到YoloV5Neck和Head中。我尝试了多种改进方法,并附上改进结果,方便大家了解改进后的效果,为论文改进提供思路。(改进中。。。。)

论文:《ECA-Net:用于深度卷积神经网络的高效通道注意力》

arxiv.org/pdf/1910.03151.pdf

最近,通道注意机制已被证明在改善深度卷积神经网络(CNN)的性能方面具有巨大潜力。然而,大多数现有方法致力于开发更复杂的注意模块以实现更好的性能,这不可避免地会增加模型的复杂性。 为了克服性能和复杂性折衷之间的矛盾,本文提出了一种有效的信道注意(ECA)模块,该模块仅包含少量参数,同时带来明显的性能提升。 通过剖析SENet中的通道注意模块,我们从经验上表明避免降维对于学习通道注意很重要,并且适当的跨通道交互可以在保持性能的同时显着降低模型的复杂性。因此,我们提出了一种无需降维的局部跨通道交互策略,该策略可以通过一维卷积有效地实现。 此外,我们提出了一种方法来自适应选择一维卷积的内核大小,确定局部跨通道交互的覆盖范围。提出的ECA模块既有效又有效,例如,针对ResNet50主干的模块参数和计算分别为80 vs. 24.37M和 4.7 e − 4 4.7e^{-4 } 4.7e4 GFLOP与3.86 GFLOP,Top-1准确性而言提升超过2% 。 我们使用ResNets和MobileNetV2的骨干广泛评估了ECA模块的图像分类,对象检测和实例分割。 实验结果表明,我们的模块效率更高,同时性能优于同类模块。

1、简介

深卷积神经网络(CNN)已在计算机视觉社区中得到广泛使用,并且在图像分类,对象检测和语义分割等广泛的任务中取得了长足的进步。从开创性的AlexNet [17]开始,许多研究 不断研究以进一步改善深层CNN的性能。 近来,将通道注意力并入卷积块中引起了很多兴趣,显示出在性能改进方面的巨大潜力。 代表性的方法之一是挤压和激励网络(SENet)[14],它可以学习每个卷积块的通道注意,从而为各种深层CNN架构带来明显的性能提升。

在SENet [14]中设置了压缩(即特征聚合)和激励(即特征重新校准)之后,一些研究通过捕获更复杂的通道相关性或结合额外的空间关注来改善SE块。 尽管这些方法已经实现了更高的精度,但是它们通常带来更高的模型复杂度并承受更大的计算负担。 与前面提到的以更高的模型复杂度为代价实现更好的性能的方法不同,本文重点关注的问题是:是否可以以一种更有效的方式来学习有效的通道注意力机制?

为了回答这个问题,我们首先回顾一下SENet中的通道注意力模块。 具体而言,给定输入特征,SE块首先为每个通道独立采用全局平均池化,然后使用两个全连接(FC)层以及非线性Sigmoid函数来生成通道权重。 两个FC层旨在捕获非线性跨通道交互,其中涉及降低维度以控制模型的复杂性。 尽管此策略在后续的通道注意力模块中被广泛使用[33、13、9],但我们的经验研究表明,降维会给通道注意力预测带来副作用,并且捕获所有通道之间的依存关系效率不高且不必要。

在这里插入图片描述

因此,本文提出了一种用于深层CNN的有效通道注意(ECA)模块,该模块避免了维度缩减,并有效捕获了跨通道交互。如图2所示,在不降低维度的情况下进行逐通道全局平均池化之后,我们的ECA通过考虑每个通道及其k个近邻来捕获本地跨通道交互 。实践证明,这种方法可以保证效率和有效性。请注意,我们的ECA可以通过大小为k的快速一维卷积有效实现,其中内核大小k代表本地跨通道交互的覆盖范围,即有多少个相近邻参与一个通道的注意力预测。我们提出了一种自适应确定k的方法,其中交互作用的覆盖范围(即内核大小k)与通道维成比例。如图1和表3所示,与骨干模型[11]相比,带有我们的ECA模块(称为ECA-Net)的深层CNN引入了很少的附加参数和可忽略的计算,同时带来了显着的性能提升。例如,对于具有24.37M参数和3.86 GFLOP的ResNet-50,ECA-Net50的附加参数和计算分别为80和 4.7 e − 4 4.7e^{-4} 4.7e4 GFLOP;同时,在Top-1准确性方面,ECA-Net50优于ResNet-50 2.28%。
在这里插入图片描述

表1总结了现有的注意力模块,包括通道降维(DR),通道交互和轻量级模型方面,我们可以看到,我们的ECA模块通过避免通道降维,同时以极轻量的方式捕获了不同通道间的交互。 为了评估我们的方法,我们在ImageNet-1K [6]和MS COCO [23]上使用不同的深度CNN架构在各种任务中进行了实验。
在这里插入图片描述

本文的主要工作概括如下:(1)解析SE块,并通过经验证明避免降维对于学习有效,适当的不同通道交互对于通道注意力非常重要。(2)基于以上分析,我们尝试通过提出一种有效的通道注意(ECA)来用于深度CNN的极其轻量级的通道注意模块,该模块在增加明显改进的同时,增加了很少的模型复杂性。(3)在ImageNet-1K和MS COCO上的实验结果表明,该方法具有比最新技术更低的模型复杂 度,同时具有非常好的竞争性能。

2、相关工作

事实证明,注意力机制是增强深层CNN的潜在手段。 SE-Net [14]首次提出了一种有效的机制来学习通道关注度并实现并有不错的效果。随后,注意力模块的发展可以大致分为两个方向:(1)增强特征聚合; (2)通道和空间注意的结合。具体来说,CBAM [33]使用平均池和最大池来聚合特征。 GSoP [9]引入了二阶池,以实现更有效的特征聚合。 GE [13]探索了使用深度卷积[5]聚合特征的空间扩展。 CBAM [33]和scSE [27]使用内核大小为k x k的2D卷积计算空间注意力,然后将其与通道注意力结合起来。与非本地(NL)神经网络[32]共享相似的哲学,GCNet [2]开发了一个简化的NL网络并与SE块集成在一起,从而形成了一个用于建模远程依赖性的轻量级模块。 Double Attention Networks(A2-Nets)[4]为图像或视频识别的NL块引入了一种新颖的关联函数。双重注意网络(DAN)[7]同时考虑了基于NL的信道和空间注意,以进行语义分割。但是,由于它们的高模型复杂性,大多数以上基于NL的注意力模块只能在单个或几个卷积块中使用。显然,所有上述方法都集中于提出复杂的注意力模块以提高性能。与它们不同的是,我们的ECA旨在以较低的模型复杂性来学习有效的通道注意力。
img
我们的工作还涉及为轻量级CNN设计的高效卷积。 两种广泛使用的有效卷积是组卷积和深度方向可分离卷积。 如表2所示,尽管这些有效的卷积涉及较少的参数,但它们在注意力模块中的作用不大。我们的ECA模块旨在捕获局部跨通道交互,这与通道局部卷积[36]和通道级卷积具有相似之处 [8]; 与它们不同的是,我们的方法研究了具有自适应内核大小的一维卷积来替换通道注意力模块中的FC层。与分组和深度可分离卷积相比,我们的方法以较低的模型复杂度实现了更好的性能。

3、提出的方法

在本节中,我们首先回顾了SENet[14]中的通道注意力模块(即SE块)。然后,我们通过分析降维和跨通道交互的影响,对SE块进行了实证诊断。这促使我们提出ECA模块。此外,我们开发了一种自适应确定ECA参数的方法,并最后展示了如何将其应用于深度卷积神经网络。

3.1、重新审视SE块中的通道注意力

假设一个卷积块的输出为 X ∈ R W × H × C \mathcal{X} \in \mathbb{R}^{W \times H \times C} XRW×H×C,其中 W , H W, H W,H C C C 分别是宽度、高度和通道维度(即滤波器的数量)。据此,SE块中通道的权重可以计算为

ω = σ ( f { W 1 , W 2 } ( g ( X ) ) ) , (1) \boldsymbol{\omega} = \sigma\left(f_{\left\{\mathbf{W}_{1}, \mathbf{W}_{2}\right\}}(g(\mathcal{X}))\right),\tag{1} ω=σ(f{W1,W2}(g(X))),(1)

其中 g ( X ) = 1 W H ∑ i = 1 , j = 1 W , H X i j g(\mathcal{X}) = \frac{1}{W H} \sum_{i=1, j=1}^{W, H} \mathcal{X}_{i j} g(X)=WH1i=1,j=1W,HXij 是通道级的全局平均池化(GAP), σ \sigma σ 是Sigmoid函数。令

y = g ( X ) \mathbf{y} = g(\mathcal{X}) y=g(X) f { w 1 , w 2 } f_{\left\{\mathbf{w}_{1}, \mathbf{w}_{2}\right\}} f{w1,w2} 的形式为

f { W 1 , W 2 } ( y ) = W 2 ReLU ( W 1 y ) , (2) f_{\left\{\mathbf{W}_{1}, \mathbf{W}_{2}\right\}}(\mathbf{y}) = \mathbf{W}_{2} \text{ReLU}\left(\mathbf{W}_{1} \mathbf{y}\right),\tag{2} f{W1,W2}(y)=W2ReLU(W1y),(2)

其中ReLU表示修正线性单元[25]。为了避免模型复杂度过高, W 1 \mathbf{W}_{1} W1 W 2 \mathbf{W}_{2} W2 的大小分别设置为 C × ( C r ) C \times \left(\frac{C}{r}\right) C×(rC) ( C r ) × C \left(\frac{C}{r}\right) \times C (rC)×C。我们可以看到, f { W 1 , W 2 } f_{\left\{\mathbf{W}_{1}, \mathbf{W}_{2}\right\}} f{W1,W2} 包含了通道注意力块的所有参数。虽然式(2)中的降维可以减少模型复杂度,但它破坏了通道与其权重之间的直接对应关系。例如,单个全连接层使用所有通道的线性组合来预测每个通道的权重。但是式(2)首先将通道特征投影到低维空间,然后再映射回来,这使得通道与其权重之间的对应关系变得间接。

3.2、高效通道注意力(ECA)模块

在回顾了SE块之后,我们进行了实证比较,以分析通道降维和跨通道交互对通道注意力学习的影响。根据这些分析,我们提出了高效的通道注意力(ECA)模块。

3.2.1、避免降维

如上所述,式(2)中的降维使得通道与其权重之间的对应关系变得间接。为了验证其影响,我们将原始的SE块与其三个变体(即SE-Var1、SE-Var2和SE-Var3)进行了比较,它们都不进行降维。如表2所示,没有参数的SE-Var1仍然优于原始网络,这表明通道注意力有能力提高深度卷积神经网络的性能。同时,SE-Var2独立地学习每个通道的权重,这略优于SE块,同时涉及的参数更少。这可能表明,通道与其权重之间需要直接的对应关系,避免降维比考虑非线性的通道依赖性更为重要。此外,使用单个全连接层的SE-Var3的性能优于SE块中使用降维的两个全连接层。上述所有结果都清楚地表明,避免降维有助于学习有效的通道注意力。因此,我们开发了没有通道降维的ECA模块。

3.2.2、局部跨通道交互

对于没有降维的聚合特征 y ∈ R C \mathbf{y} \in \mathbb{R}^{C} yRC,通道注意力可以通过以下方式学习:

ω = σ ( W y ) (3) \boldsymbol{\omega} = \sigma(\mathbf{W} \mathbf{y}) \tag{3} ω=σ(Wy)(3)

其中 W \mathbf{W} W 是一个 C × C C \times C C×C 的参数矩阵。特别是,对于SE-Var2和SE-Var3,我们有

W = { W var  2 = [ w 1 , 1 … 0 ⋮ ⋱ ⋮ 0 … w C , C ] , W var  3 = [ w 1 , 1 ⋯ w 1 , C ⋮ ⋱ ⋮ w 1 , C … w C , C ] , (4) \mathbf{W} = \left\{ \begin{array}{c} \mathbf{W}_{\text {var } 2} = \left[ \begin{array}{ccc} w^{1,1} & \ldots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \ldots & w^{C, C} \end{array} \right], \\ \mathbf{W}_{\text {var } 3} = \left[ \begin{array}{ccc} w^{1,1} & \cdots & w^{1, C} \\ \vdots & \ddots & \vdots \\ w^{1, C} & \ldots & w^{C, C} \end{array} \right], \end{array} \right.\tag{4} W= Wvar 2= w1,100wC,C ,Wvar 3= w1,1w1,Cw1,CwC,C ,(4)

其中,SE-Var2的 W var  2 \mathbf{W}_{\text {var } 2} Wvar 2 是一个对角矩阵,包含 C C C 个参数;SE-Var3的 W var  3 \mathbf{W}_{\text {var } 3} Wvar 3 是一个全矩阵,包含 C × C C \times C C×C 个参数。如式(4)所示,关键区别在于SE-Var3考虑了跨通道交互,而SE-Var2没有,因此SE-Var3实现了更好的性能。这一结果表明,跨通道交互有助于学习通道注意力。然而,SE-Var3需要大量的参数,导致模型复杂度较高,尤其是对于通道数量较大的情况。
在SE-Var2和SE-Var3之间,一个可能的折衷方案是将 W var  2 \mathbf{W}_{\text {var } 2} Wvar 2扩展为块对角矩阵,即:

W G = [ W G 1 ⋯ 0 ⋮ ⋱ ⋮ 0 ⋯ W G G ] (5) \mathbf{W}_{G} = \left[ \begin{array}{ccc} \mathbf{W}_{G}^{1} & \cdots & \mathbf{0} \\ \vdots & \ddots & \vdots \\ \mathbf{0} & \cdots & \mathbf{W}_{G}^{G} \end{array} \right] \tag{5} WG= WG100WGG (5)

在式(5)中,我们将通道分为 G G G组,每组包含 C / G C / G C/G个通道,并在每个组内独立地学习通道注意力,从而以局部的方式捕获跨通道交互。因此,它涉及 C 2 / G C^{2} / G C2/G个参数。从卷积的角度来看,SE-Var2、SE-Var3和式(5)可以分别视为深度可分离卷积、全连接层和组卷积。这里,带有组卷积的SE块(SE-GC)表示为 σ ( G C G ( y ) ) = σ ( W G y ) \sigma\left(\mathrm{GC}_{G}(\mathbf{y})\right) = \sigma\left(\mathbf{W}_{G} \mathbf{y}\right) σ(GCG(y))=σ(WGy)

然而,正如[24]所示,过多的组卷积会增加内存访问成本,从而降低计算效率。此外,如表2所示,具有不同组数的SE-GC相比SE-Var2并没有带来性能提升,这表明它并不是一种有效的捕获局部跨通道交互的方案。原因可能是SE-GC完全忽略了不同组之间的依赖关系。

因此,我们需要寻找一种既能保持计算效率又能有效捕获局部跨通道交互的方法。这引导我们提出了高效通道注意力(ECA)模块,该模块通过一维卷积在相邻通道之间捕获局部跨通道交互,从而实现了在避免降维的同时学习有效的通道注意力。

在本文中,我们探索了另一种捕获局部跨通道交互的方法,旨在同时保证效率和有效性。具体来说,我们采用带状矩阵 W k \mathbf{W}_{k} Wk来学习通道注意力,其中 W k \mathbf{W}_{k} Wk具有如下形式:

[ w 1 , 1 ⋯ w 1 , k 0 0 ⋯ ⋯ 0 0 w 2 , 2 ⋯ w 2 , k + 1 0 ⋯ ⋯ 0 ⋮ ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ 0 ⋯ 0 0 ⋯ w C , C − k + 1 ⋯ w C , C ] (6) \left[ \begin{array}{cccccccc} w^{1,1} & \cdots & w^{1, k} & 0 & 0 & \cdots & \cdots & 0 \\ 0 & w^{2,2} & \cdots & w^{2, k+1} & 0 & \cdots & \cdots & 0 \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots & \vdots \\ 0 & \cdots & 0 & 0 & \cdots & w^{C, C-k+1} & \cdots & w^{C, C} \end{array} \right] \tag{6} w1,100w2,2w1,k00w2,k+1000wC,Ck+100wC,C (6)
在这里插入图片描述

显然,式(6)中的 W k \mathbf{W}_{k} Wk涉及 k × C k \times C k×C个参数,这通常少于式(5)中的参数数量。此外,式(6)避免了式(5)中不同组之间的完全独立性。如表2所示,式(6)中的方法(即ECA-NS)优于式(5)中的SE-GC。对于式(6), y i y_{i} yi的权重仅通过考虑 y i y_{i} yi与其 k k k个邻居之间的交互来计算,即:

ω i = σ ( ∑ j = 1 k w i j y i j ) , y i j ∈ Ω i k , (7) \omega_{i} = \sigma\left(\sum_{j=1}^{k} w_{i}^{j} y_{i}^{j}\right), \quad y_{i}^{j} \in \Omega_{i}^{k}, \tag{7} ωi=σ(j=1kwijyij),yijΩik,(7)

其中 Ω i k \Omega_{i}^{k} Ωik表示 y i y_{i} yi k k k个相邻通道的集合。

一种更有效的方法是让所有通道共享相同的学习参数,即:

ω i = σ ( ∑ j = 1 k w j y i j ) , y i j ∈ Ω i k . (8) \omega_{i} = \sigma\left(\sum_{j=1}^{k} w^{j} y_{i}^{j}\right), \quad y_{i}^{j} \in \Omega_{i}^{k}. \tag{8} ωi=σ(j=1kwjyij),yijΩik.(8)

注意,这种策略可以通过一个具有大小为 k k k的卷积核的快速一维卷积轻松实现,即:

ω = σ ( C 1 D k ( y ) ) , (9) \boldsymbol{\omega} = \sigma\left(\mathrm{C}1\mathrm{D}_{k}(\mathbf{y})\right), \tag{9} ω=σ(C1Dk(y)),(9)

其中C1D表示一维卷积。这里,式(9)中的方法被称为高效通道注意力(ECA)模块,它仅涉及 k k k个参数。如表2所示,我们的ECA模块在 k = 3 k=3 k=3时与SE-var 3取得了相似的结果,但模型复杂度要低得多,这通过适当捕获局部跨通道交互保证了效率和有效性。

3.2.3、局部跨通道交互的覆盖范围

由于我们的ECA模块(9)旨在适当捕获局部跨通道交互,因此需要确定交互的覆盖范围(即一维卷积的核大小 k k k)。对于不同CNN架构中具有不同通道数的卷积块,交互的优化覆盖范围可以通过手动调整获得。然而,通过交叉验证进行手动调整将消耗大量计算资源。组卷积已成功应用于改进CNN架构中[37, 34, 16],在固定组数的情况下,高维(低维)通道涉及长距离(短距离)卷积。基于类似的原理,局部跨通道交互的覆盖范围(即一维卷积的核大小 k k k)与通道维度 C C C成正比是合理的。换句话说, k k k C C C之间可能存在一个映射 ϕ \phi ϕ

C = ϕ ( k ) . (10) C = \phi(k).\tag{10} C=ϕ(k).(10)

最简单的映射是线性函数,即 ϕ ( k ) = γ ⋅ k − b \phi(k) = \gamma \cdot k - b ϕ(k)=γkb。然而,线性函数所表征的关系过于局限。另一方面,众所周知,通道维度 C C C(即滤波器的数量)通常设置为2的幂。因此,我们将线性函数 ϕ ( k ) = γ ⋅ k − b \phi(k) = \gamma \cdot k - b ϕ(k)=γkb扩展到非线性函数,即:

C = ϕ ( k ) = 2 ( γ ⋅ k − b ) . (11) C = \phi(k) = 2^{(\gamma \cdot k - b)}.\tag{11} C=ϕ(k)=2(γkb).(11)

然后,给定通道维度 C C C,可以通过以下方式自适应地确定核大小 k k k

k = ψ ( C ) = ∣ log ⁡ 2 ( C ) γ + b γ ∣ odd , (12) k = \psi(C) = \left|\frac{\log_{2}(C)}{\gamma} + \frac{b}{\gamma}\right|_{\text{odd}},\tag{12} k=ψ(C)= γlog2(C)+γb odd,(12)

其中 ∣ t ∣ odd |t|_{\text{odd}} todd表示 t t t的最接近的奇数。在本文中,我们在所有实验中分别将 γ \gamma γ b b b设置为2和1。显然,通过映射 ψ \psi ψ,高维通道具有更长的交互范围,而低维通道则通过非线性映射进行较短范围的交互。

3.3、深度卷积神经网络中的ECA模块

图2展示了我们的ECA模块的概述。在使用全局平均池化(GAP)聚合卷积特征而不进行降维之后,ECA模块首先自适应地确定核大小 k k k,然后执行一维卷积并跟随Sigmoid函数来学习通道注意力。为了将我们的ECA应用于深度卷积神经网络(CNNs),我们按照[14]中的相同配置,用ECA模块替换SE块。得到的网络被命名为ECA-Net。图3提供了我们ECA模块的PyTorch代码。
在这里插入图片描述

4、实验

在本节中,我们使用所提出的方法在ImageNet [6]和MS COCO [23]数据集上的大规模图像分类,目标检测和实例分割任务进行评估。 具体来说,我们首先评估内核大小对ECA模块的影响,然后与ImageNet上的最新技术进行比较。 然后,我们使用Faster R-CNN [26],Mask R-CNN [10]和RetinaNet [22]验证了ECA-Net在MS COCO上的有效性。

4.1、实现细节

为了评估我们的ECA-Net在ImageNet分类任务上的性能,我们采用了四种广泛使用的卷积神经网络作为骨干模型,包括ResNet-50 [11]、ResNet-101 [11]、ResNet-512 [11]和MobileNetV2 [28]。对于使用ECA的ResNet训练,我们完全采用[11, 14]中的相同数据增强和超参数设置。具体来说,输入图像被随机裁剪为 224 × 224 224 \times 224 224×224大小,并随机进行水平翻转。网络参数通过带有权重衰减1e-4、动量0.9和小批量大小为256的随机梯度下降(SGD)进行优化。所有模型均在100个周期内进行训练,初始学习率设置为0.1,每30个周期减少10倍。对于使用ECA的MobileNetV2训练,我们遵循[28]中的设置,其中网络在400个周期内使用SGD进行训练,权重衰减为4e-5,动量为0.9,小批量大小为96。初始学习率设置为0.045,并以0.98的线性衰减率进行降低。在验证集上进行测试时,首先将输入图像的较短边调整到256,然后使用中心裁剪的 224 × 224 224 \times 224 224×224区域进行评估。所有模型均使用PyTorch工具包实现。

我们进一步在MS COCO数据集上使用Faster R-CNN [26]、Mask R-CNN [10]和RetinaNet [22]评估我们的方法,其中ResNet-50和ResNet-101与FPN [21]一起用作骨干模型。我们使用MMDetection工具包[3]实现所有检测器,并采用默认设置。具体来说,输入图像的较短边被调整为800,然后使用带有权重衰减1e-4、动量0.9和小批量大小为8(在4个GPU上,每个GPU上2张图像)的SGD进行优化。学习率初始化为0.01,并在第8个和第11个周期后分别降低10倍。我们在COCO的train2017数据集上对所有检测器进行12个周期的训练,并在val2017上报告结果进行比较。所有程序都在配备四个RTX 2080Ti GPU和Intel® Xeon Silver 4112 CPU@2.60GHz的PC上运行。

4.2、ImageNet-1K上的图像分类

在这里,我们首先评估核大小对我们ECA模块的影响,并验证我们方法自适应确定核大小的有效性。然后,我们使用ResNet-50、ResNet-101、ResNet-152和MobileNetV2,将我们的方法与最先进的同类方法和CNN模型进行比较。

4.2.1、ECA模块中核大小(k)的影响

如公式(9)所示,我们的ECA模块包含一个参数k,即一维卷积的核大小。在这一部分,我们评估核大小对我们ECA模块的影响,并验证我们方法自适应选择核大小的有效性。为此,我们采用ResNet-50和ResNet-101作为骨干模型,并通过设置k值从3到9来训练带有ECA模块的模型。结果如图4所示,我们得到以下观察结果。
在这里插入图片描述

首先,当在所有卷积块中固定k时,ECA模块在k=9和k=5时分别对于ResNet-50和ResNet-101获得最佳结果。由于ResNet-101具有更多主导性能的中间层,它可能更倾向于较小的核大小。此外,这些结果表明不同的深度卷积神经网络具有不同的最优k值,且k对ECA-Net的性能有明显影响。此外,ResNet-101的准确率波动(约0.5%)大于ResNet-50的波动(约0.15%),我们推测原因是较深的网络对固定核大小的敏感性高于较浅的网络。另外,通过公式(12)自适应确定的核大小通常优于固定核大小,同时可以避免通过交叉验证手动调整参数k。上述结果证明了我们的自适应核大小选择方法在获得更好且稳定结果方面的有效性。最后,具有不同k值的ECA模块始终优于SE块,这验证了避免降维和局部跨通道交互对学习通道注意力有积极影响。

4.2.2、使用不同深度CNN的比较

ResNet-50 我们使用ResNet-50在ImageNet上将我们的ECA模块与几种最先进的注意力方法进行比较,包括SENet [14]、CBAM [33]、 A 2 − N e t s [ 4 ] A^{2}-Nets [4] A2Nets[4]、AA-Net [1]、GSoP-Net1 [9]和GCNet [2]。评价指标包括效率(即网络参数、每秒浮点运算次数(FLOPs)以及训练/推理速度)和有效性(即Top-1/Top-5准确率)。为了进行比较,我们复制了[14]中ResNet和SENet的结果,并在原始论文中报告了其他比较方法的结果。为了测试各种模型的训练/推理速度,我们使用了公开可用的比较CNN模型,并在相同的计算平台上运行它们。结果如表3所示,我们可以看到我们的ECA-Net与原始ResNet-50具有几乎相同的模型复杂度(即网络参数、FLOPs和速度),同时在Top-1准确率上获得了2.28%的提升。与最先进的同类方法(即SENet、CBAM、 A 2 − N e t s A^{2}-Nets A2Nets、AA-Net、GSoP-Net1和GCNet)相比,ECA-Net在具有更低模型复杂度的同时获得了更好或具有竞争力的结果。
在这里插入图片描述

ResNet-101 使用ResNet-101作为骨干模型,我们将我们的ECA-Net与SENet [14]、CBAM [33]和AA-Net [1]进行比较。从表3中我们可以看到,ECA-Net以几乎相同的模型复杂度比原始ResNet-101高出1.8%的准确率。与在ResNet-50上表现出相同趋势的ECA-Net相比,它优于SENet和CBAM,同时与具有更低模型复杂度的AA-Net相比非常具有竞争力。需要注意的是,AA-Net使用Inception数据增强和不同的学习率设置进行训练。

ResNet-152 我们以ResNet-152为骨干模型,将我们的ECA-Net与SENet [14]进行比较。从表3中我们可以看到,ECA-Net在几乎相同的模型复杂度下,将原始ResNet-152的Top-1准确率提高了约1.3%。与SENet相比,ECA-Net在具有更低模型复杂度的同时,Top-1准确率提高了0.5%。关于ResNet-50、ResNet-101和ResNet-152的结果证明了我们的ECA模块在广泛使用的ResNet架构上的有效性。

MobileNetV2 除了ResNet架构外,我们还验证了我们的ECA模块在轻量级CNN架构上的有效性。为此,我们采用MobileNetV2 [28]作为骨干模型,并将我们的ECA模块与SE块进行比较。特别地,我们在MobileNetV2每个“瓶颈”中的残差连接之前的卷积层中集成了SE块和ECA模块,并将SE块的参数 r r r设置为8。所有模型都使用完全相同的设置进行训练。表3中的结果显示,我们的ECA-Net将原始MobileNetV2和SENet的Top-1准确率分别提高了约0.9%和0.14%。此外,我们的ECA-Net的模型大小比SENet更小,训练/推理速度也更快。上述结果再次验证了我们的ECA模块的有效性和效率。

4.2.3、与其他CNN模型的比较

在本部分的最后,我们将我们的ECA-Net50和ECA-Net101与其他最先进的CNN模型进行比较,包括ResNet-200 [12]、Inception-v3 [31]、ResNeXt [34]、DenseNet [15]。这些CNN模型具有更深和更宽的架构,并且它们的结果都是从原始论文中复制的。如表4所示,ECA-Net101的性能优于ResNet-200,这表明我们的ECA-Net可以以更低的计算成本提高深度CNN的性能。同时,我们的ECA-Net101与ResNeXt-101相比也具有很强的竞争力,而后者使用了更多的卷积滤波器和昂贵的分组卷积。此外,ECA-Net50与DenseNet-264(k=32)、DenseNet-161(k=48)和Inception-v3相当,但其模型复杂度更低。上述所有结果都表明,我们的ECA-Net在与最先进的CNN相比时表现优异,同时受益于更低的模型复杂度。请注意,我们的ECA也有很大的潜力进一步提高所比较的CNN模型的性能。
在这里插入图片描述

4.3、在MS COCO上的目标检测

在本小节中,我们使用Faster R-CNN [26]、Mask R-CNN [10]和RetinaNet [22]在目标检测任务上评估我们的ECA-Net。我们主要将ECA-Net与ResNet和SENet进行比较。所有CNN模型都在ImageNet上进行预训练,然后通过微调转移到MS COCO上。

在这里插入图片描述

4.3.1、使用Faster R-CNN的比较

以Faster R-CNN作为基本检测器,我们采用50层和101层的ResNet以及FPN [21]作为骨干模型。如表5所示,无论是SE块还是我们的ECA模块,集成后都能显著提高目标检测的性能。同时,使用ResNet-50和ResNet-101时,我们的ECA在AP方面分别比SE块高出0.3%和0.7%。

4.3.2、使用Mask R-CNN的比较

我们进一步使用Mask R-CNN来验证我们的ECA-Net在目标检测任务上的有效性。如表5所示,在50层和101层设置下,我们的ECA模块在AP方面分别比原始ResNet高出1.8%和1.9%。同时,使用ResNet-50和ResNet-101作为骨干模型时,ECA模块分别比SE块高出0.3%和0.6%。使用ResNet-50时,ECA优于NL [32],并且在较低模型复杂度下与GC块 [2]相当。

4.3.3、使用RetinaNet的比较

此外,我们还使用一阶段检测器RetinaNet验证了ECA-Net在目标检测上的有效性。如表5所示,我们的ECA-Net在50层和101层网络上的AP方面分别比原始ResNet高出1.8%和1.4%。同时,对于ResNet-50和ResNet-101,ECA-Net分别比SE-Net提高了0.2%和0.4%。总的来说,表5中的结果表明,我们的ECA-Net可以很好地推广到目标检测任务上。具体来说,ECA模块在原始ResNet的基础上带来了明显的改进,同时在使用更低模型复杂度的情况下优于SE块。特别地,我们的ECA模块在检测小物体方面取得了更多的增益,而这些小物体通常更难被检测到。

4.4、MS COCO上的实例分割

接着,我们使用Mask R-CNN在MS COCO上给出了我们的ECA模块的实例分割结果。如表6所示,ECA模块在原始ResNet的基础上取得了显著的增益,同时以较低的模型复杂度优于SE块。对于以ResNet-50为骨干模型的情况,ECA在较低模型复杂度下优于NL [32],并与GC块 [2]相当。这些结果验证了我们的ECA模块对于各种任务具有良好的泛化能力。
在这里插入图片描述

5、结论

在本文中,我们专注于为模型复杂度较低的深层CNN学习有效的渠道关注度。 为此,我们提出了一种有效的通道注意力(ECA)模块,该模块通过快速的1D卷积生成通道注意力,其内核大小可以通过通道尺寸的非线性映射来自适应确定。 实验结果表明,我们的ECA是一种极其轻巧的即插即用模块,可提高各种深度CNN架构的性能,包括广泛使用的ResNets和轻巧的MobileNetV2。 此外,我们的ECA-Net在对象检测和实例分割任务中表现出良好的概括能力。 将来,我们会将ECA模块应用于更多的CNN架构(例如ResNeXt和Inception [31]),并进一步研究将ECA与空间关注模块的结合。

YoloV5官方结果

   YOLOv5l summary: 267 layers, 46275213 parameters, 0 gradients, 108.2 GFLOPs
                 Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 15/15 [00:02<00:00,  5.16it/s]
                   all        230       1412      0.971       0.93      0.986      0.729
                   c17        230        131      0.992      0.992      0.995      0.797
                    c5        230         68      0.953          1      0.994       0.81
            helicopter        230         43      0.974      0.907      0.948       0.57
                  c130        230         85          1      0.981      0.994       0.66
                   f16        230         57      0.999       0.93      0.975      0.677
                    b2        230          2      0.971          1      0.995      0.746
                 other        230         86      0.987      0.915      0.974      0.545
                   b52        230         70      0.983      0.957      0.981      0.803
                  kc10        230         62          1      0.977      0.985      0.819
               command        230         40      0.971          1      0.986      0.782
                   f15        230        123      0.992      0.976      0.994      0.655
                 kc135        230         91      0.988      0.989      0.986      0.699
                   a10        230         27          1      0.526      0.912      0.391
                    b1        230         20      0.949          1      0.995      0.719
                   aew        230         25      0.952          1      0.993      0.781
                   f22        230         17      0.901          1      0.995      0.763
                    p3        230        105      0.997       0.99      0.995      0.789
                    p8        230          1      0.885          1      0.995      0.697
                   f35        230         32      0.969      0.984      0.985      0.569
                   f18        230        125      0.974      0.992       0.99      0.806
                   v22        230         41      0.994          1      0.995      0.641
                 su-27        230         31      0.987          1      0.995      0.842
                 il-38        230         27      0.994          1      0.995      0.785
                tu-134        230          1      0.879          1      0.995      0.796
                 su-33        230          2          1          0      0.995      0.846
                 an-70        230          2      0.943          1      0.995      0.895
                 tu-22        230         98      0.983          1      0.995      0.788

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1551629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python实现一个简单的银行管理系统GUI应用

介绍 在本教程中&#xff0c;我们将创建一个基本的银行管理系统GUI应用&#xff0c;用户可以通过图形界面执行各种银行操作。我们将使用Python编程语言和Tkinter库来实现此应用。 使用说明 需要安装Python解释器&#xff0c;以及PythonCharm &#x1f449; 点我去下载 效果图…

Mysql的连接与存储

目录 一、mysql的连接查询 1、连接的分类&#xff1a; 1.1 内连接 1.2左连接 1.3 右连接 二、存储过程 1、简介 2、优点 3、语法 4、参数分类 5、带参数的存储过程 6、修改存储过程 7、删除存储过程 三、总结 一、mysql的连接查询 mysql的连接查询&#xff0c;通…

tomcat和Servlet开发小案例

在上篇文章中,我已经正确安装了tomcat和利用servlet写了个基础的hello world程序,明白了这两个东西到底是啥玩意. 接下来,需要写个登录的小案例来进一步熟悉下基于servlet开发的流程. 一,新建项目 我们新建的maven项目其实里面是空的。所以我们需要给他变成一个servlet项目。 …

vue3全局引入element-plus使用Message教程

文章目录 安装引入 Element Plus和组件样式示例注意安装与引入&#xff1a;按需引入&#xff1a;API 使用&#xff1a;样式问题&#xff1a;组件上下文&#xff1a;版本兼容性&#xff1a;错误处理&#xff1a; 这是 Element UI 的 Vue 3 版本。ElMessage 是 Element Plus 中的…

编程语言|C语言——C语言变量的存储方式

前言 变量是程序中数据的存储空间的抽象。变量的存储方式可分为静态存储和动态存储两种。 静态存储变量通常是在程序编译时就分配一定的存储空间并一直保持不变&#xff0c;直至整个程序结束。在上一部分中介绍的全局变量的存储方式即属于此类存储方式。 动态存储变量是在程序执…

黑马鸿蒙笔记1

这里与前端类似。

跨境智星教你如何批量注册阿里国际站买家账号?

随着全球化的加速和跨境电商的兴起&#xff0c;越来越多的海外消费者开始关注并尝试在阿里国际站进行购物。然而&#xff0c;对于初次接触阿里国际站的买家来说&#xff0c;如何注册一个有效的买家账号却是一个不小的难题。 首先&#xff0c;要注册阿里国际站买家账号&#xff…

蓝桥杯(3):python搜索DFS

目录 1 DFS简介 1.1 DFS与n重循环 1.2 代码实现 1.3 例题 1.3.1 分糖果 1.3.2 买瓜 2 回溯 2.1 定义 2.2 代码实例 2.1.1 排列数 2.1.2 找子集 2.3 例题 2.3.1 N皇后 2.3.2 小朋友崇拜圈 2.3.3 全球变暖 3 剪枝 3.1 定义 3.2 分类 3.3 例子 3.3.1 数字王国之…

TouchGFX之Button

TouchGFX中的按钮是一种感应触控事件的控件&#xff0c;能够在按钮被按下/释放时发送回调 代码 #ifndef TOUCHGFX_ABSTRACTBUTTON_HPP #define TOUCHGFX_ABSTRACTBUTTON_HPP #include <touchgfx/Callback.hpp> #include <touchgfx/events/ClickEvent.hpp> #includ…

Leetcoder Day43| 单调栈2

503.下一个更大元素II 给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更大的数&#xff0c;这意味着你应该…

【案例·查】数据类型强制转换,方便查询匹配

问题描述&#xff1a; MySQL执行中需要将某种数据类型的表达式显式转换为另一种数据类型&#xff0c;可以使用 SQL 中的cast()来处理 案例&#xff1a; SELECT CAST(9.0 AS decimal) #String化为小数类型SELECT * FROM table_1 WHERE 1888-03-07 CAST(theDate AS DATE) …

项目实战:电影评论情感分析系统

目录 1.引言 2.数据获取与预处理 3.构建文本分类模型&#xff08;使用LSTM&#xff09; 4.结果评估与模型优化 4.2.结果评估 4.2.模型优化 5.总结 1.引言 在本篇文章中&#xff0c;将通过一个完整的项目实战来演示如何使用Python构建一个电影评论情感分析系统。涵盖从数…

激光焊接机性价比高的品牌推荐

激光焊接机性价比高的品牌推荐&#xff0c;博特激光作为一个激光焊接机品牌&#xff0c;在市场上也享有一定的声誉。其激光焊接机产品在性价比方面表现不错&#xff0c;受到了部分用户的认可。以下是关于博特激光焊接机的一些优势特点&#xff1a; 1. **性能稳定**&#xff1a;…

Mybatis细节详解

上一篇分享了一个Mybatis的快速入门案例&#xff0c;本贴再详细说明几个细节点~ 一.Mapper代理开发 1.定义接口 定义一个接口&#xff0c;并在resources中定义mapper文件夹&#xff0c;文件夹中存放同名的xml配置文件。 2.设置namespace属性 <?xml version"1.0&qu…

ChatGLM2本地部署方法

chatglm2部署在本地时&#xff0c;需要从huggingface上下载模型的权重文件&#xff08;需要科学上网&#xff09;。下载后权重文件会自动保存在本地用户的文件夹上。但这样不利于分享&#xff0c;下面介绍如何将chatglm2模型打包部署。 一、克隆chatglm2部署 这个项目是chatgl…

Go singleflight 第三方库在防止缓存击穿中的重要作用

参考&#xff1a; Go并发——singleflight - 知乎十一. Go并发编程–singleflight - failymao - 博客园 一、背景 介绍&#xff1a;Go的singleflight库提供了一个重复的函数调用抑制机制。 场景&#xff1a;适用于并发读请求量较大的后台服务&#xff0c;以降低存储层的压力…

I.MX6ULL_Linux_驱动篇(55)linux 网络驱动

网络驱动是 linux 里面驱动三巨头之一&#xff0c; linux 下的网络功能非常强大&#xff0c;嵌入式 linux 中也常常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动&#xff0c;本章我们就来学习一下linux 里面的网络设备驱动。 嵌入式网络简介 网络硬件接口 首先…

Linux(3)软件安装-Centos 8.1安装-硬盘分区方案对比-linux上运行jar包-File上传下载

四、软件安装 1、Centos 8.1安装 1.1 安装过程 1、下载 CentOS 8.1 ISO 镜像文件 访问 CentOS 官方网站的下载页面。选择适当的版本&#xff0c;例如 CentOS Linux 8.1 (Linux Kernel 5.10.0-36)。根据您的硬件架构下载对应的 ISO 镜像文件&#xff08;如 CentOS-8.1-x86_6…

MySQL:十二类查询汇总(源码+解析 超全超详解!!!)

目录 一、全列查询 二、指定列查询 三、查询的字段为表达式 四、别名查询 五、去重查询&#xff1a;DISTINCT 六、排序查询&#xff1a;ORDER BY 七、条件查询&#xff1a;WHERE 注意&#xff1a; 范例&#xff1a; 1、基本查询 2、AND 与 OR 3、BETWEEN … AND ……

华为OD机试 - 考古问题 - 回溯、全排列问题(Java 2024 C卷 200分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…