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

推荐订阅源

Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
A
About on SuperTechFans
GbyAI
GbyAI
酷 壳 – CoolShell
酷 壳 – CoolShell
NISL@THU
NISL@THU
TaoSecurity Blog
TaoSecurity Blog
Project Zero
Project Zero
M
MIT News - Artificial intelligence
Blog — PlanetScale
Blog — PlanetScale
Recorded Future
Recorded Future
Jina AI
Jina AI
H
Help Net Security
大猫的无限游戏
大猫的无限游戏
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
罗磊的独立博客
MyScale Blog
MyScale Blog
P
Privacy & Cybersecurity Law Blog
V
Visual Studio Blog
月光博客
月光博客
T
The Blog of Author Tim Ferriss
V
Vulnerabilities – Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
C
Check Point Blog
T
Threat Research - Cisco Blogs
IT之家
IT之家
P
Proofpoint News Feed
Y
Y Combinator Blog
T
Tor Project blog
T
The Exploit Database - CXSecurity.com
腾讯CDC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
I
InfoQ
T
Troy Hunt's Blog
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
Hacker News: Ask HN
Hacker News: Ask HN
C
CERT Recently Published Vulnerability Notes
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 聂微东
F
Full Disclosure
宝玉的分享
宝玉的分享
V
V2EX - 技术

魔改工程师

前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 前言 - 魔改工程师 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的值 - 魔改工程师 空间占用计算 - 魔改工程师
前言 - 魔改工程师
魔改工程师 · 2026-06-14 · via 魔改工程师

本文介绍了用于多任务低光图像恢复的DarkIR模型中的DBlock,并将其集成到YOLO26。DBlock部署在模型解码器阶段,负责图像去模糊、提升细节锐度及上采样。它遵循Metaformer架构,由扩张空间注意力模块(Di - SpAM)和门控前馈网络(GatedFFN)构成。Di - SpAM通过多尺度扩张卷积高效提取大感受野特征,GatedFFN引入门控机制筛选特征。DBlock与编码器协同,通过简单加法融合特征并上采样。我们将DBlock集成到YOLO26,经注册和配置yaml文件后进行实验,展现出良好效果。

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

专栏链接: YOLO26改进专栏

介绍

image-20250806222621652

摘要

在夜间或昏暗环境下拍摄照片时,由于光线暗淡且常使用长曝光,照片通常会存在噪点、亮度低和模糊等问题。尽管在这些情况下,去模糊和低光图像增强(LLIE)这两项任务存在关联,但大多数图像恢复方法都是将它们分开处理的。 在本文中,我们提出了一种高效且稳健的神经网络,用于多任务低光图像恢复。不同于当前流行的基于Transformer的模型,我们设计了新的注意力机制,以增强高效卷积神经网络(CNNs)的感受野。与以往的方法相比,我们的方法在参数和乘加运算(MAC)方面降低了计算成本。我们的模型DarkIR在常用的LOLBlur、LOLv2和Real-LOLBlur数据集上取得了新的最先进结果,并且能够很好地适配真实世界中的夜间和昏暗环境图像。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

在DarkIR模型中,DBlock(解码器块)是负责图像去模糊、提升细节锐度并将低分辨率增强图像上采样至原尺寸的核心组件,它聚焦于空间域的特征处理,整体遵循Metaformer架构并针对去模糊任务做了定制化设计:

  1. 核心定位与输入输出

    • 定位:DBlock部署在模型的解码器阶段,其核心任务是基于编码器输出的低分辨率光照增强图像$\hat{x}_{↓8}$,完成三大目标:将低分辨率图像上采样至原尺寸、消除图像模糊(包括手持抖动、长曝光等导致的模糊)、提升图像边缘与细节的锐度,且无需再处理光照问题(光照已由编码器解决)。
    • 输入:编码器传递的光照增强深层特征,以及低分辨率图像$\hat{x}_{↓8}$的深度表征;
    • 输出:空间维度恢复至原图大小、无模糊且细节清晰的高质量图像。
  2. 整体架构与计算流程 DBlock遵循Metaformer的基础结构,由扩张空间注意力模块(Di-SpAM)门控前馈网络(GatedFFN)两大核心组件构成,整体计算流程为残差连接形式: [z_1 = \text{Di-SpAM}(\text{LayerNorm}(z)) + z] [z_2 = \text{GatedFFN}(\text{LayerNorm}(z_1)) + z_1] 其中$z$为输入特征,$z_2$为DBlock最终输出特征,LayerNorm用于特征归一化,残差连接则保证了特征信息的高效传递,避免梯度消失。

  3. 核心组件1:扩张空间注意力模块(Di-SpAM) 这是DBlock的核心创新模块,灵感来源于大核注意力(LKA),但通过多尺度扩张卷积实现了更高效的大感受野特征提取,具体设计如下:

    • 多尺度扩张卷积分支:采用3个不同扩张系数(dilation factor)的深度卷积(DW)分支,分别为dilation=1、dilation=4、dilation=9,可同时捕捉图像中近程、中程和远程的空间依赖关系,覆盖更大的特征区域,从而精准识别并消除不同范围的模糊。
    • 特征融合与优化:先将3个分支的特征进行逐元素融合,再通过简化通道注意力(SCA)对融合后的特征做通道维度的权重分配,强化有用的边缘、细节特征,抑制冗余信息。
    • 门控MLP:最后接入带简单门控机制的MLP(而非传统激活函数),进一步筛选和增强空间特征,保证去模糊后的特征更精准。
    • 优势:相比传统LKA,Di-SpAM在实现更大有效感受野的同时,参数数量和计算量(MACs)更低,且去模糊效果更优(PSNR可达27.00dB,高于LKA的26.45dB)。
  4. 核心组件2:门控前馈网络(GatedFFN) 该模块用于对Di-SpAM输出的特征做精细化的通道维度变换,其核心特点是引入门控机制

    • 先通过1×1卷积对特征做通道扩张与压缩,再利用门控单元对特征进行筛选,只保留对去模糊和锐化有帮助的特征信息,避免无效特征的干扰,提升特征表达的针对性。
  5. 与编码器的协同及上采样逻辑

    • DBlock会接收编码器传递的光照增强特征,并通过简单的逐元素加法完成编码器-解码器的特征融合(论文消融实验证明该方式比CurveNLU、1DLUT等复杂模块的融合效果更优);
    • 在解码器整体流程中,DBlock输出的特征会通过像素重排(P-Shuffle)和1×1卷积完成上采样,逐步将特征分辨率恢复至原图大小,最终输出清晰的高分辨率图像。

