背景
相较于AlxNet,使用更小卷积核(层数加深,参数减少)。
来源:VGG模型是2014年ILSVRC竞赛的第二名,第一名是GoogLeNet。但是VGG模型在多个迁移学习任务中的表现要优于googLeNet。而且,从图像中提取CNN特征,VGG模型是首选算法。它的缺点在于,参数量有140M之多,需要更大的存储空间。
先来看看VGG这篇论文《Very Deep Convolutional Networks for
Large-Scale Image Recognition》
论文中几个模型主要以几下几种方案A、B、C、D、E。目前主要还是采用VGG16和VGG19也就是下图中的分别红框和绿框部分。
下面是VGG16:
其中包含13层卷积(卷积核均为3*3,步长为1,填充为1)、5个池化层(kernal_size=2,步长为2)、3个全连接层。其示意图如下:
其中VGG19比VGG16多了三层卷积层,其余相同。
下面是VGG16_bn:
其中包含13层卷积(卷积核均为3*3,步长为1,填充为1)、13层dropout层、5个池化层(kernal_size=2,步长为2)、3个全连接层。下面是网络示意图:
与VGG16不同点在于,在每一层卷积之后添加了dropout层,用于防止过拟合。其中VGG19_bn比VGG16_bn多了三层卷积层,其余相同。
VGG相较于AlxNet的改进点:
- 所有的卷积层使用的都是3*3的卷积核。使用多个较小卷积核的卷积层代替一个卷积核较大的卷积层,一方面可以减少参数,另一方面相当于进行了更多的非线性映射,可以增加网络的拟合 / 表达能力。
- 使用max pooling,但并不是所有的卷积层后面都跟着pooling层,一共只有5个max pooling层。kernel大小是2*2,步长为2,也就是说,和AlexNet不同,VGGNet使用的是不重叠的pooling。
- 没有使用AlexNet中的LRN技术。这是因为后面的实验中证明了使用LRN对性能并没有提升作用,反而增加内存和时间消耗。