惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
WordPress大学
WordPress大学
Help Net Security
Help Net Security
Jina AI
Jina AI
Security Latest
Security Latest
Y
Y Combinator Blog
Project Zero
Project Zero
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
Know Your Adversary
Know Your Adversary
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
NISL@THU
NISL@THU
Cisco Talos Blog
Cisco Talos Blog
博客园 - 司徒正美
MyScale Blog
MyScale Blog
Cyberwarzone
Cyberwarzone
D
Docker
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
C
CERT Recently Published Vulnerability Notes
B
Blog
L
LangChain Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
SecWiki News
SecWiki News
The Hacker News
The Hacker News
C
Check Point Blog
L
Lohrmann on Cybersecurity
V2EX - 技术
V2EX - 技术
S
Securelist
T
Threat Research - Cisco Blogs
Stack Overflow Blog
Stack Overflow Blog
TaoSecurity Blog
TaoSecurity Blog
云风的 BLOG
云风的 BLOG
Latest news
Latest news
人人都是产品经理
人人都是产品经理
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
The Register - Security
The Register - Security
Webroot Blog
Webroot Blog
Simon Willison's Weblog
Simon Willison's Weblog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
AWS News Blog
AWS News Blog
C
Cybersecurity and Infrastructure Security Agency CISA
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
小众软件
小众软件
T
Tailwind CSS Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
宝玉的分享
宝玉的分享
O
OpenAI News

魔改工程师

