VGGNet网络(2014年提出)
1.VGGNet网络详解
1.VGG在2014年由牛津大学著名研究组VGG(Visual Geometry Group,视觉几何组)提出,斩获该年ImageNet竞赛(ILSVRC)中Localization Task(定位任务)第一名和Classification Task(分类任务)第二名。
到目前为止(2020.10),VGGNet依然被广泛用来提取图像特征。
原论文:Very Deep Convolutional Networks For Large-Scale Image Recognition
- 优点:
-
与2012年的AlexNet网络相比,VGGNet统一了网络中使用的参数,卷积核尺寸统一为3×3
conv的stride为1,padding为1
maxpool的size为2,stride为2
-
增加了卷积神经网络模型架构的深度,分别定义了16层的VGG16模型和19层的VGG19模型,与AlexNet的8层结构相比,其深度更深。
- 意义
上面两个重要的改变(优点)对于人们重新定义卷积神经网络模型架构也有不小的帮助,至少证明了使用更小的卷积核并增加卷积神经网络的深度可以更有效的提升模型的性能。
表1
表1
显示了6个VGG网络的配置,在这6个配置当中,作者尝试了不同的深度,以及是否使用LRN(局部响应归一化),以及对比卷积核大小为1和卷积核大小为3的效果。
但在使用过程中常常使用的是配置D,16层(13层卷积层,3层全连接层):VGG16
- 网络中的亮点
- 通过堆叠多个3×3的小卷积核来代替大尺度卷积核(5×5、11×11)(目的:减少所需训练参数)
优势:
- 减少了计算量
- *多层小尺寸卷积核的非线性要优于单层大尺寸卷积,从而增加了网络的表征能力
- 小尺寸卷积核更有利于提取图像的微小视觉特征
论文中提到,可以通过堆叠两个3×3的卷积核替代5×5的卷积核;
堆叠三个3×3的卷积核替代7×7的卷积核。
拥有相同的感受野
- 可堆叠的块状网络结构
VGGNet多次重复使用同一尺寸的卷积核,以便提取更为复杂和更具有表达性的图像特征。
这种通过重复使用简单的基础模块(blocks/modules)来构建深度神经网络模型的思路,因此VGGNet之后被广泛采用。
- 每次的卷积都采用Same卷积,图像的尺寸不发生改变,而提取的特征却在增多。
- 相比于AlexNet,VGG16提取特征会更加细致,也就决定了它更加出色的性能。
VGG16的网络体系十分庞大,需要训练的参数极多,但是其结构十分规整简单。
每一次卷积的卷积核的个数都是上一次卷积的卷积核个数的2倍,直到最后卷积核的个数达到了512。
可能该网络的作者觉得不能再多下去了,于是又做了一次卷积核个数为512的卷积。
-
VGGNet简单灵活,拓展性强,并且迁移到其他数据集上的泛化性能也很好,因此,时至今日仍然有很多深度学习算法采用VGGNet网络结构,目前常用的是VGGNet-16和VGGNet-19.
-
VGG16在最后输出采用了Softmax分类器,这使得VGG16在处理图像分类问题同样可以得心应手。
-
缺点
网络参数规模急剧增加导致网络训练更加复杂、运算速度较慢。
2.CNN感受野
-
概念
在卷积神经网络中,决定某一层输出结果中一个元素所对应的输入层的区域大小,称为感受野(receptive field)。
通俗来讲,输出feature map上的一个单元对应输入层上的区域大小。
如图1
图1
- 感受野计算公式:
F ( i ) = ( F ( i + 1 ) − 1 ) × S t r i d e + K s i z e F(i)=(F(i+1)-1)×Stride+Ksize F(i)=(F(i+1)−1)×Stride+Ksize
F(i)为第i层感受野,
Stride为第i层的步距
Ksize为卷积核或池化核尺寸
感受野大小 | |
---|---|
Feature map | F(3)=1 |
MaxPool1 | F(2)=[F(3)-1]×2+2=[1-1]×2+2=2 |
Conv1 | F(1)=[F(2)-1]×2+3=[2-1]×2+3=5 |
即:图1中最顶上的第三层feature map中的一个单位,在原图(最底层/第一层)中拥有5×5的感受野
验证:堆叠三个3×3的卷积核替代7×7的卷积核。
注:在VGG网络中,卷积的stride默认为1×1
假设原图通过三层卷积层之后得到feature map,那么feature map上的一个单位对应原图中的感受野是多大呢?答案:7×7 验证正确
感受野大小 Feature map F(4)=1 Conv3×3 F(3)=(F(4)-1)×1+3=3 Conv3×3 F(2)=(F(3)-1)×1+3=5 Conv3×3 F(1)=(F(2)-1)×1+3=7
验证:堆叠三个3×3的卷积核替代7×7的卷积核的目的是减少所需训练参数
步骤:(假设输入输出特征矩阵channel(深度)为C)
使用7×7卷积核所需参数:7×7×C(输入特征矩阵深度)×C(卷积核个数)=49C²
堆叠三个3×3卷积所需参数:3×3×C×C+3×3×C×C+3×3×C×C=27C²
结果:验证正确
堆叠多个小的卷积核所对应的感受野和采用一个大卷积核所对应的感受野相同,并且使用多个小的卷积核进行堆叠所需要的参数更少。
3.VGGNet16网络结构
VGG16网络结构如图2
图2
使用过程中常常使用的是配置D,16层(13层卷积层,3层全连接层)
与2012年的AlexNet网络相比,VGGNet统一了网络中使用的参数,卷积核尺寸统一为3×3
conv的stride为1,padding为1
maxpool的size为2,stride为2
增加了卷积神经网络模型架构的深度,分别定义了16层的VGG16模型和19层的VGG19模型,与AlexNet的8层结构相比,其深度更深。
VGG16模型参数:
layer_name | input | kernel_size | stride | padding | output |
---|---|---|---|---|---|
Input | 224×224×3 | ||||
Conv3-64 | 224×224×3 | 3×3×64 | 1 | 1 | 224×224×64 |
Conv3-64 | 224×224×64 | 3×3×64 | 1 | 1 | 224×224×64 |
MaxPool | 224×224×64 | 2×2 | 2 | 0 | 112×112×64 |
Conv3-128 | 112×112×64 | 3×3×128 | 1 | 1 | 112×112×128 |
Conv3-128 | 112×112×128 | 3×3×128 | 1 | 1 | 112×112×128 |
MaxPool | 112×112×128 | 2×2 | 2 | 0 | 56×56×128 |
Conv3-256 | 56×56×128 | 3×3×256 | 1 | 1 | 56×56×256 |
Conv3-256 | 56×56×256 | 3×3×256 | 1 | 1 | 56×56×256 |
Conv3-256 | 56×56×256 | 3×3×256 | 1 | 1 | 56×56×256 |
MaxPool | 56×56×256 | 2×2 | 2 | 0 | 28×28×256 |
Conv3-512 | 28×28×256 | 3×3×512 | 1 | 1 | 28×28×512 |
Conv3-512 | 28×28×512 | 3×3×512 | 1 | 1 | 28×28×512 |
Conv3-512 | 28×28×512 | 3×3×512 | 1 | 1 | 28×28×512 |
MaxPool | 28×28×512 | 2×2 | 2 | 0 | 14×14×512 |
Conv3-512 | 14×14×512 | 3×3×512 | 1 | 1 | 14×14×512 |
Conv3-512 | 14×14×512 | 3×3×512 | 1 | 1 | 14×14×512 |
Conv3-512 | 14×14×512 | 3×3×512 | 1 | 1 | 14×14×512 |
MaxPool | 14×14×512 | 2×2 | 2 | 0 | 7×7×512 |
FC-4096 | 7×7×512 | 4096 | |||
FC-4096 | 4096 | 4096 | |||
FC-1000 | 4096 | 1000 | |||
Softmax | 1000 |
代码运行结果
代码参考:
b站博主@霹雳吧啦Wz:https://www.bilibili.com/video/BV1i7411T7ZN/?spm_id_from=333.999.0.0&vd_source=647760d93691c99109dee33aad004b62
github:https://gitcode.net/mirrors/wzmiaomiao/deep-learning-for-image-processing?utm_source=csdn_github_accelerator
代码位置:\deep-learning-for-image-processing-master\pytorch_classification\Test3_vggnet
数据集使用花分类数据集
VGGNet网络train.py训练结果
训练准确率:72.8%
VGGNet预测准确率:100%
4.参考文献
- 《深度学习与神经网络》 赵眸光 编著
出版社:电子工业出版社 2023年1月第一版
ISBN: 978-7-121-44429-6
- 《深度卷积神经网络 原理与实践》周浦城 李从利 王勇 韦哲 编著
出版社:北京:电子工业出版社,2020.10
ISBN: 978-7-121-39663-2
- 《Python神经网络 入门与实践》 王凯 编著
出版社:北京大学出版社
ISBN: 9787301316290
- b站博主@霹雳吧啦Wz:https://www.bilibili.com/video/BV1q7411T7Y6/?spm_id_from=333.788&vd_source=647760d93691c99109dee33aad004b62