YoloV10改进:Block改进|使用ContextAggregation模块改善C2f模块|即插即用

摘要

在计算机视觉领域,目标检测与实例分割任务一直是研究的热点。YoloV10作为目标检测领域的佼佼者,凭借其出色的性能和效率赢得了广泛的认可。然而,随着技术的不断进步,如何进一步提升YoloV10的性能成为了我们追求的目标。近期,我们引入了ContextAggregation模块对YoloV10进行了改进,取得了显著的效果提升。

ContextAggregation模块是一种创新的上下文聚合方法,旨在通过聚合全局视觉上下文信息来增强目标特征。在YoloV10中,我们巧妙地使用ContextAggregation替换了原有的Bottleneck模块,从而实现了性能上的飞跃。这一改进不仅保留了YoloV10原有的高效性,更在检测精度上取得了突破性的提升。

ContextAggregation模块的优点在于其强大的全局上下文聚合能力。与传统的局部特征提取方法相比,ContextAggregation能够捕捉到更丰富的全局信息,使得目标特征更加具有区分性。在遥感图像等复杂场景中,这一目标特征增强效果尤为明显。此外,ContextAggregation模块的设计轻量级且灵活,能够轻松融入现有的目标检测框架中,而不会引入过多的计算负担。

通过引入ContextAggregation模块,YoloV10在目标检测任务中的表现得到了全面提升。在多个公开数据集上的实验结果表明,改进后的YoloV10在检测精度上显著优于其他先进方法,同时保持了较高的检测速度。这一性能提升不仅为目标检测任务带来了更加准确和可靠的结果,也为后续的研究工作提供了有力的支持。

在这里插入图片描述

论文翻译:《学习聚合多尺度上下文用于遥感图像的实例分割》

https://arxiv.org/pdf/2111.11057v2

遥感图像中的实例分割任务旨在对实例级别的对象进行逐像素标记,对于各种民用应用具有重要意义。尽管之前已取得了一些成功,但大多数为自然图像设计的现有实例分割方法,在直接应用于俯视遥感图像时,性能会急剧下降。通过仔细分析,我们观察到,挑战主要来自由于尺度变化严重、对比度低和分布密集而导致的对象特征缺乏区分性。为了解决这些问题,提出了一种新的上下文聚合网络(CATNet)来改进特征提取过程。所提出的模型利用了三个轻量级的即插即用模块,即密集特征金字塔网络(DenseFPN)、空间上下文金字塔(SCP)和分层感兴趣区域提取器(HRoIE),分别在特征域、空间域和实例域中聚合全局视觉上下文。DenseFPN是一个多尺度特征传播模块,通过采用跨级残差连接、跨级密集连接和特征重加权策略,建立了更灵活的信息流。利用注意力机制,SCP通过将全局空间上下文聚合到局部区域来进一步增强特征。对于每个实例,HRoIE自适应地为不同的下游任务生成感兴趣区域(RoI)特征。我们在具有挑战性的iSAID、DIOR、NWPU VHR10和HRSID数据集上对提出的方案进行了广泛的评估。评估结果表明,在相似的计算成本下,该方法优于当前最先进的技术。源代码和预训练模型可在https://github.com/yeliudev/CATNet上获取。

索引词-实例分割,目标检测,全局上下文聚合,自注意力

一、引言

卫星和遥感技术的最新进展生成了大量高分辨率的遥感图像,给人工操作和处理带来了巨大挑战。因此,对这些图像进行自动分析和理解对于包括城市规划、资源探测和环境监测在内的各种民用应用变得越来越重要。作为计算机视觉中一项基础而又具有挑战性的任务,实例分割结合了目标检测和语义分割,旨在预测实例级别的对象二值掩码,已被广泛用于从光学遥感图像和合成孔径雷达(SAR)图像中提取精细的对象信息。近年来,它引起了相当大的关注。
在这里插入图片描述

关于目标检测和实例分割的大部分现有工作[1]-[7]在传统的前视场景中取得了成功。然而,当这些方法直接应用于遥感图像时,大量方法不可避免地会遇到性能下降的问题[8]-[12]。与自然图像相比,遥感图像通常是从顶部拍摄的,捕捉了大面积且对象差异有限的区域。我们分析了这些场景的特殊性,并将挑战分为五个不同的方面,即尺度变化、任意方向、密集分布、低对比度和杂乱背景,如图2所示。前三个方面导致对象模式复杂,而后两个方面则带来了来自背景的干扰信息。这些现象在自然场景中很少见,因此只有少数工作考虑了这些方面。我们认为,上述所有挑战都源于遥感图像中缺乏具有区分性的对象特征。也就是说,遥感图像中单个对象的视觉外观信息量不足以直接采用现有方案进行实例分割。
在这里插入图片描述

一个自然的问题是:如何增强不足的特征,以在遥感图像中实现更好的实例分割结果?考虑到在一般实例分割流程[3]-[5]中,对象表示直接从主干网或颈部的特征图中裁剪而来,仅包含具有不可逆信息损失的局部特征。在这项工作中,我们通过引入CATNet(一种用于全局上下文聚合的新框架)来缓解这个问题。核心思想是,来自不同特征金字塔级别、空间位置或感受野的图像上下文信息应为分割难以区分的对象提供额外的先验。请注意,现有工作[13]、[14]仅将上下文视为空间相关性。我们将上下文的概念扩展并明确分解为三个域,即特征域、空间域和实例域。这意味着在检测和分割对象时,该模型可以通过以下方式增强视觉信息:1)平衡异构特征;2)融合来自背景或其他相关对象的信息;3)自适应地精炼每个实例和任务的中间表示。这三个不同的域能够以从粗到细的不同粒度对全局视觉上下文进行建模,从而捕获更多具有区分性的对象信息。

