VGG


VGG(作者所在的牛津大学视觉几何组Visual Geometry Group的缩写)是 [Very Deep Convolutioinal Networks for Large-Scale Image Recognition]提出的卷积神经网络模型,在2014年ImageNet图像分类与定位挑战赛中,取得了 分类任务第二,定位任务第一的好成绩。

VGG结构

VGG的核心是五组卷积操作,每两组之间做Max-Pooling空间降维。同一组内采用多次连续的3x3卷积,卷积核的数目由较浅组的64增多到最深组的512,同一组内的卷积核数目是一样的。卷积之后接两层全连接层,之后是分类层。由于每组内卷积层的不同,有11/13/16/19层这几种模型。

根据卷积核大小和卷积层数目的不同,VGG分为A、A-LRN、B、C、D、E六种配置,其中D、E两种配置较为常用,分别称为VGG16和VGG19。
在这里插入图片描述

VGG16 特点

  • 13个卷积层均采用相同的卷积核参数(kernel_size=3,stride=1,padding=1),每一个卷积层与前一层保持相同的宽和高。
  • 5个池化层均采用相同的池化核参数(kernel_size=(2,2), stride=(2,2))和max池化方式。使每一个池化层的宽和高是前一层的1/2。
  • 3个全连接层。

在这里插入图片描述

块结构

VGG16的卷积层划分为不同的块(block),每一个块内包含若干个卷积层和一个池化层,并且同一块内,卷积层的通道(channel)数是相同的。随着层数的增加,后一个块比前一个块通道数翻倍,由64依次增加到128,再到256,直至512保持不变。相应的高和宽减半,由224->112->56->28->14->7。

在这里插入图片描述

权重参数

卷积层和全连接层具有权重系数,被称为权重层,池化层不涉及权重,不属于权重层。尽管VGG16结构简单,但是所包含的权重数目却很大(138357544个参数)。

  • 卷积层参数计算:kernel_sizekernel_sizeinput_channel*output_channel
  • 全连接层权重参数计算:前一层节点数*本层的节点数

图中蓝色是计算权重参数数量的部分,红色是计算所需存储容量部分。
在这里插入图片描述
VGG16具有很高的拟合能力,但是参数数量较多,需要的存储容量大,不利于部署。训练时间过长,调参难度大。

参考资料
VGG16学习笔记

VGG(Visual Geometry Group)是由牛津大学视觉几何组提出的一系列深度卷积神经网络模型,广泛应用于计算机视觉任务中。这些模型因在2014年ImageNet大规模视觉识别挑战赛(ILSVRC)中的优异表现而闻名。最著名的变体是VGG-16和VGG-19,分别包含16层和19层网络结构。 VGG网络的核心特点是使用连续的小型3×3卷积核堆叠来替代大型卷积核(如5×5或7×7),通过增加网络深度提升特征提取能力。这种设计不仅增强了非线性表达能力,还减少了参数数量并提高了泛化性能。 网络结构通常由多个卷积层块组成,每个块后接最大池化层进行下采样。以VGG-16为例,其结构如下: - 输入图像尺寸为 $224 \times 224 \times 3$ - 包含5个卷积块: - 第一卷积块:2个 $3\times3$ 卷积层,64个滤波器 - 第二卷积块:2个 $3\times3$ 卷积层,128个滤波器 - 第三卷积块:3个 $3\times3$ 卷积层,256个滤波器 - 第四卷积块:3个 $3\times3$ 卷积层,512个滤波器 - 第五卷积块:3个 $3\times3$ 卷积层,512个滤波器 - 每个卷积块后接一个 $2\times2$ 最大池化层(步幅为2) - 全连接层部分: - 两个含4096个神经元的全连接层 - 一个输出类别数的全连接层(如ImageNet中为1000类) - 使用ReLU激活函数 该网络可通过预训练权重加载,在迁移学习中常用于图像分类、目标检测和语义分割等任务。例如,在Keras中调用VGG-16预训练模型的方法如下: ```python from tensorflow.keras.applications import VGG16 model = VGG16(weights='imagenet', include_top=True, input_shape=(224, 224, 3)) ``` 若用于迁移学习,可移除顶层并添加自定义分类头: ```python base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3)) base_model.trainable = False from tensorflow.keras.layers import GlobalAveragePooling2D, Dense from tensorflow.keras.models import Sequential model = Sequential([ base_model, GlobalAveragePooling2D(), Dense(256, activation='relu'), Dense(num_classes, activation='softmax') ]) ``` 由于VGG网络参数量较大(VGG-16约有1.38亿参数),推理速度较慢且占用内存高,后续被ResNet、MobileNet等更高效的架构所取代,但在教学与研究中仍具有重要地位。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值