前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >YOLOv12优化:卷积魔改创新 | AAAI 2025 | 一种新颖的风车形卷积(PConv)符合微弱小目标的像素高斯空间分布,增强特征提取,显著增加接受野

YOLOv12优化:卷积魔改创新 | AAAI 2025 | 一种新颖的风车形卷积(PConv)符合微弱小目标的像素高斯空间分布,增强特征提取,显著增加接受野

原创
作者头像
AI小怪兽
发布于 2025-03-19 01:12:50
发布于 2025-03-19 01:12:50
57500
代码可运行
举报
文章被收录于专栏:毕业设计毕业设计YOLO大作战
运行总次数:0
代码可运行

💡💡💡 我们提出了一种新颖的风车形卷积(PConv)作为骨干网络下层标准卷积的替代品。PConv能更好地符合微弱小目标的像素高斯空间分布,增强特征提取,显著增加接受野,且只引入最小的参数增加。

💡💡💡一种新颖的风车形卷积(PConv) 在IRSTD-1K和sist - uavb数据集上实现了显着的性能改进,验证了我们方法的有效性和可泛化性

💡💡💡如何使用:1)直接作为卷积使用;

☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

《YOLOv12魔术师专栏》将从以下各个方向进行创新:

链接:

YOLOv12魔术师

添加图片注释,不超过 140 字(可选)

原创自研模块】【多组合点优化】【注意力机制】【卷积魔改】【block&多尺度融合结合】【损失&IOU优化】【上下采样优化 【小目标性能提升】前沿论文分享】【训练实战篇】

订阅者提供本文windows下编译好的YOLOv12环境

定期向订阅者提供源码工程,配合博客使用。

订阅者可以申请发票,便于报销

💡💡💡为本专栏订阅者提供创新点改进代码,改进网络结构图,方便paper写作!!!

💡💡💡适用场景:红外、小目标检测、工业缺陷检测、医学影像、遥感目标检测、低对比度场景

💡💡💡适用任务:所有改进点适用【检测】、【分割】、【pose】、【分类】等

💡💡💡全网独家首发创新,【自研多个自研模块】,【多创新点组合适合paper 】!!!

☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

包含注意力机制魔改、卷积魔改、检测头创新、损失&IOU优化、block优化&多层特征融合、 轻量级网络设计、25年最新顶会改进思路、原创自研paper级创新等

🚀🚀🚀 本项目持续更新 | 更新完结保底≥80+ ,冲刺100+ 🚀🚀🚀

💡💡💡 2024年计算机视觉顶会创新点适用于Yolov5、Yolov7、Yolov8、Yolov9、Yolov10、Yolo11等各个Yolo系列,专栏文章提供每一步步骤和源码,轻松带你上手魔改网络 !!!

💡💡💡重点:通过本专栏的阅读,后续你也可以设计魔改网络,在网络不同位置(Backbone、head、detect、loss等)进行魔改,实现创新!!!

☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️

1.YOLOv12介绍

添加图片注释,不超过 140 字(可选)

论文:[2502.12524] YOLOv12: Attention-Centric Real-Time Object Detectors

摘要:

长期以来,提升YOLO框架的网络架构至关重要,但相关改进主要聚焦于基于CNN的优化,尽管注意力机制已被证实具备更卓越的建模能力。这种现状源于注意力模型在速度上始终无法与CNN模型相媲美。本研究提出了一种以注意力机制为核心的YOLO框架——YOLOv12,在保持与先前CNN模型相当速度的同时,充分释放了注意力机制的性能优势。

YOLOv12在保持具有竞争力的推理速度下,其准确率超越了所有主流实时目标检测器。具体而言,YOLOv12-N在T4 GPU上以1.64ms的推理延迟实现了40.6%的mAP,相较先进的YOLOv10-N/YOLOv11-N分别提升2.1%/1.2%的mAP,同时保持相近速度。该优势在其他模型规模上同样显著。相较于改进DETR的端到端实时检测器,YOLOv12也展现出优越性:例如YOLOv12-S以42%的速度优势超越RT-DETR-R18/RT-DETRv2-R18,仅需36%的计算量和45%的参数量。更多对比详见图1。

