版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/details/79084205
本节主要对VGG网络结构做一个详细的解读,并针对它所在Alexnet上做出的改动做详解的分析。 首先,附上一张VGG的网络结构图:
由上图所知,VGG一共有五段卷积,每段卷积之后紧接着最大池化层,作者一共实验了6种网络结构。分别是VGG-11,VGG-13,VGG-16,VGG-19,网络的输入是224*224大小的图像,输出是图像分类结果(本文只针对网络在图像分类任务上,图像定位任务上暂不做分析) 接下来开始对VGG做详细的分析,首先VGG是基于Alexnet网络的,VGG在Alexnet基础上对深度神经网络在深度和宽度上做了更多深入的研究,业界普遍认为,更深的网络具有比浅网络更强的表达能力,更能刻画现实,完成更复杂的任务。 首先,VGG与Alexnet相比,具有如下改进几点:
这样做改进都是有一些原因的,首先为了更好的探究深度对网络的影响,必须要解决参数量的问题,更深的网络意味着更多的参数,训练更困难,使用大卷积核时尤其明显。作者通过分析,认为由于卷积神经网络的特性,3x3大小的卷积核足以捕捉到横、竖以及斜对角像素的变化。使用大卷积核会带来参数量的爆炸不说,而且图像中会存在一些部分被多次卷积,可能会给特征提取带来困难,所以在VGG中,普遍使用3x3的卷积。 另外在VGG网络的最后几层使用了三层全连接层,最终接一个softmax,事实上,这三层全连接层的参数在VGG的整体参数中占据了很大一部分,不过就目前来讲,为了减少参数量,后几层的全连接网络都被全剧平均池化(globalglobal averageaverage poolingpooling)和卷积操作代替了,但是全局平均池化也有很大的优点,下文会详细介绍。
众所周知,VGG是一个良好的特征提取器,其与训练好的模型也经常被用来做其他事情,比如计算perceptual loss(风格迁移和超分辨率任务中),尽管现在resnet和inception网络等等具有很高的精度和更加简便的网络结构,但是在特征提取上,VGG一直是一个很好的网络,所以说,当你的某些任务上resnet或者inception等表现并不好时,不妨试一下VGG,或许会有意想不到的结果。
VGG之所以是一个很好的特征提取器,除了和它的网络结构有关,我认为还和它的训练方式有关系,VGG并不是直接训练完成的,它使用了逐层训练的方法。
分析到这里可以得出结论,VGG对于Alexnet来说,改进并不是很大,主要改进就在于使用了小卷积核,网络是分段卷积网络,通过maxpooling过度,同时网络更深更宽。