vgg理解

Vgg16这个名词对于要做神经网络深度学习的人来说一定不陌生,当我们在看相关的教程或者案例的时候,都会出现Vgg16。那么它到底是什么?

Vgg16是一个卷积神经网络的模型,它是一个被预训练好的模型。

vgg理解_第1张图片

                        Vgg模型(网上配图)

        每次网上都是贴出这个网络模型结构就不了了之,我就来仔细说一下(个人理解,欢迎指出错误)。首先这个网络模型结构要从上往下看,从左往右看。A、A-LRN、B、C、D都是vgg模型。其中较为出名的就是vgg16(D)以及vgg19(E),我就以D举例来说明该图。

       输入input(224*224*3)意思是输入的图片分辨率大小为224*224,通道数为3(RGB三个分量)。卷积层conv3-64。3代表着卷积核大小为3*3,其中的含义为卷积核高度与宽度。64代表着这一层卷积中有64个大小为3*3卷积核,意味着要这层每个通道要计算64次卷积操作,其中每层有3个通道。

如下Keras中vgg16代码片段(第一层conv)

#图像周围补一圈0,防止卷积操作后图片大小发生变化 设定图片输入大小
model.add(ZeroPadding2D((1,1),input_shape=(3,224,224)))  
#设置卷积核个数为64个 每个卷积核大小为3*3 
model.add(Convolution2D(64, 3, 3, activation='relu'))  

VGG16里面参数个数变化片段(输入与第一层conv)

INPUT: [224x224x3]        memory:  224*224*3=150K   weights: 0

CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*3)*64 = 1,728

       其中INPUT: [224x224x3]代表着输入图片的分辨率为224x224以及通道数为3。memory(内存)使用为224*224*3=150K,即为224个像素点*224个像素点*3颜色通道信息=150K,weights(权重)使用为0。CONV3-64: [224x224x64] 代表内存使用为224*224*64=3.2M,weights: (3*3*3)*64 = 1728代表着盖层权值的个数为1728个。现在来解释一下,首先我们会将input 进行卷积操作,input大小为224*224*3,卷积核为3*3,但是图片每一个区域位置有3个通道,对应3个3*3卷积核,且在卷积前进行了补0操作,保证卷积前后大小不变。相同区域3个通道卷积后合并为1个(可以取平均值),故一次卷积(3个通道同时进行一次卷积,遍历整个图片)后数据为224*224*1,又因为有64个卷积核,故第一层卷积层所需内存为224*224*64=3.2M。卷积核大小为3*3,通道数为3,卷积核个数为64,故最终权值个数为3*3*3*64 = 1728。

        注意在vgg中conv中的step为1,maxpool中的step为2。

 

你可能感兴趣的:(神经网络,DNN,CNN)