欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > YOLO11改进-模块-引入多尺度边缘增强模块MEEM 提升模型对图像细节的捕捉能力,以实现更精准的显著目标检测。

YOLO11改进-模块-引入多尺度边缘增强模块MEEM 提升模型对图像细节的捕捉能力,以实现更精准的显著目标检测。

2025/3/12 18:13:08 来源:https://blog.csdn.net/qq_64693987/article/details/146051271  浏览:    关键词:YOLO11改进-模块-引入多尺度边缘增强模块MEEM 提升模型对图像细节的捕捉能力,以实现更精准的显著目标检测。

         在显著目标检测(SOD)任务中,Segment Anything Model(SAM)虽有强大的分割和泛化能力,但直接应用于 SOD 存在诸多问题。SAM 的图像块嵌入策略会导致细节信息丢失,且解码器中的上采样策略无法恢复关键细节,使得在检测具有复杂细节和边缘的显著物体时效果不佳。为解决这些问题,提出了 DEM,而 MEEM 是 DEM 的重要组成部分,用于从输入图像中提取多尺度边缘信息并增强细节,以提升 SOD 性能。

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

改进后的模型

1. 多尺度边缘增强模块MEEM介绍 

       MEEM 的理论基础在于通过多尺度处理和边缘增强来补充 SAM 在细节捕捉上的不足。利用平均池化扩大感受野,在不同尺度下提取图像的边缘信息,再通过边缘增强器突出物体边缘,使模型能够更好地感知物体的边界和细节。通过融合多尺度的边缘信息,MEEM 能够为后续的显著目标检测提供更丰富、更准确的细节特征,从而提高模型对复杂场景中显著物体的定位和分割精度。

从提供的图片来看,MEEM 模块主要包含以下几个部分:

        多尺度边缘增强模块(MEEM)主要用于在显著目标检测任务中,从输入图像中提取多尺度边缘信息并增强细节,其具体结构如下:

局部特征提取:先对输入图像运用 3×3 卷积层,从而得到包含初步细节信息的局部特征。这一步是后续处理的基础,为边缘信息的提取提供数据来源。

多尺度边缘信息提取:将局部特征通过 1×1 卷积层进行处理,得到初始的边缘特征。之后,利用平均池化和 1×1 卷积层的组合,分三步逐步提取多尺度的边缘信息。每次处理都是先对前一步的特征进行 1×1 卷积,再通过 3×3 平均池化来扩大感受野,以此在不同尺度下全面获取边缘信息。

边缘增强处理:针对每个尺度下得到的边缘特征,使用边缘增强器进行处理。边缘增强器先计算每个尺度特征与经过平均池化后的特征之间的差值,以此突出边缘部分,再将这个差值经过 1×1 卷积层处理后,与原特征相加,使得边缘信息更加明显。

特征融合输出:把经过边缘增强处理后的不同尺度的特征,按通道进行拼接,然后再经过 1×1 卷积层融合,最终得到包含多尺度边缘信息的特征。这个融合后的特征会与细节增强模块(DEM)中主要分支的特征相结合,补充其中缺少的细节信息,从而提升模型对显著目标的检测精度。 

2. YOLO和MEEM的结合           

本文使用MEEM模块替换C3K2模块中的普通卷积,这样MEEM 可以提供多尺度边缘细节特征,让 C3K2在检测时能更精准识别目标轮廓,增强对小目标和复杂场景的适应性,优化特征融合效果,提高检测精度与鲁棒性。

3. MEEM代码部分

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

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

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

 4. 将MEEM引入到YOLOv11中

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

             

第二:在task.py中导入

 ​​​     ​​​​​​​     

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

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

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

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

     第五:运行成功

from sympy import falsefrom ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorldif __name__=="__main__":# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型model = YOLO(r"E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\models\11\yolo11_MEEM.yamy")\.load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt')  # build from YAML and transfer weightsresults = 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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词