news 2026/9/24 17:28:54

DEIM 改进系列(八):频域处理改进——给特征“换个坐标系看问题“

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DEIM 改进系列(八):频域处理改进——给特征“换个坐标系看问题“

DEIM 从主干到 neck 的所有算子都在空域干活——卷积在空域滑窗、注意力在空域加权,但很多结构信息(纹理、边缘、周期性)在频域里表达得更清晰。针对"全程空域视角"这个盲区,我们做了一批频域处理替换变体双落点:backbone 走HG_Stage_<X>、neck 走lateral_convs_<X>,全部保持原落点参数格式不变、一行切换。

1. 现有的空域算子有什么问题

不是空域算子"错了",而是"只有空域视角"这个事实本身有盲区:

问题机制原因可观测后果
局部 vs 全局割裂卷积感受野是局部的,全局信息要叠很多层周期性/长程结构建模慢
高频信息被稀释下采样/池化把高频(边缘、纹理)细节逐步抹掉小目标与纹理细节在深层消失(【细分场景】
分辨率敏感空域卷积对尺度变化不鲁棒同一目标不同尺度,特征差异大
信息冗余空域表示里相邻像素高度相关参数量与计算量浪费在冗余上

一句话总结:空域视角下,高频细节是"藏"在大量冗余像素里的——频域把高频信息单独拎出来,让网络可以直接处理"细节本身"。

2. 可以往哪些方向改进

"把特征切到频域看"有四个方向,也是我们最终落地的四个分组:

方向思路代表变体优点代价
小波分解小波变换拆多尺度频率子带WTConv、Down_wt、MWPT、PWD多尺度+高频显式,可逆无损实现复杂
傅里叶/FFT频谱调制后反变换FFCM、Fre_MLP、Fourier_Modulation_Attention、FSAS、FSDA、KSFA、PFAE、msfn全局视野天然复数运算
频域卷积在频域做卷积/调制FEB、FDConv、CEB融合空域频域优势与 BN 兼容需处理
频带学习学习频带重要性/分解Down_wt、CEB、PWD轻量、可解释提升幅度看场景

四路共同点:backbone 落点保持 HG_Stage 外壳不变,neck 落点保持 c→c 同维不变。变体全做,让实验挑最优。

3. HG 的卷积注意力是如何改进的

双落点装配(HG_Stage_<X>/lateral_convs_<X>均由 train_deim_yaml.py 通用分支自动导入):

3.1 小波分解组——多尺度频率子带

变体核心机制
WTConv小波卷积:db1 小波分解为 LL/LH/HL/HH 子带,LL 递归分解后各尺度卷积再重建(详见第 4 节)
Down_wt小波下采样:用小波分解替代大步长下采样,保留高频
MWPT多级小波包变换(更细的频率划分)
PWD金字塔小波分解

3.2 傅里叶/FFT 组——频谱调制

变体核心机制
FFCM傅里叶频域通道调制
Fre_MLP频域 MLP(频谱上做逐点/逐通道变换)
Fourier_Modulation_Attention傅里叶调制注意力
FSAS / FSDA频域空间注意力 / 频域尺度解耦注意力
KSFA核化频谱特征注意力
PFAE金字塔频率注意力增强
msfn多尺度频域网络

3.3 频域卷积组——频域里做卷积

变体核心机制
FEB频域增强块
FDConv频域解耦卷积
CEB通道频带均衡

设计逻辑:四个分组对应"频域"的四个本质问题——小波回答"如何无损地把频率拆开",傅里叶回答"如何直接在全频谱上调制",频域卷积回答"如何让卷积本身具备频域视野",频带学习回答"哪些频率成分值得单独处理"。变体不是堆数量,而是把'换坐标系看特征'这个动作的每个可设计维度都覆盖了一遍;WTConv 则是其中机制最完整、最可解释的一个。

4.代码和视频讲解

视频讲解:

DEIM:超越 YOLO,快准双绝!DEIM:让 DETR 告别慢收敛,开启实时检测新纪元_哔哩哔哩_bilibili

DEIM:超越 YOLO,快准双绝!一个视频告诉你DEIM如何搭建backbone_哔哩哔哩_bilibili

代码获取:

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

5.以WTConv小波卷积为例

第一: 将下面的核心代码复制到DEIMv2-main\DEIM_YOLO\change_mode_频域处理

路径下,如下图所示。

第二:自适应导包与模型搭建

第三:将模型配置文件复制到DEIM.YAMY文件中

第四:yaml改进配置文件

backbone: - [-1, 1, HGStem, [3, 16, 16]] # 0 stem - [-1, 1, HG_Stage_WTConv, [16, 16, 64, 1, False, False, 3, 3]] # 1 stage1 - [-1, 1, HG_Stage_WTConv, [64, 32, 256, 1, True, False, 3, 3]] # 2 stage2 - [-1, 1, HG_Stage_WTConv, [256, 64, 512, 2, True, True, 5, 3]] # 3 stage3 - [-1, 1, HG_Stage_WTConv, [512, 128, 1024, 1, True, True, 5, 3]] # 4 stage4 head: - [-1, 1, input_proj, [128]] # 5 P5': layer4(1024) -> 128 - [3, 1, input_proj, [128]] # 6 P4': layer3( 512) -> 128 - [5, 1, TransformerEncoder, [128, 8, 512, 1]] # 7 P5'' - [-1, 1, lateral_convs, [128]] # 8 Y5 - [-1, 1, upsample_feat, [2, "nearest"]] # 9 up2 - [[-1, 6], 1, concat, [1]] # 10 FPN 融合 -> 256ch - [-1, 1, fpn_blocks, [256, 128, 256, 21, 2]] # 11 F4 - [-1, 1, downsample_feat, [128, 128, 3, 2]] # 12 downF4 - [[-1, 8], 1, concat, [1]] # 13 PAN 融合 -> 256ch - [-1, 1, pan_blocks, [256, 128, 256, 21, 2]] # 14 F5 - [[11, -1], 1, DEIMDecoder, [nc, 128, 3, 300, 32, 4, [6, 6]]] # 15 Detect(F4, F5)
backbone: - [-1, 1, HGStem, [3, 16, 16]] # 0 stem - [-1, 1, HG_Stage, [16, 16, 64, 1, False, False, 3, 3]] # 1 stage1 - [-1, 1, HG_Stage, [64, 32, 256, 1, True, False, 3, 3]] # 2 stage2 - [-1, 1, HG_Stage, [256, 64, 512, 2, True, True, 5, 3]] # 3 stage3 - [-1, 1, HG_Stage, [512, 128, 1024, 1, True, True, 5, 3]] # 4 stage4 head: - [-1, 1, input_proj, [128]] # 5 P5' - [3, 1, input_proj, [128]] # 6 P4' - [5, 1, TransformerEncoder, [128, 8, 512, 1]] # 7 P5'' - [-1, 1, lateral_convs_WTConv, [128]] # 8 Y5 (频域调制,c->c 同维) - [-1, 1, upsample_feat, [2, "nearest"]] # 9 up2 - [[-1, 6], 1, concat, [1]] # 10 FPN 融合 -> 256ch - [-1, 1, fpn_blocks, [256, 128, 256, 21, 2]] # 11 F4 - [-1, 1, downsample_feat, [128, 128, 3, 2]] # 12 downF4 - [[-1, 8], 1, concat, [1]] # 13 PAN 融合 -> 256ch - [-1, 1, pan_blocks, [256, 128, 256, 21, 2]] # 14 F5 - [[11, -1], 1, DEIMDecoder, [nc, 128, 3, 300, 32, 4, [6, 6]]] # 15 Detect(F4, F5)

​​第五:模型跑出的结果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 17:28:12

零基础学ESP32:舵机控制——让设备精准转动到指定角度!

前面我们学了控制LED亮灭、控制继电器开关、让蜂鸣器唱歌——但这些都只是"开"和"关"两种状态。今天要学一个能精准控制角度的设备&#xff1a;舵机。 航模飞机的机翼控制、小车车轮的转向、家用电器的开关、机器人关节的转动……这些需要"转到某个精…

作者头像 李华
网站建设 2026/9/24 17:27:02

【股票交易】第 47 章 图表的基本语言

回到目录文章目录47.1 价格图表&#xff1a;同一段交易历史的不同表达线形图 &#xff1a;先观察整体变化柱状图与 K 线图&#xff1a;增加周期内部的信息线性坐标与对数坐标&#xff1a;金额变化和比例变化47.2 K 线&#xff1a;四个价格能够告诉我们什么一根 K 线的构成阳线不…

作者头像 李华
网站建设 2026/9/24 17:26:17

Codex修Bug总翻车?先检查你的任务描述里有没有这3个坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 17:25:29

如何安装 RevokeMsgPatcher:微信QQ防撤回补丁 5 分钟上手

如何安装 RevokeMsgPatcher&#xff1a;微信QQ防撤回补丁 5 分钟上手 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitcode…

作者头像 李华
网站建设 2026/9/24 17:24:54

开源项目推荐:Mew

开源项目推荐&#xff1a;Mew 【免费下载链接】mew Package Manager Translator 项目地址: https://gitcode.com/gh_mirrors/me/mew 项目基础介绍和主要编程语言 Mew 是一个由 FOSSASIA 组织开发的开源项目&#xff0c;主要用于实现跨不同 Linux 发行版的包管理器命令翻…

作者头像 李华