首页 > 其他分享 >卷积神经网络VGG

卷积神经网络VGG

时间:2023-06-14 19:34:11浏览次数:57  
标签:输出 卷积 VGG 步长 padding 神经网络 输入


1. 概述

VGG[1]是Oxford的Visual Geometry Group的组提出的,VGG的缩写也来自于这个组的名字。VGG网络探索了提升网络的深度对最终的图像识别准确率的重要性,同时在VGG中尝试使用小的卷积核来构建深层的卷积网络。VGG在当年的ILSVRC 2014上取得了第一的成绩,证明了增加网络的深度能够在一定程度上提高网络的性能。

2. 算法的基本思想

2.1. VGG的原理

在VGG网络中,有两种结构,分别是VGG16和VGG19,两者只是网络深度不一样。以VGG16为例,在VGG16中,相比于AlexNet,其最大的改进是采用几个卷积神经网络VGG_cnn的卷积核代替了AlexNet中的较大的卷积核,主要是卷积神经网络VGG_神经网络_02卷积神经网络VGG_神经网络_03。相比于大的卷积核,采用多个较小卷积核的堆叠,一方面能通过多层的非线性特性增强模型的学习能力(卷积+ReLU为一个组合),同时能进一步减少模型的参数。

卷积神经网络VGG_神经网络_03的卷积核为例,可通过堆叠两个卷积神经网络VGG_深度学习_05的卷积核实现卷积神经网络VGG_神经网络_06的卷积效果,具体过程如下图所示:

卷积神经网络VGG_卷积_07

卷积神经网络VGG_神经网络_06卷积核的参数个数为卷积神经网络VGG_卷积_09个,与卷积神经网络VGG_神经网络_06的卷积核相比,堆叠两个卷积神经网络VGG_深度学习_05的参数个数为卷积神经网络VGG_cnn_12,在实现了同样的功能的情况下能够减少参数的个数。

2.2. VGG的网络结构

VGG网络的结构的具体参数如下图所示:

卷积神经网络VGG_卷积_13

由上图可以看出,VGG16和VGG19只是在层数上不一样,VGG16中包含了16个隐藏层,包括13个卷积层和3个全连接层,如上图中的D列所示,VGG19中包含了19个隐藏层,包括16个卷积层和3个全连接层,如上图中的E列所示。

以VGG16为例,参照[2]的参数格式,可以绘制出如下的网络结构:

卷积神经网络VGG_卷积_14