结构图如下:

添加图片注释,不超过 140 字(可选)

本文旨在解决这些挑战,并进一步构建了一个以注意力为中心的YOLO框架,即YOLOv12。我们引入了三项关键改进。首先,我们提出了一个简单高效的区域注意力模块(A²),它以一种非常简单的方式在保持较大感受野的同时减少了注意力的计算复杂度,从而提高了速度。其次,我们引入了残差高效层聚合网络(R-ELAN),以应对注意力机制(尤其是大规模模型)引入的优化挑战。R-ELAN在原始ELAN的基础上引入了两项改进:(i)基于块的残差设计与缩放技术;(ii)重新设计的特征聚合方法。第三,我们在传统注意力机制的基础上进行了一些架构改进,以适应YOLO系统。我们升级了传统的注意力中心架构,包括:引入FlashAttention以解决注意力的内存访问问题,移除位置编码等设计以使模型更快速、更简洁,将MLP比率从4调整为1.2以平衡注意力机制和前馈网络之间的计算量,从而获得更好的性能,减少堆叠块的深度以促进优化,以及尽可能多地利用卷积操作来发挥其计算效率。

总之,YOLOv12的贡献可以概括为以下两点:1)它建立了一个以注意力为中心的、简单而高效的YOLO框架,通过方法创新和架构改进,打破了CNN模型在YOLO系列中的主导地位。2)YOLOv12在不依赖预训练等额外技术的情况下,实现了快速推理速度和更高的检测精度的最新成果,展现了其潜力。

1.1 Area Attention

YOLOv12设计了区域注意力模块(A2),将特征图划分为简单的垂直或水平区域,减少了注意力机制的计算复杂度,同时保持了较大的感受野。

核心源码如下:

代码位置ultralytics/nn/modules/block.py

1.2 A2C2f

A2C2f模块全称为“Area-Attention Enhanced Cross-Feature module”,是YOLOv12中提出的一种改进型特征提取模块,结合了区域注意力(Area-Attention)和残差连接,主要用于提升特征提取的效率和精度

A2C2f模块由以下关键部分组成:

  • cv1和cv2:两层1×1卷积,分别用于输入特征的降维和输出特征的升维。
  • ABlock模块:A2C2f的核心,包含区域注意力(Area-Attention)和MLP(多层感知机)层,用于快速特征提取和注意力机制的增强。
  • 残差连接:可选的残差连接,用于稳定训练并增强特征的表达能力。

代码位置ultralytics/nn/modules/block.py

2.原理介绍

添加图片注释,不超过 140 字(可选)

论文:2412.16986

摘要:近年来,基于卷积神经网络(CNN)的红外小目标检测方法取得了优异的成绩。然而,这些方法通常采用标准卷积,忽略了考虑红外小目标像元分布的空间特征。因此,我们提出了一种新颖的风车形卷积(PConv)作为骨干网络下层标准卷积的替代品。PConv能更好地符合微弱小目标的像素高斯空间分布,增强特征提取,显著增加接受野,且只引入最小的参数增加。此外,虽然最近的损失函数结合了尺度和位置损失,但它们不能充分考虑这些损失在不同目标尺度上的不同灵敏度,从而限制了对弱小目标的检测性能。为了克服这个问题,我们提出了一种基于尺度的动态(SD)损失,它根据目标大小动态调整尺度和位置损失的影响,提高了网络检测不同尺度目标的能力。我们构建了一个新的基准,sist -uavb,这是迄今为止最大和最具挑战性的单帧红外小目标检测数据集。最后,通过将PConv和SD Loss集成到最新的小目标检测算法中,我们在IRSTD-1K和sist - uavb数据集上实现了显着的性能改进,验证了我们方法的有效性和可泛化性

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

新颖的风车形卷积 PConv模块的结构如图3所示。