核心代码

class DBlock(nn.Module):
    '''
    Change this block using Branch
    '''

    def __init__(self, c, DW_Expand=2, FFN_Expand=2, dilations = [1], extra_depth_wise = False):
        super().__init__()
        #we define the 2 branches
        self.dw_channel = DW_Expand * c 

        self.conv1 = nn.Conv2d(in_channels=c, out_channels=self.dw_channel, kernel_size=1, padding=0, stride=1, groups=1, bias=True, dilation = 1)
        self.extra_conv = nn.Conv2d(self.dw_channel, self.dw_channel, kernel_size=3, padding=1, stride=1, groups=c, bias=True, dilation=1) if extra_depth_wise else nn.Identity() #optional extra dw
        self.branches = nn.ModuleList()
        for dilation in dilations:
            self.branches.append(Branch(self.dw_channel, DW_Expand = 1, dilation = dilation))

        assert len(dilations) == len(self.branches)
        self.dw_channel = DW_Expand * c 
        self.sca = nn.Sequential(
                       nn.AdaptiveAvgPool2d(1),
                       nn.Conv2d(in_channels=self.dw_channel // 2, out_channels=self.dw_channel // 2, kernel_size=1, padding=0, stride=1,
                       groups=1, bias=True, dilation = 1),  
        )
        self.sg1 = SimpleGate()
        self.sg2 = SimpleGate()
        self.conv3 = nn.Conv2d(in_channels=self.dw_channel // 2, out_channels=c, kernel_size=1, padding=0, stride=1, groups=1, bias=True, dilation = 1)
        ffn_channel = FFN_Expand * c
        self.conv4 = nn.Conv2d(in_channels=c, out_channels=ffn_channel, kernel_size=1, padding=0, stride=1, groups=1, bias=True)
        self.conv5 = nn.Conv2d(in_channels=ffn_channel // 2, out_channels=c, kernel_size=1, padding=0, stride=1, groups=1, bias=True)

        self.norm1 = LayerNorm2d(c)
        self.norm2 = LayerNorm2d(c)

        self.gamma = nn.Parameter(torch.zeros((1, c, 1, 1)), requires_grad=True)
        self.beta = nn.Parameter(torch.zeros((1, c, 1, 1)), requires_grad=True)

    def forward(self, inp, adapter = None):

        y = inp
        x = self.norm1(inp)
        # x = self.conv1(self.extra_conv(x))
        x = self.extra_conv(self.conv1(x))
        z = 0
        for branch in self.branches:
            z += branch(x)

        z = self.sg1(z)
        x = self.sca(z) * z
        x = self.conv3(x)
        y = inp + self.beta * x
        #second step
        x = self.conv4(self.norm2(y)) # size [B, 2*C, H, W]
        x = self.sg2(x)  # size [B, C, H, W]
        x = self.conv5(x) # size [B, C, H, W]
        x = y + x * self.gamma

        return x 

实验

脚本

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

if __name__ == '__main__':
#     修改为自己的配置文件地址
    model = YOLO('./ultralytics/cfg/models/26/yolo26-C3k2_DBlock.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',  
                # optimizer='SGD',
                amp=False,
                project='runs/train',
                name='yolo26-C3k2_DBlock',
                )

结果

image-20260124105820427