遥感图像(RSIs)中的目标检测面临着一系列日益严峻的挑战,主要包括目标尺度的显著变化和背景的多样性。以往的方法通常通过增大骨干网络的空间感受野来应对这些问题,具体方法包括使用大卷积核或膨胀卷积。然而,使用大卷积核时,通常会引入大量的背景噪声,而膨胀卷积则可能导致特征表示过于稀疏。为了解决这些问题,本文提出了一种多核感知网络(PKINet)。PKINet采用无膨胀的多尺度卷积核来提取不同尺度的目标特征,并有效捕捉局部背景信息。同时,文中并行引入了上下文锚点注意力(CAA)模块,以捕捉长距离的上下文信息。这两个组件的结合显著提升了PKINet在四个具有挑战性的遥感检测基准数据集上的性能,包括DOTA-v1.0、DOTA-v1.5、HRSC2016和DIOR-R。
1.PKINet的网络结构
PKINet的设计旨在有效处理遥感图像中的目标检测任务,尤其是针对目标尺度变化大和背景复杂的情况。其网络结构主要由以下几个核心组件构成:
1. Stem层
Stem层负责对输入图像进行初步特征提取,生成初步的特征。
2. PKI模块(Poly Kernel Inception Module)
多尺度卷积:PKI模块使用不同大小的卷积核(如3x3、5x5、7x7和11x11)进行特征提取。这样可以捕捉到不同尺度的目标特征,增强对各种目标的识别能力。
无膨胀卷积:采用普通卷积而非膨胀卷积,避免引入过多背景噪声,保持特征表示的密集性。
深度可分离卷积:使用深度可分离卷积来减少计算复杂度和参数量,通过空间卷积和逐点卷积相结合,提升特征提取的效率。
3. CAA模块(Context Anchor Attention Module)
上下文信息捕捉:CAA模块通过全局平均池化操作提取图像的全局上下文特征,并生成注意力权重。
特征加权:这些权重随后与输入特征图相乘,动态调整特征的响应,增强重要特征的表达能力,抑制不重要的背景信息。
并行引入:CAA模块与PKI模块并行使用,能够有效结合局部特征与长距离上下文信息,从而提升目标检测的性能。
4. 残差结构
PKINet在PKI模块和CAA模块之间使用残差连接,确保信息的有效流动。这种连接可以减轻深层网络中的梯度消失问题,提高训练效率。
2. 添加多核感知网络PKINet
由于PKINet是一个backbone,因此本研究只使用PKI模块对YOLOv8做改进。本次改进主要有两种,一是直接使用stage I替换CF2,另一个是将CF2和PKI Block相结合变成C2f_PKIBlock替换原来的CF2模块。
接下来,我们将详细介绍如何将PKI集成到 YOLOv8 模型中。
这是我的GitHub代码:tgf123/YOLOv8_improve (github.com)
这是改进讲解:YOLOv8模型改进 第三讲 添加多核感知网络PKINet以及CAA模块_哔哩哔哩_bilibili
2.1 如何添加
1. 首先,在我上传的代码中yolov8_improve中找到PKInet.py代码部分,它包含两个部分一个是PKInet.py的核心代码,一个是yolov8模型的配置文件。
2. 然后我们在modules文件夹下面创建PKInet.py文件,然后将PKInet的核心代码放入其中
3. 然后在 task.py文件中导入
from ultralytics.nn.modules.PKInet import C2f_PKIBlock,PKIStage
4. 然后将 C2f_PKIBlock和PKIStage添加到下面当中
5. 然后将 C2f_PKIBlock和PKIStage添加到下面当中
6. 然后将配置文件复制到文件夹中训练模型,你可以选择两个模块,一个C2f_PKIBlock,一个是PKIStage,可以使用着两个模块来替换原cf2模块。