VGG卷积神经网络是由牛津大学在2014年提出来的模型,当这个模型被提出来时, 由于它的简洁性和实用性,马上成为了当时最流行的卷进神经网络模型。它在图像分类和目标检测任务中都表现出非常好的效果。
它主要的贡献是展示出网络的深度是算法优良性的关键部分。VGG16的网络结构非常一致,从头到尾全部使用的使用的是3x3的卷积核2x2的pooling.
VGG不好的一点是它耗费更多的计算资源, 并且使用了更多的参数,导致更多的内存占用。其中绝大多数的参数都是来自于第一个全连接层。
目前使用比较多的网络结构主要有ResNet(151-1000层), GoogleNet(22层), VGG19层。大多数模型都是基于这几个模型上
改进, 采用新的优化算法, 多模型融合等。

重点介绍VGG
VGG是从alexnet发展而来的网络, 主要修改一下两个方面:
1,在第一个卷基层层使用更小的filter尺寸和间隔(33); 2,在整个图片和multi-scale上训练和测试图片。
3
3 filter:
引入cs231n上面一段话:
几个小滤波器卷积层的组合比一个大滤波器卷积层好:
假设你一层一层地重叠了3个3x3的卷积层(层与层之间有非线性激活函数)。在这个排列下,第一个卷积层中的每个神经元都对输入数据体有一个3x3的视野。
第二个卷积层上的神经元对第一个卷积层有一个3x3的视野,也就是对输入数据体有5x5的视野。同样,在第三个卷积层上的神经元对第二个卷积层有3x3的视野,
也就是对输入数据体有7x7的视野。假设不采用这3个3x3的卷积层,二是使用一个单独的有7x7的感受野的卷积层,那么所有神经元的感受野也是7x7,但是就有一些缺点。
首先,多个卷积层与非线性的激活层交替的结构,比单一卷积层的结构更能提取出深层的更好的特征。其次,假设所有的数据有C个通道,那么单独的7x7卷积层将会包含
77C=49C2个参数,而3个3x3的卷积层的组合仅有个3*(33C)=27C2个参数。直观说来,最好选择带有小滤波器的卷积层组合,而不是用一个带有大的滤波器的卷积层。前者可以表达出输入数据中更多个强力特征,
使用的参数也更少。唯一的不足是,在进行反向传播时,中间的卷积层可能会导致占用更多的内存。
11 filter: 作用是在不影响输入输出维数的情况下,对输入线进行线性形变,然后通过Relu进行非线性处理,增加网络的非线性表达能力。 Pooling:22,间隔s=2
VGG结构图

VGG-16
VGG模型有一些变种, 其中最受欢迎的当然是VGG-16, 这是一个拥有16层的模型。

卷积核参数共享:也就是说一个卷积核对图像进行卷积时,里边的参数是不变的。直观点理解,就是尺度不变性,这就使得网络的容忍能力加强。就好比一个杯子它横放和竖放人都能够将它辨别出来一样。

low/high-level feature map:即低阶/高阶特征。这是随着卷积网络的加深对不同深度的feature map的取名。低阶特征可以理解为颜色、边缘等特征,就好比是一个图片中车的轮廓。 高阶特征可以理解为是更加抽象的特征,相当于更加细化的,比如说车中车轮,以及车轮中的车胎等。而通过卷积网络深度的增加,提取到的最后的高阶特征就是组成元素的基本组成单位:比如点、线、弧等。而最后的全连接层的目的其实就是进行这些高阶特征的特征组合。

ReLu和BN:即为激活函数层和归一化层。激活函数层的目的就是为了非线性化,得到结果的非线性表达。而归一化BN层,它能够防止梯度爆炸和梯度弥散,而且对网络的收敛也有好处。Conv+BN+relu基本上都会一起使用。

小结
VGGNet的好处真是太多了

  1. 图片具有天然的空间结构信息,而卷积操作恰恰就是很好的利用了这种空间结构信息。而且每个block中通过多个Conv的操作,即减少了参数量还保留了同样的感受野。
  2. 通过网络结构的加深,网络能够提取更加抽象的高阶特征,这也就是为什么最后提取了512通道的feature map。
  3. 说明了随着网络的加深对精度的提升有很大的帮助
  4. 缺点:它的参数量太大,耗费了很多的计算资源,这主要是因为最后的三个全连接层。而后也提出了Inception v1、v2、v3版本以及FCN等网络,都很好的解决了这些问题,有兴趣的可以自己查阅一下。

虽然VGG比Alex-net有更多的参数,更深的层次;但是VGG只需要很少的迭代次数就开始收敛,原因:
1:深度和小的滤波器尺寸起到了隐士规则化作用。
2:一些层的pre-initialisation
pre-initialisation:网络A的权值W~(0,0.01)的高斯分布,bias为0;由于存在大量的ReLU函数,不好的权值初始值对于网络训练影响较大。
为了绕开这个问题,作者现在通过随机的方式训练最浅的网络A;然后在训练其他网络时,把A的前4个卷基层(感觉是每个阶段的以第一卷积层)
和最后全连接层的权值当做其他网络的初始值,未赋值的中间层通过随机初始化。

更多推荐

VGG16和VGG19的理解