当前位置: 首页 > news >正文

VGG-19(Visual Geometry Group)模型

VGG-19 是由牛津大学视觉几何组和 Google DeepMind 的研究人员在 2014 年提出的一个非常经典的深度卷积神经网络模型

一 核心结构

(1)深度: 模型名称中的 "19" 指的是模型拥有 19 层带有权重的层(通常指:16 个卷积层 + 3 个全连接层 = 19。如果严格数带参数的层,输入层和 ReLU 激活层不计入深度统计)。

(2)简单范式: VGG 系列模型(包括 VGG-11, VGG-13, VGG-16, VGG-19)的核心思想非常简单:只使用非常小的 3x3 卷积核,并通过连续堆叠多个这样的卷积层来构建一个很深的网络。这种设计在保持相同感受野的同时,大大减少了参数量(相比大卷积核),并增加了网络的深度和非线性。

(3)结构图:

输入图像 (224x224x3 RGB)
-> 2 x [卷积 (3x3, 64)] -> 最大池化 (2x2)  // Block 1
-> 2 x [卷积 (3x3, 128)] -> 最大池化 (2x2) // Block 2
-> 4 x [卷积 (3x3, 256)] -> 最大池化 (2x2) // Block 3
-> 4 x [卷积 (3x3, 512)] -> 最大池化 (2x2) // Block 4
-> 4 x [卷积 (3x3, 512)] -> 最大池化 (2x2) // Block 5
-> 3 x [全连接 (4096, 4096, 1000)]        // FC Layers
-> Softmax -> 1000 类输出概率

(4)激活函数: 所有卷积层和全连接层后都使用 ReLU (Rectified Linear Unit) 激活函数,这是深度学习中常见的非线性激活函数。

(5)池化层: 使用 2x2 的最大池化层(Max Pooling),步长为 2,在每组卷积块之后将特征图的空间尺寸减半。总共有 5 次空间下采样(池化)。

(6)全连接层: 在卷积部分之后,通常有两个 4096 单元的全连接层,最后是一个 1000 单元(对应 ImageNet 的 1000 个类别)的输出层。

二 模型特点

(1)深度有效: 通过堆叠多个小的 3x3 卷积核,VGG-19 证明了增加网络深度(层数)能显著提升模型理解复杂视觉特征的能力。

(2)结构统一: 所有卷积层都使用相同的 3x3 核大小(步幅为 1,填充为 1 以保持空间分辨率直到池化),设计非常一致且易于理解。

(3)参数量大: VGG-19 是一个非常大的模型,拥有约 1.38 亿个参数,主要集中在最后几个全连接层。这使得它训练和推理都非常耗费计算资源和内存

(4)高精度 (At the time): 在 2014 年的 ImageNet 竞赛中,VGG-19 展现出了当时最顶尖的识别精度。(虽然当年冠军是 GoogLeNet/Inception-v1,但 VGG 因其结构简单、效果显著而极具影响力)

三 与之前版本的区别

VGG-16(13 个卷积层 + 3 个全连接层)举例:

VGG-16 和 VGG-19 的结构非常相似,主要区别在于 Block 3、4、5 中卷积层的数量

Block 3, VGG-16 有 3 层卷积,VGG-19 有 4 层。

Block 4, VGG-16 有 3 层卷积,VGG-19 有 4 层。

Block 5, VGG-16 有 3 层卷积,VGG-19 有 4 层。

VGG-19 比 VGG-16 更深(多 3 个卷积层),参数量也略多(但量级都在 1.38 亿附近)。精度通常略高于 VGG-16,但提升边际效应递减。