获取大写字母瓷砖拼出独特图案数量 - 魔改工程师 日志文件异常检测 - 魔改工程师 **操作历史管理器的撤销/重做能力** - 魔改工程师 项目模块依赖构建顺序规划 - 魔改工程师 端口流量统计 - 魔改工程师 最大化游戏试玩资格分发 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 YOLO26改进 – 特征融合 重参数化CSPELAN模块(Reparameterized CSPELAN Module)通过结构重参数化实现高效特征提取 YOLO26改进 – 特征融合 融合Hyper-YOLO混合聚合网络MANet(Mixed Aggregation Network)通过多路径设计实现高效特征学习与模型适应性提升 YOLO26改进 – 特征融合 RepGFPN重参数化特征金字塔网络 ,实现高效多尺度特征交互与融合 YOLO26改进 – 特征融合 EFC增强层间特征相关性,通过多尺度特征交互减少冗余信息丢失即插即用 - 魔改工程师 YOLO26改进 – 注意力机制 融合HCF-Net维度感知选择性整合模块DASI 增强小目标显著性 前言 - 魔改工程师 YOLO26 改进 – 注意力机制 HaloNet 局部自注意力 (Local Self-Attention) 以分块交互策略实现高效全局上下文建模 前言 - 魔改工程师 YOLO26 改进 – 注意力机制 CAFM (Convolutional Block Attention Module) 卷积块注意力模块:轻量级设计优化特征提取流程,提升小目标感知 YOLO26 改进 – 注意力机制 ACmix自注意力与卷积混合模型:轻量级设计融合双机制优势,实现高效特征提取与推理加速 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 2026最新YOLO26改进:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总 - 魔改工程师 前言 - 魔改工程师 YOLO26改进 – SPPF模块 替代SPPF,FFocal Modulation焦点调制:即插即用轻量设计优化全局语义捕获 前言 - 魔改工程师 YOLO26改进 – SPPF模块 发论文神器!LSKA注意力改进SPPF,增强多尺度特征提取能力,高效涨点!!! - 魔改工程师 YOLO26改进 – SPPF模块 SPPELAN 空间金字塔池化与增强局部注意力:替代SPPF增强多尺度上下文捕获,提升检测精度 YOLO26改进 – SPPF模块 AIFI基于注意力的尺度内特征交互:替代SPPF构建高效混合编码器,提升模型综合效能 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 YOLO26改进 – C3k2 C3k2融合LWGA轻量分组注意力(Light-Weight Grouped Attention):四路径并行架构破解通道冗余难题 AAAI 2026 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 YOLO26改进 – C3k2 C3k2 融合 LSConv (Large-Small Conv) 融合大核感知与小核聚合,提升小目标特征判别力 CVPR 2025 前言 - 魔改工程师 前言 - 魔改工程师 YOLO26改进 – C2PSA C2PSA融合Mona多认知视觉适配器:打破全参数微调的性能枷锁:即插即用的提点神器 CVPR 2025 前言 - 魔改工程师 YOLO26改进 – C2PSA C2PSA融合DiffAttention差分注意力:轻量级差分计算实现高效特征降噪,提升模型抗干扰能力 - 魔改工程师 YOLO26改进 – C2PSA C2PSA融合CPIASA跨范式交互与对齐自注意力机制 交互对齐机制,提升小目标与遮挡目标判别力 ACM MM2025 YOLO26 正式发布源代码!极致速度优化方案, 面向工业级落地的目标检测模型! - 魔改工程师 YOLO26 改进 – 注意力机制 MCAttn 蒙特卡洛注意力:全局上下文与局部细节协同建模,破解微小目标特征表达难题 YOLO26 改进 – 注意力机制 轴向注意力Axial Attention(Axial Attention)优化高分辨率特征提取 前言 - 魔改工程师 YOLO26 改进 – 注意力机制 二阶通道注意力SOCA 通过协方差建模与自适应重缩放实现判别性特征增强 YOLO26 改进 – 注意力机制 SCSA注意力通过双重注意力机制增强局部-全局特征交互 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 YOLO26 改进 – 注意力机制 HaloNet 局部自注意力 (Local Self-Attention) 以分块交互策略实现高效全局上下文建模 YOLO26 改进 – 注意力机制 DiffAttention差分注意力:轻量级差分计算实现高效特征降噪,提升模型抗干扰能力 TMLR 2025 前言 - 魔改工程师 YOLO26 改进 – 注意力机制 CAFM (Convolutional Block Attention Module) 卷积块注意力模块:轻量级设计优化特征提取流程,提升小目标感知 YOLO26 改进 – 注意力机制 ACmix自注意力与卷积混合模型:轻量级设计融合双机制优势,实现高效特征提取与推理加速 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 2026最新YOLO26改进:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总 - 魔改工程师 失灵的键盘 - 魔改工程师 **返回所有加载的AGENTS.md文件ID列表** - 魔改工程师 **资源二分类隔离判定** - 魔改工程师 **统计盈利目标区间** - 魔改工程师 物流仓库货物调货优化 - 魔改工程师 寻找重复子数据 - 魔改工程师 匹配命令行前缀关键字 - 魔改工程师 **魔法阵的能量收集** - 魔改工程师 **链表数字游戏** - 魔改工程师 **企业内部部门的最大层级** - 魔改工程师 前言 YOLOv11 改进 – SPPF模块 替代SPP,FFocal Modulation焦点调制:即插即用轻量设计优化全局语义捕获 前言 - 魔改工程师 YOLOv11 改进 – SPPF模块 SPPELAN 空间金字塔池化与增强局部注意力:替代SPPF增强多尺度上下文捕获,提升检测精度 YOLOv11 改进 – SPPF模块 AIFI基于注意力的尺度内特征交互:替代SPPF构建高效混合编码器,提升模型综合效能 YOLOv11 改进 – Mamba 集成Mamba-YOLO(AAAI 2025),Mamba-YOLOv11-T 替换骨干,破解全局依赖建模难题,实现高效实时检测 YOLOv11 改进 – Mamba 集成Mamba-YOLO(AAAI 2025),Mamba-YOLOv11-L 替换骨干,破解全局依赖建模难题,实现高效实时检测 YOLOv11 改进 – Mamba 集成Mamba-YOLO(AAAI 2025),Mamba-YOLOv11-B 替换骨干,破解全局依赖建模难题,实现高效实时检测 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 YOLOv11 改进 – C2PSA C2PSA融合DiffAttention差分注意力:轻量级差分计算实现高效特征降噪,提升模型抗干扰能力 YOLOv11 改进 – C2PSA C2PSA融合CPIASA跨范式交互与对齐自注意力机制(ACM MM2025) 交互对齐机制破解特征融合难题,提升小目标与遮挡目标判别力 麻将基本胡牌型判断 - 魔改工程师 IP地址分类识别 - 魔改工程师 **查找能被整除的最大整数** - 魔改工程师 数据包优先级窗口查找 - 魔改工程师 美观的灯笼 - 魔改工程师 配置操作失败数量统计 - 魔改工程师 计费时段计算 - 魔改工程师 计算数列位置N的值 - 魔改工程师 空间占用计算 - 魔改工程师
YOLO26 改进 – 注意力机制 DiffAttention差分注意力:轻量级差分计算实现高效特征降噪,提升模型抗干扰能力 TMLR 2025
魔改工程师 · 2026-07-05 · via 魔改工程师

