欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > YOLO11改进-模块-引入风车状卷积模块pinwheel-shaped convolutional module

YOLO11改进-模块-引入风车状卷积模块pinwheel-shaped convolutional module

2025/1/27 12:04:38 来源:https://blog.csdn.net/qq_64693987/article/details/145341463  浏览:    关键词:YOLO11改进-模块-引入风车状卷积模块pinwheel-shaped convolutional module

红外小目标检测与分割在军事和民用领域应用广泛,但红外小目标成像存在尺寸小、灰度低、信噪比和信杂比低、缺乏纹理信息以及受复杂背景干扰等问题。传统基于卷积神经网络(CNN)的方法在检测红外小目标时,多采用标准卷积,未充分考虑红外小目标像素分布的空间特性。研究发现红外小目标的灰度分布呈现高斯特征,因此需要一种更贴合其成像特性的卷积模块来提升检测性能。

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

改进后的

1. 风车状卷积模块PSConv 介绍          

        PConv 的设计基于红外小目标的高斯空间分布特性。其卷积核的感受野向外有效性递减,类似高斯分布,且小目标特征更集中于中心,凸显中心特征的重要性。PConv 利用分组卷积,在显著扩大感受野的同时,尽可能减少参数数量的增加。通过不对称填充,创建针对图像不同区域的水平和垂直卷积核,这些卷积核向外扩散,能够更好地捕捉红外小目标的特征,增强底层特征提取能力,提升对红外小目标的检测性能。    

        风车状卷积模块(PConv)的结构主要包含以下几个关键部分:

        1. 不对称填充与并行卷积:PConv 模块采用不对称填充方式,针对输入张量 ,在第一层进行 4 组并行卷积操作。针对不同区域,分别设置填充参数,如P(0,1,0,3)P(0,3,0,1)P(0,1,3,0)P(3,0,1,0) 。这 4 组填充参数分别对应不同方向的卷积核,其中P(1,0,0,3)表示在左、右、上、下方向的填充像素数。卷积核W^{​{_{1}}^{(1,3,c^{'})}}W^{​{_{2}}^{(3,1,c^{'})}}W^{​{_{3}}^{(1,3,c^{'})}}W^{​{_{4}}^{(3,1,c^{'})}}分别与经过相应填充后的输入进行卷积运算,得到 4 个特征图W^{​{_{1}}^{(h^{'},w^{'},c^{'})}}W^{​{_{2}}^{(h^{'},w^{'},c^{'})}}W^{​{_{3}}^{(h^{'},w^{'},c^{'})}}W^{​{_{4}}^{(h^{'},w^{'},c^{'})}} 。

        2. 拼接操作:将第一层并行卷积得到的 4 个特征图W^{​{_{1}}^{(h^{'},w^{'},c^{'})}}W^{​{_{2}}^{(h^{'},w^{'},c^{'})}}W^{​{_{3}}^{(h^{'},w^{'},c^{'})}}W^{​{_{4}}^{(h^{'},w^{'},c^{'})}}进行拼接(Cat)操作,形成一个新的张量 W^{​{_{t}}^{(h^{'},w^{'},4c^{'})}}。通过拼接,将不同方向卷积提取到的特征融合在一起,丰富了特征信息。

        3. 归一化卷积:拼接后的张量再经过一个卷积核进行卷积操作,该卷积过程不进行填充。通过这一步卷积,对拼接后的特征进行归一化处理,调整输出特征图的通道数,使其符合后续网络的输入要求,最终得到输出特征图 。

        4. 激活函数与归一化层:为增强训练的稳定性和速度,在每一层卷积操作之后,都会应用批量归一化(BN)和 Sigmoid 线性单元(SiLU)。批量归一化可以加速模型收敛,减少梯度消失或爆炸的问题;Sigmoid 线性单元则能够增加模型的非线性表达能力,使模型能够学习到更复杂的特征关系。2. YOLOv11与Sparse Self - Attention 的结合       可以在YOLOv11原有的局部特征基础上,增加对全局特征的关注,使特征表达更加丰富和准确。        3. 小波卷积WaveletConv代码部分

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

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

 4. 将PSConv 引入到YOLOv11中

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

  

第二:在task.py中导入

  

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

  

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

    

     第五:运行成功

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