与普通卷积(Conv)不同,PConv采用非对称填充来为图像的不同区域创建水平和垂直卷积核。这些卷积核向外扩散,其中h1、w1和c1分别表示输入张量X(h1,w1,c1)的高度、宽度和通道大小。为了增强训练的稳定性和速度,我们在每次卷积后应用批归一化(BN)和SiLU激活函数。PConv的第一层执行并行卷积,具体如下:

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图2的右上角显示,基于IoU的损失(Sloss)波动可达86%。较小的目标在IoU损失中经历更大的不稳定性,这对模型的稳定性和回归性能产生了负面影响。然而,我们观察到无论边界框(BBox)的大小如何,质心坐标与目标的重心偏差不超过1个像素。因此,我们根据目标尺度动态调整Sloss和Lloss的影响系数,以减少标签不准确对损失函数稳定性的影响。如图5(a)所示,较小的目标在BBox标签的Sloss中获得较低的关注权重。掩码标签可以提高检测精度,特别是对于较小或形状不规则的目标。然而,如图2左下角所示,IRST的模糊边界导致了62%的Sloss波动。较小的目标进一步增加了这种不稳定性。此外,掩码标签的Lloss考虑了图像中所有物体的平均位置,这使得当错过一个物体时难以收敛,从而导致更多的误报。因此,如图5(b)所示,我们增强了掩码标签Sloss的影响,以确保模型更加关注Sloss。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图6:IRST检测模型的结果可视化。

添加图片注释,不超过 140 字(可选)

3.如何加入到YOLOv12

3.1新建ultralytics/nn/Conv/APConv.py

核心源码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
######################################## APConv AAAI2025   by AI Little monster start  ########################################

import torch
import torch.nn as nn
import torch.nn.functional as F

from ultralytics.nn.modules.conv import Conv,autopad
from ultralytics.nn.modules.block import Bottleneck, C2f,C3k,C3k2


