张芷铭的个人博客

门控卷积通过可学习的门控值动态调整特征权重,实现对有效/无效像素的区分。

核心思想

$$g = \sigma(W_g \ast x), \quad y = \phi(W \ast x) \odot g$$

  • $W_g$:门控卷积核
  • $W$:特征卷积核
  • $\sigma$:Sigmoid,$\phi$:激活函数
  • $\odot$:逐元素相乘

门控值 $g$ 动态调整不同位置和通道的特征权重。

发展历程

时间里程碑
2018部分卷积:硬编码掩码处理图像修复
2019门控卷积:软掩码自适应学习特征选择
2023递归门控卷积(GnConv):高阶空间交互
2024扩展至目标检测、裂缝分割

结构特性

特性说明
动态特征选择门控值根据输入调整权重
高阶交互GnConv 多阶递归实现复杂空间交互
计算高效线性复杂度,优于 Self-Attention 的 $O(N^2)$

应用场景

图像修复

门控值抑制掩码区域的无效特征传播。

通用视觉模型

HorNet 用 GnConv 替代 Self-Attention:

模型ImageNet AccCOCO AP
Swin-T81.3%48.1
HorNet-T82.8%49.3

目标检测与分割

  • YOLOv8:GnConv 增强 C2f 特征融合
  • SCSegamba:门控瓶颈卷积提升裂缝分割

PyTorch 实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
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 避免门控值饱和
  • 结合注意力:兼顾局部细节和全局一致性
  • 高分辨率优化:深度可分离卷积降低门控分支计算量

Comments