YOLO11改进-模块-引入双分支特征提取(Twin-Branch Feature Extraction,TBFE)解决小目标问题、遮挡

        高光谱图像(HSI)分类旨在将每个像素准确分类,早期研究多聚焦于光谱特征,采用经典机器学习技术,但这些方法对 HSI 光谱特性分析不全面,且未充分利用空间域像素间特征相关性。随着深度学习发展,多种基于深度学习的方法被提出,如基于卷积神经网络(CNNs)和 Transformer 的方法。然而,现有方法在有效联合利用空间 - 光谱信息以及在传播过程中跨层保存信息方面仍面临挑战。CNNs 在分析空间特征方面有效,但难以充分利用 HSI 内在的序列光谱信息;Transformer 虽擅长识别空间和光谱数据间长程依赖关系,但在从卷积获得的浅层特征中提取多维特征时存在困难,可能导致特征提取不足。因此,需要一种新的模块来更好地提取 HSI 的空间和光谱特征。

上面是原模型,下面是改进模型

改进后的模型

1. 双分支特征提取模块TBFE介绍 

       TBFE 模块的设计基于 CNN 强大的局部特征提取能力。通过并行使用 3D 和 2D 卷积,分别从光谱和空间维度对 HSI 数据进行特征提取,旨在在特征提取早期无缝集成光谱和空间信息。利用低输出通道的逐点卷积层调整 HSI 的通道维度,减少后续层的输入通道数,降低计算复杂度的同时提取光谱信息。3D 卷积结合扩展和挤压机制,增强对光谱特征的捕获能力;2D 卷积用于提取光谱 - 空间特征,两者结合可充分发挥各自优势,提升模型对光谱 - 空间特征的表示能力。

从提供的图片来看,极性感知注意力模块主要包含以下几个部分:

逐点卷积层:TBFE 模块以特定大小的训练样本补丁为输入。起始的逐点卷积层采用1x1卷积核,在不改变特征图空间尺寸的前提下,调整通道维度。这不仅降低后续层输入通道数,减少计算量,还能初步提取光谱信息。

3D 卷积分支:经逐点卷积的特征图进入 3D 卷积分支。先扩展维度以适配 3D 卷积,再使用1x1x3卷积核进行卷积,并通过填充保证输出维度不变。之后经挤压操作恢复到三维空间,得到专注光谱特征的 3D 特征图。

2D 卷积分支:与 3D 卷积分支并行的 2D 卷积分支,以相同的逐点卷积后特征图为输入。利用3x3卷积核捕捉光谱 - 空间特征,卷积前进行填充以保持特征图尺寸。后续集成激活函数和归一化层,增强模型学习能力并稳定训练。

融合与后续处理:3D 和 2D 卷积分支得到的特征图在通道维度拼接,融合光谱与空间特征优势。模块末尾添加激活函数和归一化层提升泛化能力,再堆叠两个 2D 卷积层,进一步优化特征提取效果,为后续分类任务提供更优质特征 。

2. YOLOv11与TBFE的结合          

 本文使用极性感知注意力模块替换C3K2模块中的普通卷积,增强YOLOv11模型空间特征,解决小目标、遮挡问题。

3. TBFE代码部分

YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve · GitHub

视频讲解:YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili

YOLOv11模型改进讲解,教您如何根据自己的数据集选择最优的模块提升精度_哔哩哔哩_bilibili

YOLOv11全部代码,现有几十种改进机制。

 4. 将TBFE引入到YOLOv11中

第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_model路径下,如下图所示。

         

第二:在task.py中导入

 ​​​        

第三:在task.py中的模型配置部分下面代码

 ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​   

第四:将模型配置文件复制到YOLOV11.YAMY文件中

     ​​​​​​​ ​​​​​​​  

     第五:运行成功

from sympy import false

from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld

if __name__=="__main__":

    # 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
    model = YOLO(r"E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\models\11\yolo11_TBFE.yamy")\
        .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt')  # build from YAML and transfer weights

    results = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\datasets\VOC_my.yaml',
                          epochs=300,
                          imgsz=640,
                          batch=64,
                          # cache = False,
                          # single_cls = False,  # 是否是单类别检测
                          # workers = 0,
                          # resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',
                          amp = True
                          )
### 双分支YOLO目标检测模型概述 双分支YOLO(You Only Look Once)目标检测模型是一种改进型的一阶段检测框架,旨在通过引入额外的处理路径来提升检测精度和鲁棒性。这种架构通常会增加一个辅助分支用于特征增强或专门的任务导向处理[^1]。 对于双分支YOLO的具体实现方式,主要思路是在原有YOLO网络结构基础上加入第二个并行的工作流。这个新的分支可能专注于不同尺度下的特征提取、上下文信息融合或是针对特定类型的物体进行优化。这样的设计能够使模型更有效地捕捉到复杂场景中的多变因素,从而提高整体表现。 #### 关键技术要点 - **基础网络选择**:一般采用预训练好的卷积神经网络作为骨干网,比如Darknet系列或其他高效能的基础模型。 - **特征金字塔构建**:为了小目标识别效果,在两个分支间共享低层通用特征的同时,各自独立发展高层语义特征,形成多层次感知能力。 - **损失函数调整**:除了常规的对象分类与定位误差外,还需考虑如何平衡两支路之间的贡献权重以及它们相互协作的方式。 ```python import torch.nn as nn class TwoBranchYOLO(nn.Module): def __init__(self, num_classes=80): super(TwoBranchYOLO, self).__init__() # 主干网络定义 self.backbone = DarkNet53() # 分支A: 处理大尺寸特征图 self.branch_A_conv = nn.Sequential( ConvBlock(1024, 512), ConvBlock(512, 1024), ... ) # 分支B: 负责细粒度局部特征挖掘 self.branch_B_conv = nn.Sequential( ConvBlock(1024, 256), ConvBlock(256, 512), ... ) # 输出预测头 self.prediction_head = PredictionHead(num_anchors=9, num_classes=num_classes) def forward(self, x): backbone_out = self.backbone(x) branch_a_features = self.branch_A_conv(backbone_out) branch_b_features = self.branch_B_conv(backbone_out) combined_features = torch.cat([branch_a_features, branch_b_features], dim=1) predictions = self.prediction_head(combined_features) return predictions ``` 上述代码片段展示了简化版的双分支YOLO模型搭建过程,其中包含了两条平行发展的特征加工线路,并最终将两者的结果汇总起来送入预测头部完成最后一步操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值