我是靠谱客的博主 粗犷期待,最近开发中收集的这篇文章主要介绍VGG 网络详解1.网络概述2.网络特点3.网络结构3.使用tensflow构建VGG19  ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.网络概述

在网络深度与网络性能的关系上,牛津大学视觉几何团队提出了一种深层次且性能良好的网络模型,即VGG网络模型。VGG很好地继承了AlexNet的衣钵,同时拥有着鲜明的特点,即网络层次较深。
牛津大学视觉几何团队在ILSVRC 2014上提出了VGGNet。VGGNet的网络结构简单、规整且高效。VGGNet较为典型的网络结构主要有VGG16和VGG19,本节主要介绍VGG16,其网络结构如表5-1所示。
VGGNet对输入图像的默认大小是224×224×3。从表5-1中可以看出,VGG16指该网络结构含有参数的网络层一共16层,即13个卷积层和3个全连接层,不包括池化层和softmax激活函数层。VGG16的卷积核大小是固定的3×3,不同卷积层的卷积核个数不同。最大池化层的池化窗口大小为2×2,步长为2。最后是3个全连接层,神经元个数分别为4096个、4096个和1000个。其中,第3层全连接层有1000个神经元,负责分类输出,最后一层为soft-max输出层。
 

2.网络特点

1.引入卷积组的概念:卷积核池化

2.层组化规律很强,层次提高

3.网络结构

VGG 网络结构
ConvNet Configuration
 AA-LRNBCDE

11 weights

layers

11 weights

layers

13 weights

layers

16 weights

layers

16weights

layers

19weights

layers

Input(224*224 RGB image)
Conv3-64

Conv3-64

LRN

Conv3-64

Conv3-64

Conv3-64

Conv3-64

Conv3-64

Conv3-64

Conv3-64

Conv3-64

maxpool
Conv3-128

Conv3-128

Conv3-128

Conv3-128

Conv3-128

Conv3-128

Conv3-128

Conv3-128

Conv3-128

Conv3-128

Conv3-128

maxpool

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

Conv3-256

maxpool

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

maxpool

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

Conv3-512

maxpool
FC-4096
FC-4096
FC-1000
softmax

VGGNet有两种结构,分别为16层(见表5-1)和19层。从图5-5中可以看出,在VGGNet结构中,所有卷积层的卷积核尺寸都只有(3,3)。VGGNet中连续使用3组(3,3)卷积核(滑动步长为1)是因为它和使用1个(7,7)卷积核产生的效果相同(图5-6以一维卷积为例,解释效果相同的原理)。然而更深的网络结构可以学习到更复杂的非线性关系,从而使模型的训练效果更好。该操作带来的另一个好处是减少参数数量,因为对于一个有C个卷积核的卷积层来说,原来的参数个数为7×7×C,而新的参数个数为3×(3×3×C)。

3.使用tensflow构建VGG19

from tensorflow import keras
import tensorflow as tf
class Vgg_block(keras.layers.Layer):
def __init__(self,units,filters,**kwargs):
super().__init__(**kwargs)
self.main_layer = []
for i in range(units):
self.main_layer.append(keras.layers.Conv2D(filters=filters,kernel_size=(3,2),
padding="same",strides=(1,1),
activation="relu"))
self.main_layer.append(keras.layers.MaxPool2D(pool_size=(2,2)))
def call(self,inputs):
Z = inputs
for layer in self.main_layer:
Z = layer(Z)
return Z
model = keras.models.Sequential()
model.add(keras.layers.Input(shape=(224,224,3)))
model.add(Vgg_block(2,64))
model.add(Vgg_block(2,128))
model.add(Vgg_block(4,256))
model.add(Vgg_block(4,512))
model.add(Vgg_block(4,512))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(4096,activation="relu"))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Dense(4096,activation="relu"))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Dense(1000,activation="softmax"))


 

最后

以上就是粗犷期待为你收集整理的VGG 网络详解1.网络概述2.网络特点3.网络结构3.使用tensflow构建VGG19  的全部内容,希望文章能够帮你解决VGG 网络详解1.网络概述2.网络特点3.网络结构3.使用tensflow构建VGG19  所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部