所提出的框架旨在利用三个即插即用模块,并构建上述上下文聚合流程。图1展示了这些模块处理的对象特征的一瞥。在特征域中,我们认为,在主干网构建的特征金字塔中,灵活的信息流可以减少信息混淆,更有效地处理多尺度特征。正是基于这种分析,我们提出了密集特征金字塔网络(DenseFPN),以实现自适应特征传播。该模块具有金字塔结构,包含由自上而下和自下而上路径组成的可堆叠基本块。我们采用跨级残差连接[15]、跨级密集连接[16]和特征重加权策略,使模块能够学习其最佳特征传播方式。在空间域中,遥感图像中的长距离空间依赖性为模糊对象提供了比自然场景更多的补充信息。因此,采用空间上下文金字塔(SCP)来捕获每个特征金字塔级别中的全局空间上下文。该模块学习从整个特征图中聚合特征,并使用自适应权重将它们组合到每个像素中。这种策略确保了只有有用的全局信息被融合到局部区域中,而不会减少对象之间的差异。至于实例域,我们认为对象表示应针对每个实例和下游任务进行自适应精炼。例如,执行对象分类需要整体视图,而分割则需要更多放大的细节。不同实例对感受野大小的需求也不同。因此,我们引入了分层感兴趣区域提取器(HRoIE)来为每个实例和任务生成RoI特征。在从所有级别裁剪实例特征图后,该模块从最高或最低尺度开始,以分层方式逐级融合特征。利用像素级注意力机制来组合相邻特征图。这些模块轻量级且具有可扩展模型设计的灵活性。总体而言,本文的主要贡献有三方面:

  • 将上下文的概念扩展并明确分解为特征域、空间域和实例域,在遥感图像分割中取得了卓越的性能。据我们所知,这是第一项考虑超越空间依赖性的全局视觉上下文的工作。
  • 提出的CATNet能够利用DenseFPN、SCP和HRoIE从不同域学习和聚合全局视觉上下文,用于遥感图像中的目标检测和实例分割。
  • 所提出的方案已在包括iSAID、DIOR、NWPU VHR-10和HRSID在内的多种数据集上进行了测试,并以相似的计算成本获得了最新的性能。

本文的其余部分组织如下。第二节讨论了相关工作和比较。第三节介绍了DenseFPN、SCP和HRoIE的详细公式。第四节在公共数据集上展示了广泛的实验结果和深入分析。最后,第五节总结了结论性评论。

II. 相关工作

A. 遥感图像中的实例分割

实例分割是计算机视觉中一个具有挑战性且被广泛研究的问题。与物体检测[1]、[2]类似,大多数实例分割方法可以分为两种方案,即单阶段方法和两阶段方法。单阶段方法[6]、[7]采用了一种直接的设计,即采用自下而上的策略,在图像级别进行语义分割,并使用聚类或度量学习进一步分离单个物体。这些方法通常具有较高的效率,但在定位准确性方面受到较大限制。相比之下,两阶段方法[3]-[5]、[17]将分割流程分为两个阶段,即区域提议生成和任务特定的后处理,从而形成了自上而下的风格。得益于两次边界框回归,这些方法在物体定位和掩码预测方面通常能取得更好的结果。最近的一些工作[18]-[27]试图解决遥感图像中的场景分类和物体检测问题,但它们并没有特别关注实例分割。我们提出的上下文聚合策略可以融入单阶段和两阶段方法中,而由于不需要裁剪特征图,因此在单阶段方法中不使用HRoIE。进一步的实验结果表明,我们的模块可以稳定地提升性能。

B. 全局上下文建模

卷积神经网络(CNNs)最具代表性的特性之一是局部依赖建模。多个卷积层可以堆叠在一起以增加感受野,在低层次学习高分辨率的定位特征,在高层次学习低分辨率的语义特征。处理异质性的关键是适当地从主干网络中传播多层次的特征。早期工作[17]、[28]-[31]中的一个常见做法是采用多尺度特征传播策略,但这些方法只沿着固定路径传播特征。我们认为,灵活的信息流可以减少信息混淆,并更好地聚合多尺度特征。此外,长距离空间依赖建模也被证明对密集预测任务有效[13]、[32]。作为一项开创性工作,非局部神经网络(NLNet)[13]表明,可以通过计算像素级别的成对相关性来聚合全局空间上下文,但它也面临着计算成本高的问题。NLNet的一些扩展[33][35]试图通过简化相关性估计来解决这个问题。这些工作已经取得了有前景的结果,然而,所有这些方法都只将上下文的概念视为长距离空间相关性,忽略了特征和实例域中的全局依赖。

III. 所提出的方法

在本节中,我们介绍了我们的全局上下文聚合方法。如图3所示,整个框架可以分为三个子模块,即DenseFPN、SCP和HRoIE。这些模块旨在从不同域聚合全局上下文信息。
在这里插入图片描述