class PConv(nn.Module):  
    ''' Pinwheel-shaped Convolution using the Asymmetric Padding method. '''
    
    def __init__(self, c1, c2, k, s):
        super().__init__()

        # self.k = k
        p = [(k, 0, 1, 0), (0, k, 0, 1), (0, 1, k, 0), (1, 0, 0, k)]
        self.pad = [nn.ZeroPad2d(padding=(p[g])) for g in range(4)]
        self.cw = Conv(c1, c2 // 4, (1, k), s=s, p=0)
        self.ch = Conv(c1, c2 // 4, (k, 1), s=s, p=0)
        self.cat = Conv(c2, c2, 2, s=1, p=0)

    def forward(self, x):
        yw0 = self.cw(self.pad[0](x))
        yw1 = self.cw(self.pad[1](x))
        yh0 = self.ch(self.pad[2](x))
        yh1 = self.ch(self.pad[3](x))
        return self.cat(torch.cat([yw0, yw1, yh0, yh1], dim=1))

原文链接:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://cv2023.blog.csdn.net/article/details/146339247

3.2 yolov12-APConv.yaml

添加图片注释,不超过 140 字(可选)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
​# YOLOv12 🚀, AGPL-3.0 license
# YOLOv12 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect

# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov12n.yaml' will call yolov12.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.50, 0.25, 1024] # summary: 465 layers, 2,603,056 parameters, 2,603,040 gradients, 6.7 GFLOPs
  s: [0.50, 0.50, 1024] # summary: 465 layers, 9,285,632 parameters, 9,285,616 gradients, 21.7 GFLOPs
  m: [0.50, 1.00, 512] # summary: 501 layers, 20,201,216 parameters, 20,201,200 gradients, 68.1 GFLOPs
  l: [1.00, 1.00, 512] # summary: 831 layers, 26,454,880 parameters, 26,454,864 gradients, 89.7 GFLOPs
  x: [1.00, 1.50, 512] # summary: 831 layers, 59,216,928 parameters, 59,216,912 gradients, 200.3 GFLOPs

# YOLO12n backbone
backbone:
  # [from, repeats, module, args]
  - [-1, 1, PConv,  [64, 3, 2]] # 0-P1/2
  - [-1, 1, PConv,  [128, 3, 2]] # 1-P2/4
  - [-1, 2, C3k2,  [256, False, 0.25]]
  - [-1, 1, PConv,  [256, 3, 2]] # 3-P3/8
  - [-1, 2, C3k2,  [512, False, 0.25]]
  - [-1, 1, PConv,  [512, 3, 2]] # 5-P4/16
  - [-1, 4, A2C2f, [512, True, 4]]
  - [-1, 1, PConv,  [1024, 3, 2]] # 7-P5/32
  - [-1, 4, A2C2f, [1024, True, 1]] # 8

# YOLO12n head
head:
  - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
  - [[-1, 6], 1, Concat, [1]] # cat backbone P4
  - [-1, 2, A2C2f, [512, False, -1]] # 11

  - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
  - [[-1, 4], 1, Concat, [1]] # cat backbone P3
  - [-1, 2, A2C2f, [256, False, -1]] # 14

  - [-1, 1, PConv, [256, 3, 2]]
  - [[-1, 11], 1, Concat, [1]] # cat head P4
  - [-1, 2, A2C2f, [512, False, -1]] # 17

  - [-1, 1, PConv, [512, 3, 2]]
  - [[-1, 8], 1, Concat, [1]] # cat head P5
  - [-1, 2, C3k2, [1024, True]] # 20 (P5/32-large)

  - [[14, 17, 20], 1, Detect, [nc]] # Detect(P3, P4, P5)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL优化原理
前言 说起MySQL的查询优化,相信大家收藏了一堆:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理? 在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。 一、MySQL逻辑架构    如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。
用户1195962
2018/01/18
1.1K0
MySQL优化原理
【说站】mysql使用关联查询的注意点
在创建索引的时候就要考虑到关联的顺序。当表A和表B用列c关联的时候,如果优化器关联的顺序是A、B,那么就不需要在A表的对应列上创建索引。没有用到的索引会带来额外的负担,一般来说,除非有其他理由,只需要在关联顺序中的第二张表的相应列上创建索引。
很酷的站长
2022/11/23
1K0
MySql查询性能优化
在访问数据库时,应该只请求需要的行和列。请求多余的行和列会消耗MySql服务器的CPU和内存资源,并增加网络开销。 例如在处理分页时,应该使用LIMIT限制MySql只返回一页的数据,而不是向应用程序返回全部数据后,再由应用程序过滤不需要的行。 当一行数据被多次使用时可以考虑将数据行缓存起来,避免每次使用都要到MySql查询。 避免使用SELECT *这种方式进行查询,应该只返回需要的列。
lyb-geek
2018/07/26
2.2K0
数据库优化方案之SQL脚本优化
随着数据库数据越来越大,数据单表存在的数据量也就随之上去了,那么怎么样让我们的脚本查询数据更快呢?
用户1112962
2019/11/15
1.5K0
为什么 EXISTS(NOT EXIST) 与 JOIN(LEFT JOIN) 的性能会比 IN(NOT IN) 好
网络上有大量的资料提及将 IN 改成 JOIN 或者 exist,然后修改完成之后确实变快了,可是为什么会变快呢?IN、EXIST、JOIN 在 MySQL 中的实现逻辑如何理解呢?本文也是比较粗浅的做一些介绍,知道了 MySQL 的大概执行逻辑,也方便理解。本书绝大多数内容来自:高性能MySQL第三版(O'Reilly.High.Performance.MySQL.3rd.Edition.M),还有一部分来自于网络,还有的来自于自己的理解,以下的内容有引用的都会做标准,如有雷同,纯属巧合。
用户3148308
2018/10/10
6.9K0
mysql如何执行关联查询与优化
在数据库中执行查询(select)在我们工作中是非常常见的,工作中离不开CRUD,在执行查询(select)时,多表关联也非常常见,我们用的也比较多,那么mysql内部是如何执行关联查询的呢?它又做了哪些优化呢?今天我们就来揭开mysql关联查询的神秘面纱。
小忽悠
2018/09/04
3.5K0
mysql如何执行关联查询与优化
mysql的sql语句优化5种方式_MySQL数据库优化
本篇是MySQL知识体系总结系列的第二篇,该篇的主要内容是通过explain逐步分析sql,并通过修改sql语句与建立索引的方式对sql语句进行调优,也可以通过查看日志的方式,了解sql的执行情况,还介绍了MySQL数据库的行锁和表锁。
全栈程序员站长
2022/09/24
1.8K0
mysql的sql语句优化5种方式_MySQL数据库优化
深入探索SQL优化:利用慢查询日志和explain提升数据库效率
开始之前推荐一篇实用的文章:《MySQL存储引擎大厂面试经典三连问》,作者:【小白的大数据之旅】。
Lion 莱恩呀
2024/11/29
2600
深入探索SQL优化:利用慢查询日志和explain提升数据库效率
什么是内连接、外连接?MySQL支持哪些外连接?_oracle内连接和外连接的区别
图片与最后一部分来自:https://blog.csdn.net/plg17/article/details/78758593
全栈程序员站长
2022/09/27
1.2K0
什么是内连接、外连接?MySQL支持哪些外连接?_oracle内连接和外连接的区别
图解数据库内连接、外连接、左连接、右连接、全连接等
用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。
浩Coding
2019/07/03
6.1K0
mysql执行计划看是否最优
  本篇主要通过汇总网上的大牛的知识,简单介绍一下如何使用mysql的执行计划,并根据执行计划判断如何优化和是否索引最优。
全栈程序员站长
2021/11/29
9060
mysql数据库优化(二)
https://www.cnblogs.com/sevck/p/6733702.html
用户1558882
2018/10/11
1.2K0
mysql数据库优化(二)
Mysql进阶优化篇01——四万字详解数据库性能分析工具(深入、全面、详细,收藏备用)
数据库的优化整个流程划分成了 观察(Show status) 和 行动(Action) 两个部分。数据库的优化可以总结为下图。字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行动)。
半旧518
2022/10/26
1.1K0
Mysql进阶优化篇01——四万字详解数据库性能分析工具(深入、全面、详细,收藏备用)
MySQL优化必备之执行计划explain,索引基本知识,索引数据结构推演
这条SQL执行包含了PRIMARY、DEPENDENT SUBQUERY、DEPENDENT UNION和UNION RESULT
行百里er
2020/12/02
1.3K0
MySQL优化必备之执行计划explain,索引基本知识,索引数据结构推演
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。
JAVA日知录
2019/11/06
1.8K0
数据库优化 - SQL优化
数据库:MySQL相关知识整理,值得收藏!
选择:MyISAM相对简单,所以在效率上要优于InnoDB。如果系统插入和查询操作多,不需要事务和外键,选择MyISAM,如果需要频繁的更新、删除操作,或者需要事务、外键、行级锁的时候,选择InnoDB。
小明互联网技术分享社区
2022/02/17
5200
数据库:MySQL相关知识整理,值得收藏!
MySql 全方位基础优化定位执行效率低的SQL语句存储过程与触发器的区别面试回答数据库优化问题从以下几个层面入手
SQL优化 通过show status命令了解各种sql的执行效率 查看本session的sql执行效率 show status like 'Com_%'; 查看全局的统计结果 SHOW GLOBAL STATUS LIKE 'Com_%' 查看服务器的状态 show global status; 结果 Com_select:执行select操作的次数,依次查询之累加1 Com_insert:执行insert操作的次数,对于批量插入的insert操作,只累加依次 Com_update:执行update操作
JavaEdge
2018/05/16
2.3K0
你真的了解MySQL了吗,那你给我说一下锁机制!
    这里显示的是明文密码通过哦MYSQLSHA1加密算法加密后得到的密文密码,是不可逆的,mysql 5.7 的密码保存到 authentication_string 字段中不再使用 password 字段。
上分如喝水
2021/08/16
6650
你真的了解MySQL了吗,那你给我说一下锁机制!
推荐阅读
相关推荐
MySQL优化原理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验