前言

本文介绍了 DiffCLIP,一种将差分注意力机制集成到 CLIP 架构的视觉 - 语言模型,并将其应用于 YOLO26。差分注意力机制通过计算两个互补注意力分布的差值,抵消无关信息干扰。单头差分注意力将 Q 和 K 拆分,分别计算注意力分布后做差值融合;多头差分注意力则每个头独立执行差分操作后聚合输出。关键参数 λ 可动态调控噪声抵消强度。我们将 DiffAttention 代码集成到 YOLO26 中,替换原有模块。实验表明,改进后的 YOLO26 在图像 - 文本理解任务中表现出色。

文章目录: YOLO26改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

专栏链接: YOLO26改进专栏

介绍

image-20251221142107085

摘要

我们提出DiffCLIP,一种新颖的视觉-语言模型,它将差分注意力机制扩展到CLIP架构中。差分注意力机制最初是为大型语言模型开发的,用于放大相关上下文同时消除噪声信息。在本研究中,我们将这一机制整合到CLIP的双编码器(图像和文本)框架中。通过引入少量额外参数,DiffCLIP在图像-文本理解任务上取得了卓越的性能。在零样本分类、检索和鲁棒性基准测试中,DiffCLIP始终优于基准CLIP模型。值得注意的是,这些改进几乎不增加计算开销,表明差分注意力机制可以显著增强多模态表征而不牺牲效率。代码可在https://github.com/hammoudhasan/DiffCLIP获取。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

DiffAttention(差分注意力)是一种针对传统Transformer注意力机制“注意力噪声”问题提出的改进方案,核心思路是通过两个互补注意力分布的差值计算,抵消无关信息干扰,强化对关键特征的聚焦。其技术原理可从核心设计理念、单头/多头实现细节、参数调控机制及与传统注意力的差异四个维度展开,同时结合跨领域应用逻辑(如语言模型、图文模型)进行完整解析。

单头差分注意力(Single-Head DiffAttention):基础实现单元

单头DiffAttention是DiffAttention的核心模块,通过“拆分Q/K→双Softmax计算→差值融合”三步,实现噪声抵消。具体流程如下:

步骤1:拆分Q和K为两组互补子空间

将传统注意力中的查询(Q)和键(K)沿特征维度($d$)均分为两组,形成两个独立的子空间,用于捕捉不同类型的注意力信号(一组侧重关键信息,一组侧重噪声):

  • 设输入序列$X \in \mathbb{R}^{N \times d}$,生成Q和K后,拆分得到:
    $Q_1, Q_2 \in \mathbb{R}^{N \times \frac{d}{2}}$(Q的两组子查询),$K_1, K_2 \in \mathbb{R}^{N \times \frac{d}{2}}$(K的两组子键);
  • 值(V)不拆分,仍为$V \in \mathbb{R}^{N \times d}$,确保输出特征维度与输入一致。

步骤2:分别计算两组注意力分布(双Softmax)