A. 概述

给定一张图像 x x x和一组感兴趣的物体类别 S = { 1 , … , N } S=\{1, \ldots, N\} S={1,,N},实例分割的任务是检测并分割 x x x中的所有物体,无论它们属于哪个预定义的类别。实例分割的输出将是一组元组集合 T = { ⟨ b , m , s ⟩ } \mathcal{T}=\{\langle b, m, s\rangle\} T={⟨b,m,s⟩},其中 b ∈ R 4 b \in \mathbb{R}^{4} bR4表示物体的边界框, m m m表示一个二进制掩码,其中 m i , j ∈ { 0 , 1 } m_{i, j} \in\{0,1\} mi,j{0,1}指示像素 ( i , j ) (i, j) (i,j)是否属于该物体, s ∈ S s \in S sS是一个描述物体类别的独热向量。注意,单个物体可能由不同的掩码表示。

我们采用Mask R-CNN[3]作为我们的基线,它是一个常见的两阶段实例分割框架。整个流程通过提取视觉特征、生成区域提议,并对每个提议执行边界框回归、物体分类以及掩码预测来构建。首先,通过从主干网络的每个阶段提取视觉特征来构建一个异质特征金字塔。为了使特征更具判别性,我们利用DenseFPN和SCP在不同层次和区域之间传播物体信息。在增强特征金字塔后,HRoIE会为每个提议生成任务特定的RoI特征。以下各节将介绍这些模块的详细信息。

B. 密集特征金字塔网络

多尺度特征传播旨在从不同主干阶段聚合视觉特征,即给定一个输入特征金字塔 C = { C l 1 , C l 2 , … } C=\left\{C_{l_{1}}, C_{l_{2}}, \ldots\right\} C={Cl1,Cl2,},其中 C i C_{i} Ci表示来自第 i i i阶段的特征图,目标是在不同层次之间传播特征以生成一个增强的特征金字塔 P = { P l 1 , P l 2 , … } P=\left\{P_{l_{1}}, P_{l_{2}}, \ldots\right\} P={Pl1,Pl2,},其中的特征对于下游任务更具信息量。形式上,特征图 C i C_{i} Ci P i P_{i} Pi的分辨率是输入图像的 1 / 2 i 1 / 2^{i} 1/2i

DenseFPN的基本架构如图3(a)所示,其中每个节点代表一个特征图,线条代表信息流。该模块以 C 2 ∼ C 5 C_{2} \sim C_{5} C2C5作为输入,首先使用 1 × 1 1 \times 1 1×1卷积将它们下采样到256个通道,生成 C 2 ′ ∼ C 5 ′ C_{2}^{\prime} \sim C_{5}^{\prime} C2C5。然后,对 C 5 ′ C_{5}^{\prime} C5应用一个额外的 3 × 3 3 \times 3 3×3卷积(步长 = 2 =2 =2)以生成 C 6 ′ C_{6}^{\prime} C6。这样, C 2 ′ ∼ C 6 ′ C_{2}^{\prime} \sim C_{6}^{\prime} C2C6就具有了相同数量的通道但分辨率不同。随后,这些特征通过几个堆叠的基本块进行特征级别的上下文聚合。在每个块中,输入特征金字塔通过自上而下和自下而上的聚合路径进行处理,其中采用了跨级残差连接[15]、跨级密集连接[16]和特征重新加权策略。
在这里插入图片描述

图4展示了基本块中的详细特征传播策略。在自上而下的路径中,每个特征金字塔级别的输出特征 C i ↓ C_{i \downarrow} Ci是通过融合当前级别和所有上级别的特征,然后对融合后的特征进行参数化变换而生成的。

C i ↓ = Transform ⁡ ( C i ′ + ∑ j = i + 1 l m a x [ Resize ⁡ ( C j ′ ) ⋅ w i ↓ j ] ) C_{i \downarrow}=\operatorname{Transform}\left(C_{i}^{\prime}+\sum_{j=i+1}^{l_{\mathrm{max}}}\left[\operatorname{Resize}\left(C_{j}^{\prime}\right) \cdot w_{i \downarrow}^{j}\right]\right) Ci=Transform(Ci+j=i+1lmax[Resize(Cj)wij])

其中,Transform(*)表示一个ReLU激活层后跟一个没有激活函数的 3 × 3 3 \times 3 3×3瓶颈结构[15]。我们观察到,在瓶颈结构之前仅采用一个非线性层可以带来更好的性能。Resize(.)表示一个最大池化层, w i ↓ j w_{i \downarrow}^{j} wij是一个用于从级别 j j j聚合特征到级别 i i i的可学习重新加权项。权重 w i ↓ w_{i \downarrow} wi是与其级别长度相对应的向量,其值通过使用softmax从原始值归一化得到:

w i ↓ j = exp ⁡ ( v i ↓ j ) ∑ k = 1 N i exp ⁡ ( v i ↓ k ) w_{i \downarrow}^{j}=\frac{\exp \left(v_{i \downarrow}^{j}\right)}{\sum_{k=1}^{N_{i}} \exp \left(v_{i \downarrow}^{k}\right)} wij=k=1Niexp(vik)exp(vij)

