ECCV-2024 小波卷积WTConv 增大感受野,降低参数量计算量,独家创新助力涨点
1、你要解决什么痛点
1. 目标检测在干嘛?
- 找出哪里有人/车/路标(定位:框出来)
- 并告诉你它们分别是什么(分类:人、车、狗)
2. CNN 的强项是什么?
- 它会拿一个小放大镜(卷积核,比如 3×3)
- 在图像上滑来滑去
- 每次只看一小块区域
3. CNN 的痛点:它“只看得见眼前的一小块”
- 他手里拿着望远镜
- 但是望远镜视野很窄
- 所以他一次只能看到楼下很小一块区域
这会导致什么问题?
- 很大的目标(比如整辆公交车、整个人)
- 跨很远的依赖关系(比如“左边那个人”和“右边那辆车”的关系)
它看到的是一堆局部零件,但不知道整体是什么。
- CNN 能看清“轮胎”“玻璃”
- 但无法一眼判断:“哦,这是一辆公交车”
4. Transformer 为什么强?——它像“全景天眼”
- 先把图片切成很多小块(patch)
- 然后让每个小块都能和其他所有小块“互相聊天”(Self-Attention)
- 任何两个地方都能建立联系
- 能理解全局结构
5. CNN 不服:我也想看得更远!于是有人尝试“大卷积核”
- 7×7
- 15×15
- 31×31
- ……
让它一次能看到更大范围。
6. 痛点 1:参数量和计算量暴涨(模型变“巨贵”)
形象解释
- 一次看 9 个像素点
- 一次看 961 个像素点
你从“看 9 颗沙子”变成“看 961 颗沙子”,每一步都超级慢。
- 参数量暴增(模型臃肿)
- 推理速度变慢(部署困难)
- 算力成本爆炸
7. 痛点 2:信息冗余 + 训练不稳定(模型变“难养”)
形象解释
- 一次拍进来很多背景
- 很多内容其实没用、重复、噪声
- 学到很多重复的东西(特征冗余)
- 梯度更新忽大忽小(优化震荡)
- 容易训练不稳定
- 泛化变差(在新数据上表现不好)
- 重点只占 10%
- 但你把 90%无关内容也全背了
- 最后背得又累又乱,还可能考不好
8. 所以问题总结成一句话
我想要 Transformer 的“全局视野”,但我又不想付出 Transformer 或大卷积核带来的巨大计算代价。
9. WTConv(小波卷积)为啥出现?它像什么?
本研究提出的小波卷积(Wavelet Convolution, WTConv)正是为此而生。
CNN = 用放大镜逐像素看
- 细节很强,但看不全局
大卷积核 = 换成巨型镜头硬看全局
- 看得远,但太贵 + 太冗余
WTConv = “先换一种更聪明的看法”
不要傻乎乎地把所有像素都一股脑看一遍,先把信息拆成“粗略轮廓 + 细节纹理”。
- 低频:整体轮廓、结构、大形状(公交车的大框架)
- 高频:边缘、纹理、细节(轮胎纹路、窗户边缘)
它能用一种“多尺度、分解式”的方式,让 CNN 在不显著增加计算的情况下,获取更大范围的上下文信息。
- 不再靠“大卷积核硬扫一大片”
- 而是靠“小成本获取全局结构信息”
- 再配合局部细节完成检测
2、WTConv模型网络结构
A) 普通卷积怎么做(图的最上面一行)
input → Conv → output
B) WTConv 怎么做(图中间、下半部分)
input → WT(拆分)→ 在拆开的东西上做 Conv → IWT(拼回)→ output
先把特征图拆成“整体轮廓”和“细节纹理”几块,分别用小卷积学,然后再拼回去。
2.1、图最上面那一行:普通卷积(Baseline)
input → Conv → output
2.2、图中间那块:WTConv 的第一层(做 1 次 WT)
WT↓:做一次小波变换(Wavelet Transform)
把输入特征图拆成 4 张“子图”(4 个频率子带)
- LL(低频):大轮廓 / 结构信息
- LH(高频之一):某个方向的边缘细节
- HL(高频之一):另一个方向的边缘细节
- HH(高频):角点 / 高频纹理 / 更碎的细节
你如何用“人眼”理解这四张图?
✅ 左上(LL)最像原图
“这张图的大致结构是什么?主体在哪?背景在哪?”
✅ 其他三张(LH / HL / HH)看起来像“灰灰的纹理”
- 浮雕
- 边缘
- 纹理噪声
“变化快的地方”:边缘、纹理、细节
LL 管整体,高频管细节。
2.3、图中间的 Conv:在四个子带上分别做小卷积
四宫格 → Conv → 四宫格
不是在原图做一个大卷积,而是在 4 个频率子图上,各做小卷积(通常仍是 3×3)。
为什么这样能扩大感受野?
- 原尺寸:H×W
- LL 尺寸:H/2×W/2
于是出现了一个“魔法”:
- 在 LL 空间只看 3×3
- 但映射回原图,相当于看 6×6
WTConv 的大感受野不是靠“大卷积核”,而是靠“在更小尺度上卷积”。
先把地图缩小,再在地图上画 3×3 的范围。地图缩小了,你画的区域在现实世界就是更大范围。
2.4、图中间右侧:IWT 把四张图拼回 output
四宫格 → IWT → 输出图
把 LL + LH + HL + HH 这 4 张子带信息,重新合成为一张“正常尺度”的特征图。
- WT:拆零件(拆结构/纹理)
- IWT:组装回去(恢复整体)
2.5、图最下半部分:递归 WT(WT↓ 再 WT↓)= 感受野更大
- 又做了一次
WT↓ - 产生更小的四宫格
- 在更小的子带上做
Conv - 再
IWT回去
为什么它能“指数级扩大感受野”?
Level 1(做 1 次 WT)
Level 2(再对 LL 做 WT)
Level 3
每递归一层 WT,感受野翻倍。 这就是图里说的“指数级扩展”。
2.6、 WTConv 本质上在做什么?
把 CNN 的“只会看局部细节”变成“既看全局结构,又看局部纹理”。
2.7、为什么 WTConv 计算量不会爆?(它厉害的工程点)
- 大卷积核 → 参数平方爆炸
- 卷积核不变(还是小卷积)
- 大部分“全局建模”是在低分辨率 LL 上完成的
- 特征图尺寸小了(H/2, W/2)
- 算力消耗大幅下降
“用小卷积做出大卷积核的效果,但更便宜、更稳。”
3、你怎么把模块放进 RT-DETR(Design)
3.1、方案一:替换深度卷积层(WTConv2d)
先解释:什么是 Depthwise Separable Conv(深度可分离卷积)?
- Depthwise Conv(DW):每个通道自己卷自己
- Pointwise Conv(1×1):把通道混合起来
WTConv2d 替换它,意味着什么?
- 原本:DWConv 看局部纹理
- 现在:WTConv 同时看局部 + 更大范围结构(低频全局)
速度基本保持(仍然轻量)但更能看到整体关系(感受野更大)检测更稳,特别是大目标/遮挡/复杂背景
方案二:改进 ResNetLayer 模块(ResNetLayer_WTConv2d)
先解释:ResNetBlock / ResNetLayer 是什么?
- 输入特征
- 做几次卷积
- 再加上 shortcut(残差连接)
- 输出特征
- 容易训练(梯度好传)
- 堆得很深也不容易崩
为什么说“把 WTConv 嵌入 ResNetBlock”更高级?
让每个残差块内部都具备:局部卷积 + 多尺度全局感知
- 主要学局部细节
- 堆很多层后才慢慢扩大感受野
- 残差块内部直接引入小波低频路径
- 一层就能看更大范围
为什么方案(2)能让参数量、计算量“双降”?(关键逻辑)
感受野显著提升,还实现参数量和计算量双重下降
它用“更聪明的方式”扩大感受野
- 用大卷积核(比如 31×31)
- 参数量、计算量爆炸
- 不改卷积核尺寸
- 通过小波分解让特征图变小
- 在小尺度上做小卷积,实现大范围感知
把计算从大图挪到小图上做