增强层间特征相关性-EFC,通过增强特征金字塔不同层级间的特征关联性,并优化特征重构过程,提升小目标检测的精度

发布于:2025-07-12 ⋅ 阅读:(13) ⋅ 点赞:(0)

        在无人机影像等场景中,小目标检测面临低分辨率、背景融合导致特征信息有限的挑战。传统多尺度特征融合策略(如 FPN 中的简单拼接或相加)未能充分利用多尺度融合优势,特征间相关性不足,且在复杂背景和密集区域中表现不佳。同时,深层网络中 3×3 大卷积核易产生冗余特征,导致小目标信息丢失或语义偏移。为解决这些问题并高效利用计算资源,研究人员提出了基于增强层间特征相关性(EFC)的轻量级融合策略。

1.EFC原理

        EFC 通过增强层间特征相关性和优化特征重构,提升小目标检测性能。其核心思路是:针对特征金字塔不同层语义表达不一致的问题,先通过分组特征聚焦单元(GFF)捕捉不同特征的上下文信息,增强各层特征相关性;再通过多级特征重构模块(MFR)对金字塔各层的强弱信息进行有效重构和转换,减少冗余融合,保留深层网络中小目标信息。该策略以轻量级设计为核心,避免大卷积核带来的计算负担,同时通过分层解构特征,平衡语义信息与空间定位的匹配度。

 

FC 由两个关键模块组成,整体结构可集成到 FPN 的 neck 部分:

        分组特征聚焦单元(GFF):包含空间聚焦(通过 1×1 卷积生成空间聚合权重,增强空间上下文信息)、特征分组融合(沿通道维度分组并进行特征交互,生成通道注意力掩码)、空间映射归一化(利用均值和标准差归一化特征,融入小目标空间位置信息),最终输出具有强相关性和丰富空间信息的特征Pf​。

        多级特征重构模块(MFR):包含特征分离(通过平均池化和阈值划分强弱特征)、定向融合(分别对强弱特征进行映射和融合)、特征转换(强特征用 1×1 卷积细化,弱特征通过深度可分离卷积和通道调制轻量转换)、层级融合(合并转换后的强弱特征),输出保留小目标信息且语义增强的特征Pm​。两者结合生成的特征Pk​兼具空间和语义一致性,替代传统融合操作。 TeLU其

2.EFC习作思路

EFC 在检测领域论文中的描述

        在检测领域论文中,EFC 被定义为一种轻量级特征融合策略,通过增强层间特征相关性解决小目标检测的瓶颈。论文强调其 “即插即用” 特性,可适配多种基础网络(如 GFL、RetinaNet),在 VisDrone、UAVDT、COCO 等数据集上,以 GFL 为基线时 mAP 提升 1.7%,同时显著降低 neck 端的参数(Params)和计算量(GFLOPs),尤其在密集小目标场景中,通过增强特征相关性和减少信息丢失,实现精度与效率的平衡。

EFC 在分割领域论文中的描述

        若应用于分割领域,论文可能会强调 EFC 对多尺度特征细节的保留能力:通过 GFF 增强不同层级特征的上下文关联,帮助捕捉分割目标的边缘和细微结构;MFR 模块减少深层特征冗余,确保小目标或细粒度区域(如遥感影像中的小建筑、医学影像中的微小病灶)的特征不被背景淹没,从而提升分割掩码的精度,同时保持轻量级设计以适应实时分割需求。

3. YOLO与EFC的结合          

         将 EFC 整合到 YOLO 中,可通过增强层间特征相关性提升小目标检测精度,尤其在无人机视角等小目标密集场景中减少漏检;同时,其轻量级设计替代 YOLO 原 neck 中的大卷积核,降低计算量和参数,提升推理速度,适配 YOLO 的实时性需求。 

4.EFC代码部分

YOLO12模型改进方法,快速发论文,总有适合你的改进,还不改进上车_哔哩哔哩_bilibili

 代码获取:YOLOv8_improve/YOLOV12.md at master · tgf123/YOLOv8_improve · GitHub

5. EFC到YOLOv12中

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

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

第二:在task.py中导入

 ​​​                  ​​​​​​​

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

               ​​​​​​​       

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

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

 第五:运行代码

from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
import torch
if __name__=="__main__":



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

    results = model.train(data="/home/shengtuo/tangfan/YOLO11/ultralytics/cfg/datasets/VOC_my.yaml",
                          epochs=300,
                          imgsz=640,
                          batch=4,
                          # cache = False,
                          # single_cls = False,  # 是否是单类别检测
                          # workers = 0,
                          # resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',
                          amp = True
                          )


网站公告

今日签到

点亮在社区的每一天
去签到