小嘿嘿之卷积神经网络VGG16(卷积/池化/全连接)

您所在的位置:网站首页 vgg是什么意思 小嘿嘿之卷积神经网络VGG16(卷积/池化/全连接)

小嘿嘿之卷积神经网络VGG16(卷积/池化/全连接)

2023-07-31 16:56| 来源: 网络整理| 查看: 265

https://baijiahao.baidu.com/s?id=1667221544796169037&wfr=spider&for=pc

VGG16 前言知识什么是卷积?什么是padding?什么是池化pooling?什么是全连接? VGG16VGG结构配置VGG16网络卷积计算权重参数实践

前言知识 什么是卷积? 卷积过程是使用一个卷积核(如图中的Filter),在每层像素矩阵上不断按步长扫描下去,每次扫到的数值会和卷积核中对应位置的数进行相乘,然后相加求和,得到的值将会生成一个新的矩阵。卷积核相当于卷积操作中的一个过滤器,用于提取我们图像的特征,特征提取完后会得到一个特征图。卷积核的大小一般选择3x3和5x5,比较常用的是3x3,训练效果会更好。卷积核里面的每个值就是我们需要训练模型过程中的神经元参数(权重),开始会有随机的初始值,当训练网络时,网络会通过后向传播不断更新这些参数值,直到寻找到最佳的参数值。对于如何判断参数值的最佳,则是通过loss损失函数来评估。 在这里插入图片描述 什么是padding?

在进行卷积操作的过程中,处于中间位置的数值容易被进行多次的提取,但是边界数值的特征提取次数相对较少,为了能更好的把边界数值也利用上,所以给原始数据矩阵的四周都补上一层0,这就是padding操作。

什么是池化pooling? 池化操作相当于降维操作,有最大池化和平均池化,其中最大池化(max pooling)最为常用。经过卷积操作后我们提取到的特征信息,相邻区域会有相似特征信息,这是可以相互替代的,如果全部保留这些特征信息会存在信息冗余,增加计算难度。通过池化层会不断地减小数据的空间大小,参数的数量和计算量会有相应的下降,这在一定程度上控制了过拟合。 在这里插入图片描述 什么是全连接?

Flatten将池化后的数据拉开,变成一维向量来表示,方便输入到全连接网络。 对n-1层和n层而言,n-1层的任意一个节点,都和第n层所有节点有连接。即第n层的每个节点在进行计算的时候,激活函数的输入是n-1层所有节点的加权。 在这里插入图片描述

VGG16 VGG结构配置

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网络

在这里插入图片描述 224x224x3的彩色图表示3通道的长和宽都为224的图像数据,也是网络的输入层(彩色图像有RGB三个颜色通道,分别是红、绿、蓝三个通道,这三个通道的像素可以用二维数组来表示,其中像素值由0到255的数字来表示。)

卷积计算

1)输入图像尺寸为224x224x3,经64个通道为3的3x3的卷积核,步长为1,padding=same填充,卷积两次,再经ReLU激活,输出的尺寸大小为224x224x64 2)经max pooling(最大化池化),滤波器为2x2,步长为2,图像尺寸减半,池化后的尺寸变为112x112x64 3)经128个3x3的卷积核,两次卷积,ReLU激活,尺寸变为112x112x128 4)max pooling池化,尺寸变为56x56x128 5)经256个3x3的卷积核,三次卷积,ReLU激活,尺寸变为56x56x256 6)max pooling池化,尺寸变为28x28x256 7)经512个3x3的卷积核,三次卷积,ReLU激活,尺寸变为28x28x512 8)max pooling池化,尺寸变为14x14x512 9)经512个3x3的卷积核,三次卷积,ReLU,尺寸变为14x14x512 10)max pooling池化,尺寸变为7x7x512 11)然后Flatten(),将数据拉平成向量,变成一维51277=25088。 11)再经过两层1x1x4096,一层1x1x1000的全连接层(共三层),经ReLU激活 12)最后通过softmax输出1000个预测结果

权重参数

尽管VGG的结构简单,但是所包含的权重数目却很大,达到了惊人的139,357,544个参数。这些参数包括卷积核权重和全连接层权重。 例如,对于第一层卷积,由于输入图的通道数是3,网络必须学习大小为3x3,通道数为3的的卷积核,这样的卷积核有64个,因此总共有(3x3x3)x64 = 1728个参数 计算全连接层的权重参数数目的方法为:前一层节点数×本层的节点数前一层节点数×本层的节点数。因此,全连接层的参数分别为: 7x7x512x4096 = 1027,645,444 4096x4096 = 16,781,321 4096x1000 = 4096000

实践 1 # -*- coding: utf-8 -*- 2 """ 3 Spyder Editor 4 5 This is a temporary script file. 6 """ 7 import matplotlib.pyplot as plt 8 9 from keras.applications.vgg16 import VGG16 10 from keras.preprocessing import image 11 from keras.applications.vgg16 import preprocess_input, decode_predictions 12 import numpy as np 13 14 def percent(value): 15 return '%.2f%%' % (value * 100) 16 17 # include_top=True,表示會載入完整的 VGG16 模型,包括加在最後3層的卷積層 18 # include_top=False,表示會載入 VGG16 的模型,不包括加在最後3層的卷積層,通常是取得 Features 19 # 若下載失敗,請先刪除 c:\\.keras\models\vgg16_weights_tf_dim_ordering_tf_kernels.h5 20 model = VGG16(weights='imagenet', include_top=True) 21 22 23 # Input:要辨識的影像 24 img_path = 'frog.jpg' 25 26 #img_path = 'tiger.jpg' 并转化为224*224的标准尺寸 27 img = image.load_img(img_path, target_size=(224, 224)) 28 29 30 x = image.img_to_array(img) #转化为浮点型 31 x = np.expand_dims(x, axis=0)#转化为张量size为(1, 224, 224, 3) 32 x = preprocess_input(x) 33 34 # 預測,取得features,維度為 (1,1000) 35 features = model.predict(x) 36 37 # 取得前五個最可能的類別及機率 38 pred=decode_predictions(features, top=5)[0] 39 40 41 #整理预测结果,value 42 values = [] 43 bar_label = [] 44 for element in pred: 45 values.append(element[2]) 46 bar_label.append(element[1]) 47 48 #绘图并保存 49 fig=plt.figure(u"Top-5 预测结果") 50 ax = fig.add_subplot(111) 51 ax.bar(range(len(values)), values, tick_label=bar_label, width=0.5, fc='g') 52 ax.set_ylabel(u'probability') 53 ax.set_title(u'Top-5') 54 for a,b in zip(range(len(values)), values): 55 ax.text(a, b+0.0005, percent(b), ha='center', va = 'bottom', fontsize=7) 56 57 fig = plt.gcf() 58 plt.show() 59 60 name=img_path[0:-4]+'_pred' 61 fig.savefig(name, dpi=200)

结果:

在这里插入图片描述 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3