输入图像 (224x224x3 RGB)
-> 2 x [卷积 (3x3, 64)] -> 最大池化 (2x2)  // Block 1
-> 2 x [卷积 (3x3, 128)] -> 最大池化 (2x2) // Block 2
-> 3 x [卷积 (3x3, 256)] -> 最大池化 (2x2) // Block 3
-> 3 x [卷积 (3x3, 512)] -> 最大池化 (2x2) // Block 4
-> 3 x [卷积 (3x3, 512)] -> 最大池化 (2x2) // Block 5
-> 3 x [全连接 (4096, 4096, 1000)]        // FC Layers
-> Softmax -> 1000 类输出概率
# VGG-16模型定义
class VGG16(nn.Module):def __init__(self, num_classes=10):super(VGG16, self).__init__()self.features = nn.Sequential(# Block 1nn.Conv2d(3, 64, kernel_size=3, padding=1),nn.BatchNorm2d(64),nn.ReLU(inplace=True),nn.Conv2d(64, 64, kernel_size=3, padding=1),nn.BatchNorm2d(64),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=2, stride=2),# Block 2nn.Conv2d(64, 128, kernel_size=3, padding=1),nn.BatchNorm2d(128),nn.ReLU(inplace=True),nn.Conv2d(128, 128, kernel_size=3, padding=1),nn.BatchNorm2d(128),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=2, stride=2),# Block 3nn.Conv2d(128, 256, kernel_size=3, padding=1),nn.BatchNorm2d(256),nn.ReLU(inplace=True),nn.Conv2d(256, 256, kernel_size=3, padding=1),nn.BatchNorm2d(256),nn.ReLU(inplace=True),nn.Conv2d(256, 256, kernel_size=3, padding=1),nn.BatchNorm2d(256),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=2, stride=2),# Block 4nn.Conv2d(256, 512, kernel_size=3, padding=1),nn.BatchNorm2d(512),nn.ReLU(inplace=True),nn.Conv2d(512, 512, kernel_size=3, padding=1),nn.BatchNorm2d(512),nn.ReLU(inplace=True),nn.Conv2d(512, 512, kernel_size=3, padding=1),nn.BatchNorm2d(512),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=2, stride=2),# Block 5nn.Conv2d(512, 512, kernel_size=3, padding=1),nn.BatchNorm2d(512),nn.ReLU(inplace=True),nn.Conv2d(512, 512, kernel_size=3, padding=1),nn.BatchNorm2d(512),nn.ReLU(inplace=True),nn.Conv2d(512, 512, kernel_size=3, padding=1),nn.BatchNorm2d(512),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=2, stride=2),)

四 VGG优缺点

优点缺点
 历史贡献:深度验证
首创使用连续小卷积堆叠深度网络
- 证明了网络深度对性能的关键作用
参数量过大(主要缺陷)
- 全连接层(FC)参数量爆炸:
- FC1: 25088×4096 ≈ 1.03亿参数
- 总参数量高达 1.38亿
结构统一性
- 仅用 3×3小卷积核 + 2×2最大池化
- 模块化堆叠(64→128→256→512通道)
计算资源消耗大
- 大量卷积+全连接导致:
训练/推理速度慢
- 显存占用高(移动端难以部署)
特征表达能力强大
- 深层网络捕获多尺度特征
- 特征通用性极优(适用于迁移学习)
梯度问题
- 原始版本未用BN层(Batch Normalization)
- 训练易出现梯度消失/爆炸(需配合Dropout)
广泛迁移应用
- 预训练特征成为早期CV任务标准骨干
- 如目标检测、图像风格迁移等
全连接冗余严重
- FC层参数占整体 >90%
- 后发模型(如ResNet)用全局池化替代FC
简洁设计理念
- 架构规整透明,易于复现/改进
- 小卷积堆叠优于大核(更多非线性+更少参数)
训练成本高昂
- 需大数据集(ImageNet级)防止过拟合
- 对超参数敏感

VGG-19 尽管它取得了显著的高精度,但因其庞大的参数量和计算开销,在新模型设计和效率敏感的部署场景中已被 ResNet 等更现代的网络结构所取代。但在图像表示学习、迁移学习和理解深度网络基础方面,VGG-19 仍然是一个非常重要和经典的基准模型。 

相关文章:

  • ubuntu使用tftp传输文件
  • Ubuntu 使用kubeadm部署k8s系统组件反复重启的问题
  • ubuntu2404 Server扩展PV
  • 剑指offer32_二叉搜索树的后序遍历序列
  • OpenCV根据模板图像寻找环境中的目标
  • 状态压缩与前缀和的魔力:破解LeetCode 1371元音之谜
  • RAG实践:Routing机制与Query Construction策略
  • Gemini 2.5 Flash-Lite 新版解析:与 Pro 和 Flash 版本的性能对比
  • JavaEE-Spring-IoCDI
  • 深入探索 UnoCSS:下一代原子化 CSS 引擎
  • HTML 与 CSS 的布局机制(盒模型、盒子定位、浮动、Flexbox、Grid)问题总结大全
  • 股指期货套期保值是利好还是利空?
  • 数组和指针
  • django 获取 filter后的某一个属性的list
  • 阿里云主机自动 HTTPS 证书部署踩坑实录
  • JavaScript 循环方式:全面解析与性能对比
  • Java求职者面试题详解:核心语言、计算机基础与源码原理
  • 爬虫技术:数据挖掘的深度探索与实践应用
  • C++/OpenCV 图像预处理与 PaddleOCR 结合进行高效字符识别
  • 计算无线电波在大气中传播衰减的算法
  • 网站注册搜索引擎的目的/网站关键字优化公司
  • 如何创立个人网站/公司全网推广
  • 杨中市网站建设/免费推广论坛
  • node 网站开发/seo公司重庆
  • 惠州做网站乐云seo/查域名
  • 网站平台建设制度/网络宣传方案