Very Deep Convolutional Networks for Large Scale Image Recognition
VGG是由Simonyan 和Zisserman在文献《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷积神经网络模型,其名称来源于作者所在的牛津大学视觉几何组(Visual Geometry Group)的缩写。
该模型参加2014年的 ImageNet图像分类与定位挑战赛,取得了优异成绩:在分类任务上排名第二,在定位任务上排名第一。在其他数据集上也取得了SOTA的结果。
Introduction
自从ConvNets成为计算机视觉领域的焦点之后,许多工作都在尝试对最初Krizhevsky(2012)提出的网络进行修改以取得更好的效果,比如:
- 用更小的卷积核和更小的步长(Zeiler & Fergus, 2013; Sermanet et al., 2014)
- 在整个图像和多个尺度上对网络进行密集地训练和测试(Sermanet et al.,
2014; Howard, 2014)
在本文中,我们主要关注网络的深度,通过所有层中使用非常小的(3×3)卷积滤波器,添加更多的卷积层来稳定地增加网络的深度。结果显示可以在ILSVRC分类和定位任务上取得的最佳的准确性,而且还适用于其它的图像识别数据集。
ConvNet Configurations
2.1 Architecture
基本配置:
- 输入图像224*224 RGB, 减去RGB均值
- 卷积核 3*3, 卷积步长 1,填充方式padding=same,每一个卷积层(张量)与前一层(张量)保持相同的宽和高
- 池化层,2*2,步长2,max池化,每一个池化层(张量)的宽和高是前一层(张量)的1/2
- 模型由若干卷积层核池化层堆叠而成,其后连接三层全连接层:4096+4096+1000+softmax
- 所有隐层的激活函数为ReLU
2.2 Configureations
VGG中根据卷积核大小和卷积层数目的不同,可分为A,A-LRN,B,C,D,E共6个配置(ConvNet Configuration),其中以D,E两种配置较为常用,分别称为VGG16和VGG19。
VGG16:
- 13个卷积层(Convolutional Layer),分别用conv3-XXX表示
- 3个全连接层(Fully connected Layer),分别用FC-XXXX表示
- 5个池化层(Pool layer),分别用maxpool表示
其中,卷积层和全连接层具有权重系数,因此也被称为权重层,总数目为13+3=16,这即是VGG16中16的来源。
VGG16的具体结构示意图如下:
2.3 Discussion
- 用多层小卷积核替代单层大卷积核,增加了非线性特性,同时显著降低参数量
- 1*1卷积核,增加非线性特性而不影响卷积层感受野(根据卷积核的个数也可以起到降维的作用)
尽管VGG的结构简单,但是所包含的权重数目却很大,达到了惊人的138 357 544 个参数。这些参数包括卷积核权重和全连接层权重。
VGG16具有如此之大的参数数目,可以预期它具有很高的拟合能力;但同时缺点也很明显:
- 即训练时间过长,调参难度大。
- 需要的存储容量大,不利于部署。例如存储VGG16权重值文件的大小为500多MB,不利于安装到嵌入式系统中。
Keras中的VGG16
1 | from keras.applications.vgg16 import VGG16 |
keras中已有的模型还包括