VGG 网络是由牛津大学视觉几何组Visual Geometry Group提出的深度卷积神经网络模型。其主要贡献在于证明了增加网络深度可以显著提升图像识别任务的性能。VGG16 和 VGG19 是其中最著名的两个版本分别包含 16 层和 19 层可训练权重层不含池化层和激活层。论文地址Very Deep Convolutional Networks for Large-Scale Image RecognitionVery Deep Convolutional Networks for Large-Scale Image Recognition核心特点1.小卷积核全部使用卷积核步长1填充1替代更大的卷积核。两个卷积层的感受野等于一个卷积层但参数更少。2.深度堆叠通过连续堆叠卷积层如 2-4 层后再接池化层逐步压缩空间维度。3.全连接层末端使用 2-3 个全连接层4096维和 Softmax 分类器。1. VGG16 结构VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核11x117x75x5。对于给定的感受野与输出有关的输入图片的局部大小采用堆积的小卷积核是优于采用大的卷积核因为多层非线性层可以增加网络深度来保证学习更复杂的模式而且代价还比较小参数更少。简单来说在VGG中使用了3个3x3卷积核来代替7x7卷积核使用了2个3x3卷积核来代替5*5卷积核这样做的主要目的是在保证具有相同感知野的条件下提升了网络的深度在一定程度上提升了神经网络的效果。输入RGB图像卷积阶段Conv3-64 → Conv3-64 → MaxPool2 → Conv3-128 → Conv3-128 → MaxPool2 → Conv3-256 → Conv3-256 → Conv3-256 → MaxPool2 → Conv3-512 → Conv3-512 → Conv3-512 → MaxPool2 → Conv3-512 → Conv3-512 → Conv3-512 → MaxPool2全连接阶段FC-4096 → FC-4096 → FC-1000ImageNet类别数总层数13卷积层 3全连接层 16层VGG16包含了16个隐藏层13个卷积层和3个全连接层。划分了5个block红色下采样 Max Pooling白色卷积层ReLU蓝色全连接ReLU神经网络参数传递从左向右参数传递过程中通道数越来越深尺寸越来越小从7x7x512下采样后参数被拉平为1x1的长向量进入全连接层。2.VGG19 结构在 VGG16 的基础上增加 3 个卷积层额外卷积层Conv3-64 → Conv3-64 → MaxPool2 → Conv3-128 → Conv3-128 → MaxPool2 → Conv3-256 → Conv3-256 → Conv3-256 → MaxPool2 → Conv3-512 → Conv3-512 → Conv3-512 → MaxPool2 → Conv3-512 → Conv3-512 → Conv3-512 → MaxPool2 → Conv3-512 → Conv3-512 → Conv3-512 → Conv3-512 → MaxPool2对比 VGG16 多出 3 个 Conv3-512 层总层数16卷积层 3全连接层 19层3.性能对比指标VGG16VGG19Top-1 错误率~27%~26%参数量138M144M计算量15.5 GFLOPs19.6 GFLOPs3.VGGBlock结构示例import torch.nn as nn # VGG 网络核心基础模块 VGGBlock class VGGBlock(nn.Module): # num_convs这个模块里堆叠多少个卷积层 def __init__(self, in_channels, out_channels, num_convs): super().__init__() layers [] for _ in range(num_convs): layers [ # # 3×3卷积 填充1 → 卷积后图像尺寸不变 nn.Conv2d(in_channels, out_channels, kernel_size3, padding1), nn.ReLU(inplaceTrue) ] in_channels out_channels self.block nn.Sequential(*layers) def forward(self, x): return self.block(x) # VGG16 配置 [2, 2, 3, 3, 3] 卷积层数 # VGG19 配置 [2, 2, 4, 4, 4] 卷积层数
VGG(VGG16/VGG19)
发布时间:2026/5/21 15:06:11
VGG 网络是由牛津大学视觉几何组Visual Geometry Group提出的深度卷积神经网络模型。其主要贡献在于证明了增加网络深度可以显著提升图像识别任务的性能。VGG16 和 VGG19 是其中最著名的两个版本分别包含 16 层和 19 层可训练权重层不含池化层和激活层。论文地址Very Deep Convolutional Networks for Large-Scale Image RecognitionVery Deep Convolutional Networks for Large-Scale Image Recognition核心特点1.小卷积核全部使用卷积核步长1填充1替代更大的卷积核。两个卷积层的感受野等于一个卷积层但参数更少。2.深度堆叠通过连续堆叠卷积层如 2-4 层后再接池化层逐步压缩空间维度。3.全连接层末端使用 2-3 个全连接层4096维和 Softmax 分类器。1. VGG16 结构VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核11x117x75x5。对于给定的感受野与输出有关的输入图片的局部大小采用堆积的小卷积核是优于采用大的卷积核因为多层非线性层可以增加网络深度来保证学习更复杂的模式而且代价还比较小参数更少。简单来说在VGG中使用了3个3x3卷积核来代替7x7卷积核使用了2个3x3卷积核来代替5*5卷积核这样做的主要目的是在保证具有相同感知野的条件下提升了网络的深度在一定程度上提升了神经网络的效果。输入RGB图像卷积阶段Conv3-64 → Conv3-64 → MaxPool2 → Conv3-128 → Conv3-128 → MaxPool2 → Conv3-256 → Conv3-256 → Conv3-256 → MaxPool2 → Conv3-512 → Conv3-512 → Conv3-512 → MaxPool2 → Conv3-512 → Conv3-512 → Conv3-512 → MaxPool2全连接阶段FC-4096 → FC-4096 → FC-1000ImageNet类别数总层数13卷积层 3全连接层 16层VGG16包含了16个隐藏层13个卷积层和3个全连接层。划分了5个block红色下采样 Max Pooling白色卷积层ReLU蓝色全连接ReLU神经网络参数传递从左向右参数传递过程中通道数越来越深尺寸越来越小从7x7x512下采样后参数被拉平为1x1的长向量进入全连接层。2.VGG19 结构在 VGG16 的基础上增加 3 个卷积层额外卷积层Conv3-64 → Conv3-64 → MaxPool2 → Conv3-128 → Conv3-128 → MaxPool2 → Conv3-256 → Conv3-256 → Conv3-256 → MaxPool2 → Conv3-512 → Conv3-512 → Conv3-512 → MaxPool2 → Conv3-512 → Conv3-512 → Conv3-512 → MaxPool2 → Conv3-512 → Conv3-512 → Conv3-512 → Conv3-512 → MaxPool2对比 VGG16 多出 3 个 Conv3-512 层总层数16卷积层 3全连接层 19层3.性能对比指标VGG16VGG19Top-1 错误率~27%~26%参数量138M144M计算量15.5 GFLOPs19.6 GFLOPs3.VGGBlock结构示例import torch.nn as nn # VGG 网络核心基础模块 VGGBlock class VGGBlock(nn.Module): # num_convs这个模块里堆叠多少个卷积层 def __init__(self, in_channels, out_channels, num_convs): super().__init__() layers [] for _ in range(num_convs): layers [ # # 3×3卷积 填充1 → 卷积后图像尺寸不变 nn.Conv2d(in_channels, out_channels, kernel_size3, padding1), nn.ReLU(inplaceTrue) ] in_channels out_channels self.block nn.Sequential(*layers) def forward(self, x): return self.block(x) # VGG16 配置 [2, 2, 3, 3, 3] 卷积层数 # VGG19 配置 [2, 2, 4, 4, 4] 卷积层数