一、VGG网络概述
VGG(Visual Geometry Group)网络是由牛津大学的视觉几何组提出的一种深度卷积神经网络架构。它在2014年的ImageNet图像分类竞赛中取得了亚军的成绩,证明了通过增加网络深度可以显著提高图像识别的性能。VGG网络以其简洁和一致性的设计哲学,成为理解卷积神经网络(CNN)结构的基础之一。
二、VGG网络特点
1.深度结构:
VGG网络采用了非常深的网络结构,最典型的是VGG-16和VGG-19,分别包含16层和19层的卷积层(不包括全连接层),这种深度结构有助于网络学习到更复杂的图像特征,提高识别准确率。
2.小卷积核:
VGG网络主要使用3x3的卷积核,通过堆叠多个小卷积核来达到与大卷积核相同的感受野,同时增加了非线性激活函数的数量。这种设计减少了参数数量,提高了训练速度,并且增强了网络的非线性拟合能力。
3.池化层:
VGG网络使用2x2的最大池化层来减小特征图的空间分辨率,降低计算复杂性。池化层有助于网络对图像中的微小变化(如平移、旋转等)保持鲁棒性。
4.全连接层:
在卷积和池化层之后,VGG网络包含几层全连接层,用于将高层次的特征映射到最终的类别概率分布上。全连接层通常包含大量的参数,这些参数在训练过程中通过反向传播算法进行更新。
三、 VGG网络结构
每一个模型分为五个block,所有的卷积层使用3×3大小的卷积核,随着模型的变深,每一个模型的channel(或者说卷积核)的个数都翻倍
1.输入层
接收224x224的三通道(RGB )彩色图像,图像在输入层进行预处理
2.卷积层
VGG-16包含13个卷积层,这些卷积层被组织成5个卷积块。
第一个block有两个卷积层,每一个卷积层都是64个3×3卷积
第二个block有两个卷积层,每一个卷积层都是128个3×3卷积
第三个block有三个卷积层,每一个卷积层都是256个3×3卷积
第四个block与第五个block有三个卷积层,每一个卷积层都是512个卷积核
VGG-19(图上的E):与VGG-16不同的是block3、block4与block5有四个卷积层
每个卷积块包含多个3x3卷积层和ReLU激活函数,卷积层之间可能包含最大池化层。
卷积层的输出特征图数量逐渐增加,从64个增加到512个。
2.1 降采样:池化层
池化层的作用是减小图像的空间尺寸,即图像的宽度和高度。这通常通过取一个小区域的最大值来实现,这样即使图像内容发生微小的移动,网络的输出也不会有太大变化,从而增强了网络的泛化能力。
2.2 非线性激活:ReLU
在每个卷积操作后,VGG网络使用一种称为ReLU的非线性激活函数。ReLU的作用就像是个开关,它只允许大于0的数值通过,而将小于或等于0的数值关闭。这有助于网络捕捉到更丰富的特征,并且简化了计算。VGG网络使用其作为激活函数,有助于缓解梯度消失的问题。
3.全连接层
包含三个全连接层,分别为FC-4096、FC-4096和FC-1000(或对应类别的数量)。
这些全连接层负责将卷积层提取的特征映射到最终的类别概率分布上,在全连接层之间,通常包含ReLU激活函数和Dropout层,用于防止过拟合。
4.输出层
使用Softmax函数将全连接层的输出转换成概率分布,以便进行多分类任务。这样每个类别都有一个介于0到1之间的数值,所有类别的概率之和为1,我们就可以简单地选择概率最高的类别作为网络的预测结果。
红色表示max pooling,最大池化下采样层,下采样层并不包含参数,所以并不包含在16或者19中
白色表示卷积层
像素层面的长宽越来越小,语义层面的通道数越来越深(长宽越来越小,通道数越来越多)
VGG-16和VGG-19本质上并没有什么区别,只是VGG-19比VGG-16在后面三个block中各多了一个卷积层
VGG-16是最常用的迁移学习的骨干模型,输入的是224×224×3的RGB彩色图像。
第一个block输出的feature map(特征图)是224×224×64,有64个卷积核,每一个卷积核生成一个channel,每一个channel是224×224
下采样后长宽减半,然后继续用128个卷积核进行卷积,得到128个channel(通道)
以此类推,第五个block输出的feature map是7×7×512,经过下采样将它展平成为一个长向量,再经过3个全连接层(第一二层有4096个神经元,第三层有1000个神经元)
经过最后一个全连接层输出1000个类别的logic分数,这1000个分数经过softmax处理,得到1000个类别的后验概率
整个过程长宽信息逐渐减小,通道信息逐渐增加(将像素空间的信息转化成语义信息)
该图为所有卷积层输出的feature map的尺寸,每次进入下一个block通道数都翻倍。
四 、为什么VGG全部使用3×3的卷积?
带权重的卷积核在原图上进行滑动,它所覆盖到的区域叫做感受野
原图感受野上的像素和对应的卷积核上对应的权重相乘并求和,最终得到feature map
(1)5×5的输入通过一个3×3的卷积核(步长为1)得到一个3×3的feature map,再通过一个3×3的卷积核(不用进行滑动)进行卷积,最后得到一个值,这个值反映的是原来的5×5的输入的信息,即2个3×3的卷积可以代替1个5×5的卷积
(2)这样做的好处:经过两层之后模型深度变深了,非线性次数变多了,学习能力会变得更好,表示空间会变得更大而且参数的数量减少了
3×3本身也有一个好处:他是最小的能够包含左右、上下和中心点的最基本的单元
五、VGG网络的不足
(1)它的准确率并不是最优秀的(经典神经网络结构,深度并不是很深),准确率处于中游水平
(2)计算资源消耗大:由于网络深度较深,VGG网络在计算资源上的消耗相对较大。
(3)参数数量多:尽管使用小卷积核有助于减少参数数量,但VGG网络的总体参数数量仍然较多,导致更多的内存占用。
(4)对小样本数据的识别能力不足:VGG网络需要大量的样本数据进行训练,对于小样本数据容易出现过拟合或欠拟合的情况。
(5)对复杂场景的识别能力较弱:对于局部区域与整体场景的关系等复杂问题,VGG网络的表现并不是很好。