从上述的网络结构中可以看出,在VGG网络中只包含了卷积+ReLU,pooling,全连接,dropout操作模块,摒弃了在AlexNet中使用的LRN归一化模块,并在实验中验证LRN对于最终效果的影响较小。VGG的整个网络结构相对比较简单,但就是这样简单的网络结构却能提升整体的识别效果,这得益于较深的网络结构。在上述的结构中:

  • data:大小为卷积神经网络VGG_深度学习_15
  • 第一组卷积(包括conv1_1,relu1_1,conv1_2,relu1_2,pool1)
  • conv1_1:输入(卷积神经网络VGG_深度学习_16),输出:(卷积神经网络VGG_卷积_17,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_cnn_21
  • relu1_1:输入(卷积神经网络VGG_卷积_17),输出(卷积神经网络VGG_卷积_17
  • conv1_2:输入(卷积神经网络VGG_卷积_17),输出:(卷积神经网络VGG_卷积_17,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_cnn_21
  • relu1_2:输入(卷积神经网络VGG_卷积_17),输出(卷积神经网络VGG_卷积_17
  • pool1:输入(卷积神经网络VGG_卷积_17),输出(卷积神经网络VGG_深度学习_33,其中,核的大小为卷积神经网络VGG_cnn_34,步长S为卷积神经网络VGG_cnn_35
  • 第二组卷积(包括conv2_1,relu2_1,conv2_2,relu2_2,pool2)
  • conv2_1:输入(卷积神经网络VGG_深度学习_33),输出:(卷积神经网络VGG_神经网络_37,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_cnn_41
  • relu2_1:输入(卷积神经网络VGG_神经网络_37),输出(卷积神经网络VGG_神经网络_37
  • conv2_2:输入(卷积神经网络VGG_神经网络_37),输出:(卷积神经网络VGG_神经网络_37,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_cnn_41
  • relu2_2:输入(卷积神经网络VGG_神经网络_37),输出(卷积神经网络VGG_神经网络_37
  • pool2:输入(卷积神经网络VGG_神经网络_37),输出(卷积神经网络VGG_神经网络_53,其中,核的大小为卷积神经网络VGG_cnn_34,步长S为卷积神经网络VGG_cnn_35
  • 第三组卷积(包括conv3_1,relu3_1,conv3_2,relu3_2,conv3_3,relu3_3,pool3)
  • conv3_1:输入(卷积神经网络VGG_神经网络_53),输出:(卷积神经网络VGG_深度学习_57,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_神经网络_61
  • relu3_1:输入(卷积神经网络VGG_深度学习_57),输出(卷积神经网络VGG_深度学习_57
  • conv3_2:输入(卷积神经网络VGG_深度学习_57),输出:(卷积神经网络VGG_深度学习_57,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_神经网络_61
  • relu3_2:输入(卷积神经网络VGG_深度学习_57),输出(卷积神经网络VGG_深度学习_57
  • conv3_3:输入(卷积神经网络VGG_深度学习_57),输出:(卷积神经网络VGG_深度学习_57,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_神经网络_61
  • relu3_3:输入(卷积神经网络VGG_深度学习_57),输出(卷积神经网络VGG_深度学习_57
  • pool3:输入(卷积神经网络VGG_深度学习_57),输出(卷积神经网络VGG_cnn_81,其中,核的大小为卷积神经网络VGG_cnn_34,步长S为卷积神经网络VGG_cnn_35
  • 第四组卷积(包括conv4_1,relu4_1,conv4_2,relu4_2,conv4_3,relu4_3,pool4)
  • conv4_1:输入(卷积神经网络VGG_cnn_81),输出:(卷积神经网络VGG_卷积核_85,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_cnn_89
  • relu4_1:输入(卷积神经网络VGG_卷积核_85),输出(卷积神经网络VGG_卷积核_85
  • conv4_2:输入(卷积神经网络VGG_卷积核_85),输出:(卷积神经网络VGG_卷积核_85,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_cnn_89
  • relu4_2:输入(卷积神经网络VGG_卷积核_85),输出(卷积神经网络VGG_卷积核_85
  • conv4_3:输入(卷积神经网络VGG_卷积核_85),输出:(卷积神经网络VGG_卷积核_85,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_cnn_89
  • relu4_3:输入(卷积神经网络VGG_卷积核_85),输出(卷积神经网络VGG_卷积核_85
  • pool4:输入(卷积神经网络VGG_卷积核_85),输出(卷积神经网络VGG_神经网络_109,其中,核的大小为卷积神经网络VGG_cnn_34,步长S为卷积神经网络VGG_cnn_35
  • 第五组卷积(包括conv5_1,relu5_1,conv5_2,relu5_2,conv5_3,relu5_3,pool3)
  • conv5_1:输入(卷积神经网络VGG_神经网络_109),输出:(卷积神经网络VGG_神经网络_109,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_cnn_89
  • relu5_1:输入(卷积神经网络VGG_神经网络_109),输出(卷积神经网络VGG_神经网络_109
  • conv5_2:输入(卷积神经网络VGG_神经网络_109),输出:(卷积神经网络VGG_神经网络_109,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_cnn_89
  • relu5_2:输入(卷积神经网络VGG_神经网络_109),输出(卷积神经网络VGG_神经网络_109
  • conv5_3:输入(卷积神经网络VGG_神经网络_109),输出:(卷积神经网络VGG_神经网络_109,其中,卷积核大小为卷积神经网络VGG_卷积核_18,padding为卷积神经网络VGG_cnn_19,步长S为卷积神经网络VGG_cnn_19,卷积核的个数为卷积神经网络VGG_cnn_89
  • relu5_3:输入(卷积神经网络VGG_神经网络_109),输出(卷积神经网络VGG_神经网络_109
  • pool5:输入(卷积神经网络VGG_神经网络_109),输出(卷积神经网络VGG_卷积_137,其中,核的大小为卷积神经网络VGG_cnn_34,步长S为卷积神经网络VGG_cnn_35
  • 第一组全连接(包括fc6,relu6,drop6)
  • fc6:输入(卷积神经网络VGG_卷积_137,通过flatting,得到卷积神经网络VGG_卷积_141),输出(卷积神经网络VGG_卷积核_142
  • relu6:输入(卷积神经网络VGG_卷积核_142),输出(卷积神经网络VGG_卷积核_142
  • drop6:输入(卷积神经网络VGG_卷积核_142),输出(卷积神经网络VGG_卷积核_142
  • 第二组全连接(包括fc7,relu7,drop7)
  • fc7:输入(卷积神经网络VGG_卷积核_142),输出(卷积神经网络VGG_卷积核_142
  • relu7:输入(卷积神经网络VGG_卷积核_142),输出(卷积神经网络VGG_卷积核_142
  • drop7:输入(卷积神经网络VGG_卷积核_142),输出(卷积神经网络VGG_卷积核_142
  • 第三组全连接(包括fc8):输入(卷积神经网络VGG_神经网络_153),输出(卷积神经网络VGG_卷积_154

3. 总结

VGG网络结构相对比较简洁,整个网络结构中只用到了卷积神经网络VGG_深度学习_05的卷积核和卷积神经网络VGG_卷积_156的最大池化,通过堆叠小的卷积核实现较大卷积的操作,通过这样的方式加深了网络的结构,但是在网络中还是出现计算量较大的情况,主要是出现在最后的几组全连接层,其中第一个全连接fc6的参数为卷积神经网络VGG_神经网络_157

参考文献

[1] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.

[2] https://dgschwend.github.io/netscope/#/preset/vgg-16

[3] 一文读懂VGG网络

[4] VGG in TensorFlow


标签:输出,卷积,VGG,步长,padding,神经网络,输入
From: https://blog.51cto.com/u_16161414/6480214

相关文章

  • 卷积神经网络(LeNet)
    目录1.卷积神经网络(LeNet)1.1LeNet1.卷积神经网络(LeNet)\(LeNet\)最早的卷积神经网络之一(\(1989\)年提出)。用于银行支票上手写数字识别(\(1998\)年杨立坤教授提出)。1.1LeNet\(LeNet\)\((LeNet-5)\)由两部分组成:卷积编码器:由\(2\)个卷积层。全连接层密集块:由\(......
  • 深度可分离卷积
    深度可分离卷积(DepthwiseSeparableConvolution)是一种在卷积神经网络中常用的卷积操作,它可以有效地减少计算量和模型参数的数量,从而提高模型的效率和速度。传统的卷积操作是在输入特征图的每个通道上进行的,使用一组卷积核对每个通道进行卷积计算。而深度可分离卷积将卷积操作分......
  • [重读经典论文] ConvNeXt——卷积网络又行了
    参考博客:ConvNeXt网络详解参考视频:13.1ConvNeXt网络讲解ConvNeXt其实就是面向SwinTransformer的架构进行炼丹,最后获得一个比SwinTransformer还要牛逼的网络。 ......
  • 神经网络反向传播算法(BP)
    前面讲了神经网络的前向传播算法,下面再对反向传播算法进行总结。反向传播算法也称为误差逆传播(errorBackPropagation),是指基于梯度下降对神经网络的损失函数进行迭代优化求极小值的过程,它不仅可应用于前馈神经网络,还可以用于其他类型的神经网络。需要注意的是,大家提及到的“BP网......
  • 深度学习应用篇-计算机视觉-视频分类[8]:时间偏移模块(TSM)、TimeSformer无卷积视频分类
    深度学习应用篇-计算机视觉-视频分类[8]:时间偏移模块(TSM)、TimeSformer无卷积视频分类方法、注意力机制1.时间偏移模块(TSM)视频流的爆炸性增长为以高精度和低成本执行视频理解任务带来了挑战。传统的2DCNN计算成本低,但无法捕捉视频特有的时间信息;3DCNN可以得到良好的性能,但计算量......
  • 深度学习应用篇-计算机视觉-视频分类[8]:时间偏移模块(TSM)、TimeSformer无卷积视频分类
    深度学习应用篇-计算机视觉-视频分类[8]:时间偏移模块(TSM)、TimeSformer无卷积视频分类方法、注意力机制1.时间偏移模块(TSM)视频流的爆炸性增长为以高精度和低成本执行视频理解任务带来了挑战。传统的2DCNN计算成本低,但无法捕捉视频特有的时间信息;3DCNN可以得到良好的性能,但计算......
  • 徒手体验卷积运算的全过程
    前言最近的失业潮引起很多打工人的恐慌,特别是ChatGPT之类的生成式AI的推出,其智能程度和自主学习能力远程人们想象.加剧了大家的恐慌情绪,在裁员潮这个当口,纷纷引发各行各业的猜测--人工智能替代大部分岗位,而且有些行业甚至已经使用上了ChatGPT类的生成式AI进行替代人类的部分工......
  • Matlab用深度学习循环神经网络RNN长短期记忆LSTM进行波形时间序列数据预测|附代码数据
    全文链接:http://tecdat.cn/?p=27279最近我们被客户要求撰写关于深度学习循环神经网络RNN的研究报告,包括一些图形和统计输出。此示例说明如何使用长短期记忆(LSTM)网络预测时间序列LSTM神经网络架构和原理及其在Python中的预测应用LSTM网络是一种循环神经网络(RNN),它通过循......
  • 手撕卷积神经网络历险记 三、padding操作图解
     在国内访问 Docker 官方的镜像,一直以来速度都慢如蜗牛。为了快速访问Docker官方镜像都会配置三方加速器,目前常用三方加速器有:网易、USTC、DaoCloud、阿里云。现在Docker官方针对中国区推出了镜像加速服务。通过Docker官方镜像加速,国内用户能够以更快的下载速度和......
  • 卷积神经网络-全面图解-带你了解前向后向传播的所有细节(文末代码)
    卷积神经网络-全面图解-带你了解前向后向传播的所有细节综述本文将会从基础的前馈神经网络入手,通过bp神经网络,引出卷积神经网络,并把专门的重点放在如何理解和实现卷积神经网络的卷积层、下采样层、全连接层、以及最终的softmax的反向传播的理解。最后实现基于python的车标识别6分类......