对两组子Q和子K,分别计算独立的注意力权重矩阵$A_1$ 和$A_2$,模拟“信号”和“噪声”两种分布:

  • 第一组注意力(侧重关键信号):$A_1 = softmax\left( \frac{Q_1 K_1^\top}{\sqrt{\frac{d}{2}}} \right)$;
  • 第二组注意力(侧重噪声):$A_2 = softmax\left( \frac{Q_2 K_2^\top}{\sqrt{\frac{d}{2}}} \right)$;
  • 分母$\sqrt{\frac{d}{2}}$ 是对拆分后子空间维度的缩放,避免因维度减半导致注意力分数过大(与传统注意力的“$\sqrt{d}$”缩放逻辑一致,保证数值稳定性)。

步骤3:差值融合与加权输出(核心“差分”操作)

通过可学习参数$\lambda$ 平衡两组注意力的贡献,用$A_1$ 减去“$\lambda$ 缩放后的$A_2$”,抵消噪声并保留关键信号,最终与V加权得到输出:

  1. 差分注意力权重计算:$A_{diff} = A_1 - \lambda \cdot A_2$;
  2. 加权输出:$DiffAttn(X) = A_{diff} \cdot V$。

关键逻辑:$A_1$ 和$A_2$ 中对“无关token”的注意力权重(噪声)具有较强的一致性,相减后会相互抵消;而对“关键token”的注意力权重(信号)在两组中差异较大,会被保留甚至强化,最终形成更稀疏、聚焦的注意力分布(如图2中DiffCLIP对“杯子”“花朵”的聚焦,相比CLIP避免了背景干扰)。

3. 多头差分注意力(Multi-Head DiffAttention):工程化扩展

为捕捉多维度的特征依赖(如文本中的语法依赖、语义依赖,图像中的局部纹理、全局结构),DiffAttention需扩展为多头形式(类似传统Transformer的Multi-Head Attention),核心是“每个头独立执行差分操作,最后聚合输出”。具体流程如下:

步骤1:多头拆分与独立差分计算

设多头数量为$h$,将输入特征维度$d$ 拆分为$h$ 个小头维度$d_h = \frac{d}{h}$,每个头$i$ 独立执行单头DiffAttention:

  • 对第$i$ 个头,拆分Q/K为两组子空间:$Q{1,i}, Q{2,i} \in \mathbb{R}^{N \times \frac{dh}{2}}$,$K{1,i}, K_{2,i} \in \mathbb{R}^{N \times \frac{d_h}{2}}$;
  • 计算该头的差分注意力权重:$A{diff,i} = softmax\left( \frac{Q{1,i} K_{1,i}^\top}{\sqrt{\frac{d_h}{2}}} \right) - \lambdai \cdot softmax\left( \frac{Q{2,i} K_{2,i}^\top}{\sqrt{\frac{d_h}{2}}} \right)$;
  • 该头输出:$DiffAttni(X) = A{diff,i} \cdot V_i$($V_i \in \mathbb{R}^{N \times d_h}$ 为第$i$ 头的子值)。

步骤2:多头输出聚合

将$h$ 个小头的输出沿特征维度拼接,再通过一个线性投影层($W^O \in \mathbb{R}^{h \cdot d_h \times d}$)恢复为原输入维度,得到最终多头DiffAttention输出:
$DiffMHA(X) = \left[ DiffAttn_1(X) \parallel DiffAttn_2(X) \parallel \dots \parallel DiffAttn_h(X) \right] \cdot W^O$。

优势:每个头可捕捉不同类型的关键特征(如文本头1关注语法结构、头2关注语义关联),通过独立差分操作分别降噪,聚合后能更全面地保留有用信息,进一步提升模型对复杂依赖的建模能力。

4. 关键参数$\lambda$:动态调控噪声抵消强度

参数$\lambda$ 是DiffAttention的核心调控因子,用于平衡“信号保留”和“噪声抵消”的强度,其取值直接影响差分注意力的效果。根据论文(Ye et al., 2024; Hammoud et al., 2025),$\lambda$ 的设计遵循以下原则:

(1)$\lambda$ 的计算方式:动态学习而非固定

