Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 经典CNN模型之VGG与ResNet

经典CNN模型之VGG与ResNet

1. VGG网络

1.1 核心思想

  • 统一卷积核设计:全部使用3×3小卷积核堆叠,替代大尺寸卷积核(如5×5、7×7)
  • 深度增加:通过多层小卷积核组合实现与大卷积核相同的感受野,同时减少参数量
  • 架构标准化:提出从VGG11到VGG19的多种深度配置(以卷积层数命名)

1.2 网络结构

# 典型VGG16结构示例
Conv3-64 → Conv3-64 → MaxPool → 
Conv3-128 → Conv3-128 → MaxPool → 
Conv3-256 → Conv3-256 → Conv3-256 → MaxPool → 
Conv3-512 → Conv3-512 → Conv3-512 → MaxPool → 
Conv3-512 → Conv3-512 → Conv3-512 → MaxPool → 
Flatten → FC-4096 → FC-4096 → FC-1000(Softmax)

1.3 关键贡献

  • 证明网络深度对性能的重要性
  • 小卷积核的堆叠策略成为后续模型设计范式
  • 在2014年ImageNet竞赛中达到7.3% top-5错误率

2. ResNet(残差网络)

2.1 核心创新

  • 残差学习:提出"恒等快捷连接"(Identity Shortcut)解决梯度消失问题
  • 基本单元公式:

    y=F(x,{Wi})+x\mathbf{y} = \mathcal{F}(\mathbf{x}, \{W_i\}) + \mathbf{x} y=F(x,{Wi​})+x

    其中F\mathcal{F}F为残差函数

2.2 网络变体

模型层数主要改进
ResNet-1818基础残差块结构
ResNet-3434增加深度
ResNet-5050引入瓶颈设计(Bottleneck)
ResNet-101101超深度网络
ResNet-152152当前常用最大配置

2.3 关键技术

  • 瓶颈结构:1×1卷积降维→3×3卷积→1×1卷积升维
  • 批量归一化:每个卷积层后接BN层
  • 全局平均池化:替代全连接层减少参数量

3. 对比分析

特性VGGResNet
最大深度19层152层+(理论上无限延伸)
参数量~138M(VGG16)~25.5M(ResNet50)
核心创新小卷积核堆叠残差连接
训练难度较易梯度消失可训练极深层网络
ImageNet Top-57.3%3.57%(ResNet152)

4. 实际应用建议

  • VGG适用场景:

    • 需要高精度中等深度模型
    • 迁移学习中的特征提取器
    • 计算资源充足的场景
  • ResNet适用场景:

    • 超深度网络需求
    • 需要解决梯度消失问题
    • 资源受限时可用带瓶颈结构的版本

5. 代码实现示例

# ResNet残差块实现(PyTorch)
class ResidualBlock(nn.Module):
    def __init__(self, in_channels, out_channels, stride=1):
        super().__init__()
        self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=stride, padding=1)
        self.bn1 = nn.BatchNorm2d(out_channels)
        self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1)
        self.bn2 = nn.BatchNorm2d(out_channels)
        
        self.shortcut = nn.Sequential()
        if stride != 1 or in_channels != out_channels:
            self.shortcut = nn.Sequential(
                nn.Conv2d(in_channels, out_channels, kernel_size=1, stride=stride),
                nn.BatchNorm2d(out_channels))
    
    def forward(self, x):
        out = F.relu(self.bn1(self.conv1(x)))
        out = self.bn2(self.conv2(out))
        out += self.shortcut(x)
        return F.relu(out)

里程碑意义:VGG和ResNet分别代表了CNN发展过程中"深度化"和"可训练性"两个关键阶段的突破,其设计思想持续影响当前最先进的模型架构。

Last Updated:: 5/20/25, 7:33 PM