YOLO12改进-模块-引入边缘 - 高斯聚合模块EGA 适用于小目标、遮挡和低光照等领域

        遥感图像目标检测(RSOD)面临低质量图像的核心挑战,如对比度低、边缘结构不连续、光照变化导致的特征模糊等。传统深度学习方法难以有效捕捉低质量图像中的细节(如模糊目标的边缘)和不确定性(如噪声影响下的特征分布)。EGA 模块的提出旨在通过融合边缘先验信息和高斯建模,解决上述问题,提升特征表示的鲁棒性,尤其适用于小目标、遮挡和低光照等复杂场景。

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

1. 边缘 - 高斯聚合模块Edge-Gaussian Aggregation Module 介绍 

  1. 边缘先验(Edge Priors)

    1. Scharr 算子:一种改进的 Sobel 边缘检测算子,对边缘方向更敏感,具有旋转不变性,能有效提取高频边缘细节。通过水平(Sx​)和垂直(Sy​)方向的卷积核,计算边缘响应的欧氏范数,生成边缘注意力图 Aedge​,增强目标边界的清晰度。

    2. 应用场景:适用于图像浅层(Stage 1),此时特征图分辨率较高,保留丰富的边缘细节,适合定位目标轮廓。

  2. 高斯建模(Gaussian Modeling)

    1. 不确定性感知:低质量图像的特征常呈现模糊或噪声干扰,高斯分布可建模特征的概率分布,通过方差估计量化不确定性。固定高斯核(如σ=1.0的 5×5 核)对特征图进行深度卷积,抑制背景噪声,增强显著特征(如目标中心区域)的权重,生成高斯注意力图 Agauss​。

    2. 应用场景:适用于图像深层(Stages 2-4),此时特征图分辨率降低,目标特征更符合高斯分布,通过平滑处理减少噪声对高层语义的影响。

  3. 传统与深度学习的融合

          EGA 通过结合传统图像处理中的边缘检测(Scharr)和深度学习中的概率建模(高斯核),构建了空间边界优化与特征空间不确定性管理的双路径框架,弥补了单一卷积操作在低质量图像中的不足。

      

EGA(Edge - Gaussian Aggregation)结构分阶段处理输入特征:

        Stage 1:采用边缘提取,对输入特征进行处理,生成边缘权重图 Aega​ ,突出图像边缘信息。

        Stages 2 - 4:进行高斯建模,生成高斯权重图 Aega​ ,强调特征的中心区域 。
之后,生成的 Aega​ 与输入特征进行元素相加,经卷积块(Conv Block)处理得到 Fa​ , Fa​ 与输入特征通过特定运算融合,再经 3×3 卷积,输出最终特征 Fega​ 。

2. YOLOv12与EGA的结合          

        将 EGA(边缘 - 高斯聚合模块)与 YOLOv11 的 C3K2 模块结合时,可在 C3K2 的残差分支中嵌入 EGA,利用其边缘先验和高斯建模能力增强特征细节与抗噪性,实现对低质量遥感图像中多尺度目标的鲁棒检测,在轻量化的同时提升特征表达的丰富度。

3. EGA代码部分

https://github.com/tgf123/YOLOv8_improve/blob/master/YOLOV12.md

 4. 将EGA引入到YOLOv12中

第一: 先新建一个change_model,将下面的核心代码复制到下面这个路径当中,如下图如所示。YOLOv12\ultralytics\change_model。

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

第二:在task.py中导入

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

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

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

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

 ​​​​​​​

     ​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​​​​​​​第五:运行代码


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

if __name__=="__main__":

    # 使用自己的YOLOv12.yamy文件搭建模型并加载预训练权重训练模型
    model = YOLO(r"E:\Part_time_job_orders\YOLO_NEW\YOLOv12_all\ultralytics\cfg\models\12\yolo12_EGA.yaml")
        # .load(r'E:\Part_time_job_orders\YOLO_NEW\YOLOv12\yolo12n.pt')  # build from YAML and transfer weights

    results = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOv12\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
                          )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值