张芷铭的个人博客

Inception-v1(GoogLeNet)通过多尺度并行卷积结构,在参数量仅为 AlexNet 的 1/12 下实现 6.67% Top-5 错误率。

Inception 模块

四个并行分支捕获多尺度特征:

分支结构
11×1 卷积
21×1 卷积 → 3×3 卷积
31×1 卷积 → 5×5 卷积
43×3 池化 → 1×1 卷积

1×1 卷积作用

  1. 通道降维:减少计算量
  2. 非线性增强:增加模型表达能力
  3. 跨通道交互:实现通道信息整合

PyTorch 实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
class InceptionV1Module(nn.Module):
    def __init__(self, in_ch, ch1x1, ch3x3red, ch3x3, ch5x5red, ch5x5, pool_proj):
        super().__init__()
        self.branch1 = nn.Conv2d(in_ch, ch1x1, 1)
        self.branch2 = nn.Sequential(
            nn.Conv2d(in_ch, ch3x3red, 1),
            nn.Conv2d(ch3x3red, ch3x3, 3, padding=1)
        )
        self.branch3 = nn.Sequential(
            nn.Conv2d(in_ch, ch5x5red, 1),
            nn.Conv2d(ch5x5red, ch5x5, 5, padding=2)
        )
        self.branch4 = nn.Sequential(
            nn.MaxPool2d(3, stride=1, padding=1),
            nn.Conv2d(in_ch, pool_proj, 1)
        )

    def forward(self, x):
        return torch.cat([
            self.branch1(x), self.branch2(x),
            self.branch3(x), self.branch4(x)
        ], dim=1)

网络架构

  • 共 22 层,包含 9 个 Inception 模块
  • 全局平均池化替代全连接层
  • 辅助分类器缓解梯度消失

性能对比

模型Top-5 错误率参数量FLOPs
AlexNet15.3%60M720M
VGG-167.3%138M15.5B
GoogLeNet6.67%6.8M1.5B

历史贡献

  • 证明宽度优于深度的设计理念
  • 开创模块化网络设计范式
  • 1×1 卷积成为现代 CNN 标配组件

Comments