【AI课程领学】第四课2/3:CNN 经典结构——从 LeNet 到 ResNet/MobileNet(结构演进逻辑 + PyTorch 复现骨架)

【AI课程领学】第四课2/3:CNN 经典结构——从 LeNet 到 ResNet/MobileNet(结构演进逻辑 + PyTorch 复现骨架)



欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可扫描博文下方二维码 “学术会议小灵通”或参考学术信息专栏:https://ais.cn/u/mmmiUz
详细免费的AI课程可在这里获取→www.lab4ai.cn


1. 为什么要学经典结构?(不是背模型,而是学设计思想)

CNN 结构演进的本质是不断在三者之间权衡:

  • 精度(表示能力)
  • 速度(FLOPs 与并行效率)
  • 参数量(存储与部署)

你理解了这些结构的“设计动机”,才会在新任务上做合理改造(尤其遥感/医学等非自然图像领域)。

2. LeNet:最早的 CNN 原型(Conv + Pool + FC)

  • 结构思想:用卷积提特征,用池化降维,最后全连接分类

3. AlexNet:深度学习复兴的导火索

关键点(工程上仍重要):

  • ReLU 代替 Sigmoid
  • Dropout
  • 数据增强
  • GPU 训练

4. VGG:用“小卷积核”堆深度(3×3 的胜利)

  • 设计哲学:重复的 3×3 卷积模块,结构规整好复用。

5. Inception:多尺度特征融合(分支结构)

  • 思想:同一层并行 1×1、3×3、5×5(或分解)捕获不同尺度信息。
  • 遥感中多尺度很常见(城市/农田/山地纹理尺度差异大),Inception 思想很实用。

6. ResNet:残差连接解决“越深越难训”(里程碑)

  • 核心:
    在这里插入图片描述
  • 让网络学“残差”而不是完整映射,使梯度更容易传播。

7. MobileNet:轻量化 CNN 的代表(深度可分离卷积)

深度可分离卷积:

  • Depthwise Conv:每个通道单独卷积
  • Pointwise Conv:1×1 融合通道

显著减少参数与计算量,非常适合移动端部署。

8. PyTorch:实现一个 ResNet 风格模块(你可直接扩展成完整网络)

import torch
import torch.nn as nn

class BasicBlock(nn.Module):
    def __init__(self, in_ch, out_ch, stride=1):
        super().__init__()
        self.conv1 = nn.Conv2d(in_ch, out_ch, 3, stride=stride, padding=1, bias=False)
        self.bn1 = nn.BatchNorm2d(out_ch)
        self.relu = nn.ReLU(inplace=True)
        self.conv2 = nn.Conv2d(out_ch, out_ch, 3, stride=1, padding=1, bias=False)
        self.bn2 = nn.BatchNorm2d(out_ch)

        self.downsample = None
        if stride != 1 or in_ch != out_ch:
            self.downsample = nn.Sequential(
                nn.Conv2d(in_ch, out_ch, 1, stride=stride, bias=False),
                nn.BatchNorm2d(out_ch)
            )

    def forward(self, x):
        identity = x
        out = self.relu(self.bn1(self.conv1(x)))
        out = self.bn2(self.conv2(out))
        if self.downsample is not None:
            identity = self.downsample(x)
        out = self.relu(out + identity)
        return out

# quick test
x = torch.randn(2, 64, 56, 56)
block = BasicBlock(64, 64)
y = block(x)
print(x.shape, "->", y.shape)

9. 经典结构在“非自然图像”(遥感/医学)的迁移建议

  • 遥感多光谱:把第一层 in_channels=3 改为波段数
  • 分辨率大:采用 patch 训练 + overlap 推理
  • 多尺度:FPN/U-Net/Inception 思想更合适
  • 标签噪声:使用更稳的损失(Huber、Dice)与正则化

10. 小结

  • LeNet/AlexNet:奠基
  • VGG:小核堆深度
  • Inception:多尺度并行
  • ResNet:可训练的深度
  • MobileNet:部署友好

下一篇进入 CNN 压缩:剪枝、量化、蒸馏、低秩分解,以及如何落地。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