其中, v i ↓ v_{i \downarrow} vi表示原始权重向量, j j j是每个元素的索引。使用上述归一化可以稳定学习过程。与自上而下路径类似,自下而上的特征 C 2 ↑ ∼ C 6 ↑ C_{2 \uparrow} \sim C_{6 \uparrow} C2C6通过以下公式计算:

C i ↑ = Transform ⁡ ( C i ′ + C i ↓ + ∑ j = l min ⁡ i − 1 [ Resize ⁡ ( C j ↓ ) ⋅ w i ↑ j ] ) C_{i \uparrow}=\operatorname{Transform}\left(C_{i}^{\prime}+C_{i \downarrow}+\sum_{j=l_{\min }}^{i-1}\left[\operatorname{Resize}\left(C_{j \downarrow}\right) \cdot w_{i \uparrow}^{j}\right]\right) Ci=Transform(Ci+Ci+j=lmini1[Resize(Cj)wij])

其中,Resize(')表示双线性插值层,其他符号与公式1一致。我们采用残差连接来保留原始特征并防止梯度消失。利用灵活的架构和特征重新加权策略,DenseFPN能够在训练过程中优化特征域上下文聚合的信息流。

C. 空间上下文金字塔

在跨不同级别聚合特征图之后,特征金字塔仍然包含空间局部信息,因此我们引入空间上下文金字塔(SCP)来学习每个级别内的全局空间上下文,从而进一步增强特征。该领域之前的尝试[13]、[32][35]通常将几个视觉注意力块集成到主干网络中以实现全局感受野。这些块的一些架构如图5所示。在这些方法中,全局上下文网络(GCNet)[35]是一种简单但有效的方法,它将NLNet[13]和SENet[32]结合到一个单一的轻量级模块中。然而,我们观察到,在对象仅覆盖小区域的遥感图像中,这种设计可能会给对象带来太多无用的背景信息。为了解决这个问题,我们提议在这个结构之上添加一条额外路径来学习每个像素的信息量。我们的核心思想是,如果某个像素的特征足够信息丰富,那么就没有太多必要从其他空间位置聚合特征。这种软重新加权策略可以在减少信息混淆的同时有效地融合局部和全局特征。
在这里插入图片描述

SCP的架构如图3(b)所示。该模块也具有金字塔结构,因此可以轻松地插入到主干网络或颈部网络之后。每一层由一个具有残差连接的上下文聚合块(CABlock)组成。该块的详细设计如图5(d)所示。在每个块中,像素级空间上下文通过以下公式进行聚合:

Q i j = P i j + a i j ⋅ ∑ j = 1 N i [ exp ⁡ ( w k P i j ) ∑ m = 1 N i exp ⁡ ( w k P i m ) ⋅ w v P i j ] Q_{i}^{j}=P_{i}^{j}+a_{i}^{j} \cdot \sum_{j=1}^{N_{i}}\left[\frac{\exp \left(w_{k} P_{i}^{j}\right)}{\sum_{m=1}^{N_{i}} \exp \left(w_{k} P_{i}^{m}\right)} \cdot w_{v} P_{i}^{j}\right] Qij=Pij+aijj=1Ni[m=1Niexp(wkPim)exp(wkPij)wvPij]

其中, P i P_{i} Pi Q i Q_{i} Qi分别表示特征金字塔中第 i i i层的输入和输出特征图,每个特征图包含 N i N_{i} Ni个像素。 j , m ∈ { 1 , N i } j, m \in\left\{1, N_{i}\right\} j,m{1,Ni}表示每个像素的索引。 w k w_{k} wk w v w_{v} wv是用于投影特征图的线性变换矩阵。在实践中,我们使用 1 × 1 1 \times 1 1×1卷积来执行映射。上述公式简化了广泛使用的自注意力机制[38],通过将查询和键之间的矩阵乘法替换为线性变换,从而大大减少了参数和计算成本。除了GCNet之外,我们还应用了与 P i P_{i} Pi Q i Q_{i} Qi形状相同的重新加权矩阵 a i a_{i} ai,以平衡每个像素聚合全局空间上下文的程度。该矩阵也可以通过对 P i P_{i} Pi进行线性变换并使用softmax归一化来简单生成。

a i j = exp ⁡ ( w a P i j ) ∑ n = 1 N i exp ⁡ ( w a P i n ) a_{i}^{j}=\frac{\exp \left(w_{a} P_{i}^{j}\right)}{\sum_{n=1}^{N_{i}} \exp \left(w_{a} P_{i}^{n}\right)} aij=n=1Niexp(waPin)exp(waPij)

同样, j , n ∈ { 1 , N i } j, n \in\left\{1, N_{i}\right\} j,n{1,Ni}是矩阵索引。我们对 a i a_{i} ai的有效性进行了大量实验。图7可视化了GCNet和SCP之间的特征聚合权重比较。结果表明,我们的模型倾向于聚合来自同一类别的对象特征。有关详细讨论,请参阅第IV-F节。

D. 分层感兴趣区域提取器

大多数两阶段目标检测和实例分割方法缺乏对RoI提取器的足够关注,由于仅考虑单一尺度,这可能会导致严重的信息丢失。该设计的初衷是使较大的候选区域能够从捕获更高定位准确性的低级特征中受益,而较小的候选区域由于高级特征具有更大的感受野,可以获得更多的上下文信息。我们认为这种硬性分配策略可能并不适合所有候选区域。最近的工作[17]、[39]也证明,简单计算从所有层裁剪的RoI特征的总和可以获得略好的性能。
在这里插入图片描述

在这项工作中,我们通过提出分层感兴趣区域提取器(HRoIE)来解决这个问题,以便为每个实例执行特定任务的RoI特征融合。该模块如图3(c)所示插入在SCP之后。我们的假设是,人类可以轻松地执行目标检测和分割,因为他们以分层的方式将注意力集中在对象上。例如,当一个人试图对对象进行分类时,他或她会首先查看对象本身。如果对象的外观不具有区分性,该人会逐渐查看周围的事物以获得更好的信息。相反,当在像素级别分割对象时,人类会查看整个对象以全面了解其形状,然后反复放大以获得更详细的边界信息以进行准确分割。我们通过使用RoIAlign[3]从 Q i Q_{i} Qi中的所有特征金字塔级别裁剪候选区域 R i R_{i} Ri的特征,并利用多个注意力块来根据实例和任务自适应地融合特征来实现上述想法。如图6所示,对于每个任务,RoI特征从一个空矩阵开始,并通过分层方式结合来自不同级别的特征:

F b / m j = F b / m i + R i j ⋅ Sigmoid ⁡ ( [ F b / m i ∥ R i j ] ⋅ w i ) F_{b / m}^{j}=F_{b / m}^{i}+R_{i}^{j} \cdot \operatorname{Sigmoid}\left(\left[F_{b / m}^{i} \| R_{i}^{j}\right] \cdot w_{i}\right) Fb/mj=Fb/mi+RijSigmoid([Fb/miRij]wi)

其中, R i R_{i} Ri表示第 i i i层的裁剪特征, F b / m i F_{b / m}^{i} Fb/mi F b / m j F_{b / m}^{j} Fb/mj表示不同级别的聚合RoI特征, w i w_{i} wi是线性变换权重, ∥ \| 表示通道维度上的矩阵拼接。上述过程计算了用于特征聚合的像素级注意力权重,因此

可以根据实例和任务自适应地生成RoI特征。在实践中,我们为目标检测头采用自下而上的路径,为掩码预测头采用自上而下的路径。

IV. 实验

在本节中,我们将在iSAID、DIOR、NWPU VHR-10和HRSID数据集上对所提出的方法进行广泛评估。首先,在iSAID数据集上的实例分割任务下对模块进行评估,然后在DIOR和NWPU VHR-10数据集上的目标检测任务下进行评估,以证明该方法在光学遥感图像中的有效性。此外,还使用HRSID数据集来验证该方法在SAR图像中的泛化能力。

A. 数据集和评估指标
iSAID [10]:iSAID是用于航拍图像实例分割的大规模数据集。iSAID中的所有图像均继承自DOTA [9](一种流行的用于方向目标检测的数据集)。它包含2,806张图像中的655,451个实例,共15个类别,所有对象均从头开始独立标注。图像的空间分辨率范围很大,在800至13,000之间。在训练和测试期间,我们将它们分割成 512 × 512 512 \times 512 512×512的图像块。类别的缩写包括:SH-船,ST-储罐,BD-棒球场,TC-网球场,BC-篮球场,GT-田径场,BR-桥梁,LV-大型车辆,SV-小型车辆,HE-直升机,SP-游泳池,RO-环岛,SB-足球场,PL-飞机,HA-港口。

DIOR [11]:DIOR是一个仅使用水平边界框标注的复杂航拍图像数据集。它包含23,463张图像,共190,288个实例,涵盖20个对象类别。DIOR中的对象尺寸在类间和类内均存在严重差异。该数据集的复杂性还体现在不同的成像质量、天气和季节上。类别的缩写包括:AL-飞机,AR-机场,BF-棒球场,BC-篮球场,BR-桥梁,CH-烟囱,DA-水坝,ES-高速公路服务区,ET-高速公路收费站,GC-高尔夫球场,GT-田径场,HA-港口,OV-立交桥,SH-船,ST-体育场,SA-储罐,TC-网球场,TS-火车站,VE-车辆,WM-风车。

NWPU VHR-10 [8]:NWPU VHR-10是另一个广泛用于航拍图像目标检测的数据集。它包含800张高分辨率图像,其中650张为正样本(包含感兴趣的对象),150张为负样本(不包含感兴趣的对象)。该数据集包含10个对象类别的标注。所有对象均使用可公开访问的水平边界框进行标注。类别的缩写包括:AI-飞机,SH-船,ST-储罐,BD-棒球场,TC-网球场,BC-篮球场,GT-田径场,HA-港口,BR-桥梁,VE-车辆。

HRSID [12]:HRSID是最近引入的用于SAR图像中船舶检测和分割的数据集。该数据集包含总共5,604张高分辨率SAR图像,其中包含16,951个船舶实例。该数据集中的所有实例均使用像素级掩码进行标注。图像的空间分辨率为0.5米、1米和3米。

我们遵循标准的评估指标,即使用平均精度均值(mAP)来衡量检测和分割性能。当对象的边界框或掩码与其对应的真实值之间的交并比(IoU)大于阈值 θ I o U \theta_{IoU} θIoU,并且预测的类别标签正确时,该结果被视为真正例。对于iSAID数据集,我们计算了在 θ I o U \theta_{IoU} θIoU从0.05到0.95范围内的mAP均值。对于其他数据集,根据原论文,仅考虑 θ I o U = 0.5 \theta_{IoU}=0.5 θIoU=0.5下的mAP。

B. 实现细节

我们选择Mask R-CNN [3]、Faster R-CNN [1]和RetinaNet [2](以ResNet-50 [15]为主干网络)作为我们的基线。主干网络在ImageNet [52]上进行预训练,并在训练检测器时进行微调。第一阶段中的所有参数在预训练后均被冻结。除非另有说明,否则所有DenseFPN模块均包含5个基本块。为了稳定训练过程,在中间层中使用同步批归一化(SyncBN) [53]层。在测试时,我们还采用Soft-NMS [54]来抑制IoU大于0.5的重复结果,因为遥感图像中的大多数对象重叠严重。

我们使用随机梯度下降(SGD)优化器来学习所有模型的参数,初始学习率为0.01,动量为0.9,权重衰减为0.0001。每个训练批次包含8张图像。对于iSAID数据集,我们遵循标准的 1 × 1 \times 1×训练计划,在第8个和第11个训练周期时将学习率降低1/10,并在第12个训练周期时停止训练。对于DIOR、NWPU VHR-10和HRSID数据集,我们分别采用 3 × 3 \times 3× 6 × 6 \times 6× 3 × 3 \times 3×训练计划。
C. 航空图像中的实例分割结果

我们首先在实例分割任务上评估了我们的方法。表I展示了当将所提模块融入不同框架时,在iSAID数据集上的对比结果。同时,还报告了各类别的实例分割平均精确度均值(mAPs)。对于目标检测和实例分割任务,我们的方法都能稳步提升性能。在所提的三个模块中,DenseFPN对mAPs的提升最为显著,而SCP和HRoIE也带来了相当大的增益,且仅增加了少量参数。
在这里插入图片描述

D. 航空图像中的目标检测结果

除了实例分割外,我们还发现我们的方法同样有益于目标检测任务。为了验证其效果,我们还在DIOR和NWPU VHR-10数据集上评估了我们的模型。表II和表III展示了我们的方法与之前最先进的方法在这两个数据集上的对比。注意,对于基于RetinaNet的方法,由于单阶段模型中不使用感兴趣区域(RoI)提取器,因此我们仅融入了DenseFPN和SCP。在DIOR和NWPU VHR-10数据集上的实验结果表明,我们的方法显著优于所有之前的方法。此外,使用ResNet-50作为骨干网络的我们的模型性能,甚至明显优于使用ResNet-101作为骨干网络的之前最先进的方法。
在这里插入图片描述

E. 合成孔径雷达(SAR)图像中的实例分割结果

除了光学遥感图像外,我们还在更具挑战性的SAR图像上评估了我们的模型。具体而言,SAR图像被视为单通道灰度图像,每个图像是通过在通道维度上堆叠三个单通道图像而构建的。表IV中的实验结果也表明,与自然图像的强基线相比,我们的方法即使使用更轻量的骨干网络也表现得更好。注意,在SAR图像中,我们没有观察到使用多尺度训练带来明显的增益,因此在执行数据增强时仅使用了多尺度测试。

F. 可视化

为了证明SCP的有效性,我们在图7中可视化了GCNet[35]和SCP中的上下文聚合权重。每一行表示所有类别的权重,这些权重被聚合到每个类别中。圆圈的大小和颜色深度分别表示GCNet和SCP中的权重。从可视化结果中,我们可以观察到我们的方法倾向于从同一类别的对象中聚合全局空间上下文。一些相似(如飞机和直升机)或语义相关(如船和港口)的类别在训练过程中也可以互相帮助。与我们的方法相比,GCNet不太关注相似或语义相关的对象,导致在图像中全局聚合特征时出现信息混淆。
在这里插入图片描述

图8展示了在iSAID、DIOR和HRSID数据集上的定性结果。每个图像块都通过其在SCP中的特征聚合权重以及最终的目标检测或实例分割结果进行可视化。结果表明,在大多数情况下,我们的方法更关注包含对象的区域,并将它们聚合到特征较差的区域。最终结果证明,我们的方法能够在多个场景中有效地检测和准确分割对象。

为了更深入地研究训练过程,我们还在图9(a)中可视化了总体训练损失。结合所提模块,模型可以更快地收敛,并在训练后达到更低的最终最小值。

G. 详细比较和消融研究

为了单独研究所提模块的重要性和有效性,我们进行了实验,将它们与一些代表性方法以及不同模块组合进行了比较。所有实验均在iSAID数据集上使用标准的训练和测试方案进行。浮点运算数(FLOPs)是使用 512 × 512 512 \times 512 512×512输入计算的。
在这里插入图片描述

图9(b)和(c)比较了不同多尺度特征传播模块的目标检测和实例分割性能。数值结果报告在表V(a)中。与现有的代表性方法相比,DenseFPN在目标检测和实例分割任务上的表现都明显更好,且计算成本更低。我们还观察到,在DenseFPN中简单地堆叠更多基本块可以进一步提升性能,这表明其模型扩展的能力和灵活性。
在这里插入图片描述

表V(b)展示了多个空间上下文模块之间的比较。与基线相比,NLNet[13]可以在付出较大计算成本的情况下有效提升性能。GCNet[35]解决了计算复杂度的问题,但导致了另一个信息混淆的问题。借助重新加权上下文,我们提出的CABlock在使用不同通道缩减率时始终优于GCNet。进一步的实验表明,将CABlock从骨干网络移动到多尺度融合模块之后,可以在类似的计算成本下更好地提升性能。

V ( c ) V(c) V(c)展示了多个感兴趣区域(RoI)提取器的比较。基线模型仅从单个特征图中裁剪RoI特征,导致严重的信息丢失,并取得了一般的结果。简单计算从多层裁剪的RoI特征的和或拼接可以略微提升性能。考虑到目标检测和实例分割任务需要不同的特征,引入自适应特征融合的分层RoI提取器(HRoIE)可以更好地为这些任务生成适当的RoI特征。

V ( d ) V(d) V(d)展示了消融研究结果。所提出的三个模块均能在遥感图像的目标检测和实例分割上略微带来更好的结果。当它们相互协作时,性能提升仍然稳定,表明这些模块不会相互干扰。通过将这些模块全部组合在一起,可以实现最佳的实验结果,从而能够同时从多个域聚合多尺度上下文。请注意, 1 × 1 \times 1×模型训练不足。通过适当的数据增强或更长的训练计划,我们的模型可以实现更好的性能。

五、结论

在本文中,我们对遥感图像中的全局视觉上下文进行了深入研究,并提出了所提出的CATNet,这是一个新型框架,能够利用三个轻量级的即插即用模块,即密集特征金字塔网络、空间上下文金字塔和分层感兴趣区域提取器,在特征域、空间域和实例域中聚合全局视觉上下文。研究表明,这三个模块之间的协作可以有效地增强区分性目标特征,从而提高目标检测和实例分割的准确性。在iSAID、DIOR、NWPU VHR-10和HRSID数据集上的实验结果表明,所提出的方法在相似的计算成本下显著优于最先进的方法。我们期望对全局视觉上下文的新理解以及所提出模块的设计将有益于该领域的未来研究。

致谢

本项目部分受到国家自然科学基金(41871246)和中国国家重点研究与发展计划(2019YFB2102901)的支持。

代码

from mmcv.cnn import ConvModule
from mmengine.model import caffe2_xavier_init, constant_init
import torch
import torch.nn as nn


class ContextAggregation(nn.Module):
    def __init__(self, in_channels, reduction=1):
        super(ContextAggregation, self).__init__()
        self.in_channels = in_channels
        self.reduction = reduction
        self.inter_channels = max(in_channels // reduction, 1)

        conv_params = dict(kernel_size=1, act_cfg=None)

        self.a = ConvModule(in_channels, 1, **conv_params)
        self.k = ConvModule(in_channels, 1, **conv_params)
        self.v = ConvModule(in_channels, self.inter_channels, **conv_params)
        self.m = ConvModule(self.inter_channels, in_channels, **conv_params)

        self.init_weights()

    def init_weights(self):
        for m in (self.a, self.k, self.v):
            caffe2_xavier_init(m.conv)
        constant_init(self.m.conv, 0)

    def forward(self, x):
        n, c = x.size(0), self.inter_channels

        # a: [N, 1, H, W]
        a = self.a(x).sigmoid()

        # k: [N, 1, HW, 1]
        k = self.k(x).view(n, 1, -1, 1).softmax(2)

        # v: [N, 1, C, HW]
        v = self.v(x).view(n, 1, c, -1)

        # y: [N, C, 1, 1]
        y = torch.matmul(v, k).view(n, c, 1, 1)
        y = self.m(y) * a
        return x + y

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java爬虫之使用Selenium WebDriver 爬取数据

这里写自定义目录标题 Selenium WebDriver简介一、安装部署二、Java项目中使用1.引入依赖2.示例代码 三、WebDriver使用说明1.WebDriver定位器2.常用操作3.使用 cookie4.键盘与鼠标操作 Selenium WebDriver简介 Selenium WebDriver 是一种用于自动化测试 Web 应用程序的工具。…

【实战指南】Vue.js 介绍组件数据绑定路由构建高效前端应用

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…

ollama + fastgpt+m3e本地部署

ollama fastgptm3e本地部署 开启WSL更新wsl安装ubuntu docker下载修改docker镜像源开启WSL integration 安装fastgpt先创建一个文件夹来放置一些配置文件用命令下载fastgpt配置文件用命令下载docker的部署文件 启动容器M3E下载ollama下载oneapi配置登录oneapi配置ollama渠道配…

聊聊零基础如何开始学习鸿蒙开发技术

鸿蒙系统是一款分布式操作系统,其适用范围非常广泛,从智能手机到家用电器,再到工业设备,都能找到应用场景。特别是在智能家居领域,鸿蒙系统可以实现不同设备之间的无缝连接和协同工作,提供更加智能和便利的…

Flink On kubernetes

Apache Flink 是一个分布式流处理引擎,它提供了丰富且易用的API来处理有状态的流处理应用,并且在支持容错的前提下,高效、大规模的运行此类应用。通过支持事件时间(event-time)、计算状态(state&#xff09…

数据治理为何如此简单?

欢迎来文末免费获取数据治理相关PPT和文档 引言 随着大数据技术的迅速发展,企业积累的数据量呈现爆炸式增长。有效的数据管理已经成为企业提高决策效率、增强竞争优势的重要手段。在这样的背景下,数据治理逐渐成为企业数据管理中不可或缺的一环。它不仅…

Vivado - Aurora 8B/10B IP

目录 1. 简介 2. 设计调试 2.1 Physical Layer 2.2 Link Layer 2.3 Receiver 2.4 IP 接口 2.5 调试过程 2.5.1 Block Design 2.5.2 释放 gt_reset 2.5.3 观察数据 3. 实用技巧 3.1 GT 坐标与布局 3.1.1 选择器件并进行RTL分析 3.1.2 进入平面设计 3.1.3 收发器布…

【二刷hot-100】day1

目录 1.两数之和 2.字母异位词分组 3.字母异位词分组 4.最长连续序列 5.移动零 6.盛最多水的容器 7.三数之和 8.接雨水 1.两数之和 class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> mapnew HashMap<>();for (int i0;i<…

LeakCanary

LeakCanary 文章目录 LeakCanary一、内容1. 使用方法2. 工作原理3.工作流程 参考资料 一、内容 LeakCanary 是在 Android 项目中&#xff0c;用于检测内存泄露&#xff0c;优化性能的工具。 1. 使用方法 本文使用版本为 2.5 版本&#xff0c;相比于 2.0 之前的版本&#xff…

嵌入式:Keil的Code、RW、RO、ZI段的解析

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html // 例1 int main(void) {HAL_Init(); /* 初始化HAL库 */sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟,72M */delay_init(72); …

[PHP]重复的Notice错误信息

<?php $a []; var_dump($a[name]);执行结果&#xff1a; 原因&#xff1a; display_errors和error_reporting都打开了Notice错误信息

前缀和一>寻找数组的中心下标

1.题目&#xff1a; 2.解析&#xff1a; 如果暴力解法时间复杂度是O(N^2)&#xff0c;定个&#xff0c;i&#xff0c;遍历左边右边&#xff1b; 这里可以优化为前缀和的做法&#xff0c;其实就是个动态规划。 代码&#xff1a; public int pivotIndex(int[] nums) {int n n…

如何利用边缘计算网关进行工厂设备数据采集?天拓四方

边缘计算网关集成了数据采集、处理和传输功能&#xff0c;位于传感器和执行器组成的设备层与云计算平台之间。它能够实时处理和响应本地设备的数据请求&#xff0c;减轻云平台的压力&#xff0c;提高数据处理的速度和效率。同时&#xff0c;边缘计算网关还可以将处理后的数据上…

基于SpringBoot+Vue+uniapp的个人财务系统的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不…

linux下编译鸿蒙版curl、openssl

随着鸿蒙系统的正式发布日益临近&#xff0c;我们预见到在适配过程中&#xff0c;部分开发者可能需要编译特定版本的库以确保兼容性&#xff0c;比如编译curl-7.81和openssl-1.1.1m&#xff08;大家可以直接访问它们的官方网站下载所需的版本&#xff09;。 接下来&#xff0c…

k8s的部署

一、K8S简介 Kubernetes中文官网&#xff1a;Kubernetes GitHub&#xff1a;github.com/kubernetes/kubernetes Kubernetes简称为K8s&#xff0c;是用于自动部署、扩缩和管理容器化应用程序的开源系统&#xff0c;起源于Google 集群管理工具Borg。 Kubernetes集群组件逻辑图…

算法专题七: 分治归并

目录 1. 排序数组2. 交易逆序对的总数3. 计算右侧小于当前元素的个数4. 翻转对 1. 排序数组 算法思路: 本道题使用归并的思路进行排序, 先讲数组分为左右两个区间, 然后合并两个有序数组. class Solution {vector<int> tmp; public:vector<int> sortArray(vector&…

[含文档+PPT+源码等]精品基于php实现的原生微信小程序心理健康服务系统的设计与实现

基于PHP实现的原生微信小程序心理健康服务系统的设计与实现背景&#xff0c;可以从以下几个方面进行详细阐述&#xff1a; 一、技术背景 PHP技术&#xff1a; 广泛应用&#xff1a;PHP是一种开源的服务器端脚本语言&#xff0c;广泛用于Web开发领域。其丰富的函数库和灵活的语…

Redis-04 主从架构原理与搭建及主从优化方案

生产中使用Redis往往非单机部署&#xff0c;虽然根据前文已经对redis做了数据持久化处理&#xff0c;但是如果Redis服务宕机&#xff0c;所有的数据操作都将直接进入数据库&#xff0c;如果操作量很大&#xff0c;则相当于出现缓存穿透的现象。故生产中使用Redis一般采取【主从…

鸿蒙系统开发快速入门教程

一、开发环境准备 1. 下载并安装DevEco Studio DevEco Studio是华为官方提供的鸿蒙应用开发IDE&#xff0c;集成了开发、调试、模拟运行等功能&#xff0c;是鸿蒙开发的首要工具。 下载地址&#xff1a;前往华为开发者官网下载DevEco Studio。安装步骤&#xff1a;按照官方提…