$\lambda$ 并非人工设定的超参数,而是通过模型训练动态学习,具体公式为:
$\lambda = exp(\lambda{q1} \cdot \lambda{k1}) - exp(\lambda{q2} \cdot \lambda{k2}) + \lambda{init}$
-$\lambda
{q1}, \lambda{k1}, \lambda{q2}, \lambda{k2}$:可学习权重,分别与两组Q/K的子空间关联,用于适配不同任务中Q/K的特征分布;
-$\lambda
{init}$:初始超参数(如DiffCLIP中设为0.8),为训练提供稳定初始值,避免初期差分过度导致信号丢失。

(2)$\lambda$ 的作用逻辑

  • 当$\lambda$ 较大时:$A_2$ 的权重被强化,噪声抵消更彻底,但可能误删部分弱关键信号(如长文本中的次要逻辑词);
  • 当$\lambda$ 较小时:$A_2$ 的权重被削弱,噪声抵消不充分,但能保留更多潜在关键信息;
  • 训练过程中,模型会根据任务需求(如文本生成需保留语法信号、图文检索需保留视觉物体信号)自适应调整$\lambda$,实现“降噪”与“信号保留”的平衡。

核心代码

class DiffAttention(nn.Module):
    r"""
    Differential Attention Module.

    Given an input tensor X ∈ ℝ^(B×N×d_model), we first compute the linear projections:

        Q = X Wᵠ,   K = X Wᵏ,   V = X Wᵛ

    The queries and keys are then reshaped and split into two parts:
        Q → [Q₁; Q₂] ∈ ℝ^(B, N, 2·h_effective, d_head)
        K → [K₁; K₂] ∈ ℝ^(B, N, 2·h_effective, d_head)
    with h_effective = num_heads // 2 and d_head = d_model / num_heads.

    The value projection is reshaped to:
        V ∈ ℝ^(B, N, h_effective, 2·d_head)

    We then compute two attention maps:
        A₁ = softmax((Q₁ K₁ᵀ) / √d_head)
        A₂ = softmax((Q₂ K₂ᵀ) / √d_head)

    A learnable scalar λ is computed via:
        λ = exp(λ_{q1} ⋅ λ_{k1}) − exp(λ_{q2} ⋅ λ_{k2}) + λ_init

    Finally, the differential attention output is:
        DiffAttn(X) = (A₁ − λ · A₂) · V

    The per-head outputs are then normalized headwise with RMSNorm and projected back to d_model.

    Args:
        dim (int): Embedding dimension (d_model).
        num_heads (int): Number of heads in the original transformer (must be even).
        qkv_bias (bool): If True, add a bias term to the Q, K, V projections.
        attn_drop (float): Dropout probability after softmax.
        proj_drop (float): Dropout probability after the output projection.
        lambda_init (float): Initial constant for lambda re-parameterization.
    """
    def __init__(self, dim, num_heads=8, qkv_bias=True, attn_drop=0., proj_drop=0., lambda_init=0.8):
        super().__init__()
        if num_heads % 2 != 0:
            raise ValueError("num_heads must be even for Differential Attention.")
        self.dim = dim
        self.num_heads = num_heads           # original number of heads
        self.effective_heads = num_heads // 2  # differential attention operates on half as many heads
        self.head_dim = dim // num_heads       # per-head dimension
        self.scaling = self.head_dim ** -0.5

        # Linear projections for Q, K, V: mapping from dim → dim.
        self.q_proj = nn.Linear(dim, dim, bias=qkv_bias)
        self.k_proj = nn.Linear(dim, dim, bias=qkv_bias)
        self.v_proj = nn.Linear(dim, dim, bias=qkv_bias)
        self.out_proj = nn.Linear(dim, dim, bias=True)  # final output projection

        self.attn_drop = nn.Dropout(attn_drop)
        self.proj_drop = nn.Dropout(proj_drop)

        # RMSNorm for headwise normalization on outputs (each head's output has dimension 2·head_dim)
        self.diff_norm = RMSNorm(2 * self.head_dim, eps=1e-5, elementwise_affine=True)

        # Learnable lambda parameters (shared across all heads)
        self.lambda_q1 = nn.Parameter(torch.zeros(self.head_dim, dtype=torch.float32).normal_(mean=0, std=0.1))
        self.lambda_k1 = nn.Parameter(torch.zeros(self.head_dim, dtype=torch.float32).normal_(mean=0, std=0.1))
        self.lambda_q2 = nn.Parameter(torch.zeros(self.head_dim, dtype=torch.float32).normal_(mean=0, std=0.1))
        self.lambda_k2 = nn.Parameter(torch.zeros(self.head_dim, dtype=torch.float32).normal_(mean=0, std=0.1))
        self.lambda_init = lambda_init

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        """
        Args:
            x (Tensor): Input tensor of shape (B, N, d_model).

        Returns:
            Tensor of shape (B, N, d_model) after applying differential attention.
        """
        B, N, _ = x.shape

        # Compute Q, K, V projections.
        q = self.q_proj(x)  # shape: (B, N, d_model)
        k = self.k_proj(x)  # shape: (B, N, d_model)
        v = self.v_proj(x)  # shape: (B, N, d_model)

        # Reshape Q and K into (B, N, 2 * h_effective, head_dim)
        q = q.view(B, N, 2 * self.effective_heads, self.head_dim)
        k = k.view(B, N, 2 * self.effective_heads, self.head_dim)
        # Reshape V into (B, N, h_effective, 2 * head_dim)
        v = v.view(B, N, self.effective_heads, 2 * self.head_dim)

        # Transpose to bring head dimension forward.
        # q, k: (B, 2 * h_effective, N, head_dim)
        q = q.transpose(1, 2)
        k = k.transpose(1, 2)
        # v: (B, h_effective, N, 2 * head_dim)
        v = v.transpose(1, 2)

        # Scale Q.
        q = q * self.scaling

        # Compute raw attention scores: (B, 2 * h_effective, N, N)
        attn_scores = torch.matmul(q, k.transpose(-1, -2))

        # Compute attention probabilities.
        attn_probs = F.softmax(attn_scores, dim=-1)
        attn_probs = self.attn_drop(attn_probs)

        # Reshape to separate the two halves: (B, h_effective, 2, N, N)
        attn_probs = attn_probs.view(B, self.effective_heads, 2, N, N)

        # Compute lambda via re-parameterization.
        lambda_1 = torch.exp(torch.sum(self.lambda_q1 * self.lambda_k1))
        lambda_2 = torch.exp(torch.sum(self.lambda_q2 * self.lambda_k2))
        lambda_full = lambda_1 - lambda_2 + self.lambda_init

        # Differential attention: subtract the second attention map scaled by lambda_full.
        diff_attn = attn_probs[:, :, 0, :, :] - lambda_full * attn_probs[:, :, 1, :, :]  # shape: (B, h_effective, N, N)

        # Multiply the differential attention weights with V.
        attn_output = torch.matmul(diff_attn, v)  # shape: (B, h_effective, N, 2 * head_dim)

        # Apply RMSNorm (headwise normalization) and scale by (1 - lambda_init)
        attn_output = self.diff_norm(attn_output) * (1 - self.lambda_init)

        # Concatenate heads: reshape from (B, h_effective, N, 2 * head_dim) → (B, N, 2 * h_effective * head_dim)
        attn_output = attn_output.transpose(1, 2).reshape(B, N, 2 * self.effective_heads * self.head_dim)

        # Final linear projection.
        x_out = self.out_proj(attn_output)
        x_out = self.proj_drop(x_out)
        return x_out

实验

脚本

import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
#     修改为自己的配置文件地址
    model = YOLO('./ultralytics/cfg/models/26/yolo26-DiffAttention.yaml')
#     修改为自己的数据集地址
    model.train(data='./ultralytics/cfg/datasets/coco8.yaml',
                cache=False,
                imgsz=640,
                epochs=10,
                single_cls=False,  # 是否是单类别检测
                batch=8,
                close_mosaic=10,
                workers=0,
                optimizer='MuSGD',
                amp=True,
                project='runs/train',
                name='yolo26-DiffAttention',
                )

结果

在这里插入图片描述