门控卷积通过可学习的门控值动态调整特征权重,实现对有效/无效像素的区分。
核心思想
- :门控卷积核
- :特征卷积核
- :Sigmoid,:激活函数
- :逐元素相乘
门控值 动态调整不同位置和通道的特征权重。
发展历程
| 时间 | 里程碑 |
|---|---|
| 2018 | 部分卷积:硬编码掩码处理图像修复 |
| 2019 | 门控卷积:软掩码自适应学习特征选择 |
| 2023 | 递归门控卷积(GnConv):高阶空间交互 |
| 2024 | 扩展至目标检测、裂缝分割 |
结构特性
| 特性 | 说明 |
|---|---|
| 动态特征选择 | 门控值根据输入调整权重 |
| 高阶交互 | GnConv 多阶递归实现复杂空间交互 |
| 计算高效 | 线性复杂度,优于 Self-Attention 的 |
应用场景
图像修复
门控值抑制掩码区域的无效特征传播。
通用视觉模型
HorNet 用 GnConv 替代 Self-Attention:
| 模型 | ImageNet Acc | COCO AP |
|---|---|---|
| Swin-T | 81.3% | 48.1 |
| HorNet-T | 82.8% | 49.3 |
目标检测与分割
- YOLOv8:GnConv 增强 C2f 特征融合
- SCSegamba:门控瓶颈卷积提升裂缝分割
PyTorch 实现
import torch.nn as nn
class GatedConv2d(nn.Module):
def __init__(self, in_ch, out_ch, kernel_size=3, padding=1):
super().__init__()
self.feature_conv = nn.Conv2d(in_ch, out_ch, kernel_size, padding=padding)
self.gate_conv = nn.Conv2d(in_ch, out_ch, kernel_size, padding=padding)
def forward(self, x):
features = self.feature_conv(x)
gating = self.gate_conv(x).sigmoid()
return features * gating实践建议
- 初始化:Xavier 避免门控值饱和
- 结合注意力:兼顾局部细节和全局一致性
- 高分辨率优化:深度可分离卷积降低门控分支计算量