首页 > 其他分享 >VGG模型

VGG模型

时间:2024-07-28 22:25:58浏览次数:13  
标签:池化层 16 卷积 模型 VGG 网络 block

一、VGG网络概述

VGG(Visual Geometry Group)网络是由牛津大学的视觉几何组提出的一种深度卷积神经网络架构。它在2014年的ImageNet图像分类竞赛中取得了亚军的成绩,证明了通过增加网络深度可以显著提高图像识别的性能。VGG网络以其简洁和一致性的设计哲学,成为理解卷积神经网络(CNN)结构的基础之一。

二、VGG网络特点

1.深度结构:
VGG网络采用了非常深的网络结构,最典型的是VGG-16和VGG-19,分别包含16层和19层的卷积层(不包括全连接层),这种深度结构有助于网络学习到更复杂的图像特征,提高识别准确率。
2.小卷积核:
VGG网络主要使用3x3的卷积核,通过堆叠多个小卷积核来达到与大卷积核相同的感受野,同时增加了非线性激活函数的数量。这种设计减少了参数数量,提高了训练速度,并且增强了网络的非线性拟合能力。
3.池化层:
VGG网络使用2x2的最大池化层来减小特征图的空间分辨率,降低计算复杂性。池化层有助于网络对图像中的微小变化(如平移、旋转等)保持鲁棒性。
4.全连接层:
在卷积和池化层之后,VGG网络包含几层全连接层,用于将高层次的特征映射到最终的类别概率分布上。全连接层通常包含大量的参数,这些参数在训练过程中通过反向传播算法进行更新。

三、 VGG网络结构

VGG-16与VGG-19
每一个模型分为五个block,所有的卷积层使用3×3大小的卷积核,随着模型的变深,每一个模型的channel(或者说卷积核)的个数都翻倍

1.输入层

接收224x224的三通道(RGB )彩色图像,图像在输入层进行预处理

2.卷积层

VGG-16包含13个卷积层,这些卷积层被组织成5个卷积块。
第一个block有两个卷积层,每一个卷积层都是64个3×3卷积
第二个block有两个卷积层,每一个卷积层都是128个3×3卷积
第三个block有三个卷积层,每一个卷积层都是256个3×3卷积
第四个block与第五个block有三个卷积层,每一个卷积层都是512个卷积核
VGG-19(图上的E):与VGG-16不同的是block3、block4与block5有四个卷积层

每个卷积块包含多个3x3卷积层和ReLU激活函数,卷积层之间可能包含最大池化层。
卷积层的输出特征图数量逐渐增加,从64个增加到512个。

2.1 降采样:池化层

池化层的作用是减小图像的空间尺寸,即图像的宽度和高度。这通常通过取一个小区域的最大值来实现,这样即使图像内容发生微小的移动,网络的输出也不会有太大变化,从而增强了网络的泛化能力。

2.2 非线性激活:ReLU

在每个卷积操作后,VGG网络使用一种称为ReLU的非线性激活函数。ReLU的作用就像是个开关,它只允许大于0的数值通过,而将小于或等于0的数值关闭。这有助于网络捕捉到更丰富的特征,并且简化了计算。VGG网络使用其作为激活函数,有助于缓解梯度消失的问题。

3.全连接层

包含三个全连接层,分别为FC-4096、FC-4096和FC-1000(或对应类别的数量)。
这些全连接层负责将卷积层提取的特征映射到最终的类别概率分布上,在全连接层之间,通常包含ReLU激活函数和Dropout层,用于防止过拟合。

4.输出层

使用Softmax函数将全连接层的输出转换成概率分布,以便进行多分类任务。这样每个类别都有一个介于0到1之间的数值,所有类别的概率之和为1,我们就可以简单地选择概率最高的类别作为网络的预测结果。
红色表示最大池化下采样层,白色表示卷积层红色表示max pooling,最大池化下采样层,下采样层并不包含参数,所以并不包含在16或者19中
白色表示卷积层
像素层面的长宽越来越小,语义层面的通道数越来越深(长宽越来越小,通道数越来越多)
VGG-16和VGG-19本质上并没有什么区别,只是VGG-19比VGG-16在后面三个block中各多了一个卷积层

VGG-16
VGG-16是最常用的迁移学习的骨干模型,输入的是224×224×3的RGB彩色图像。
第一个block输出的feature map(特征图)是224×224×64,有64个卷积核,每一个卷积核生成一个channel,每一个channel是224×224
下采样后长宽减半,然后继续用128个卷积核进行卷积,得到128个channel(通道)
以此类推,第五个block输出的feature map是7×7×512,经过下采样将它展平成为一个长向量,再经过3个全连接层(第一二层有4096个神经元,第三层有1000个神经元)
经过最后一个全连接层输出1000个类别的logic分数,这1000个分数经过softmax处理,得到1000个类别的后验概率
整个过程长宽信息逐渐减小,通道信息逐渐增加(将像素空间的信息转化成语义信息)
所有卷积层输出的feature map的尺寸
该图为所有卷积层输出的feature map的尺寸,每次进入下一个block通道数都翻倍。

四 、为什么VGG全部使用3×3的卷积?

该图定义的特征为下边亮上边暗的边缘
带权重的卷积核在原图上进行滑动,它所覆盖到的区域叫做感受野
原图感受野上的像素和对应的卷积核上对应的权重相乘并求和,最终得到feature map
把卷积核定义的特征(右边亮左边暗的竖直边缘)从原图中提取出来显示在feature map上

(1)5×5的输入通过一个3×3的卷积核(步长为1)得到一个3×3的feature map,再通过一个3×3的卷积核(不用进行滑动)进行卷积,最后得到一个值,这个值反映的是原来的5×5的输入的信息,即2个3×3的卷积可以代替1个5×5的卷积
(2)这样做的好处:经过两层之后模型深度变深了,非线性次数变多了,学习能力会变得更好,表示空间会变得更大而且参数的数量减少了
3个3*3卷积核进行堆叠可以等价于1个7*7的卷积核
3×3本身也有一个好处:他是最小的能够包含左右、上下和中心点的最基本的单元

五、VGG网络的不足

上图中横轴代表计算量(一次正向推断/前向传播运算的计算量),纵轴表示Top1准确率,圆圈的大小表示模型的参数数量
(1)它的准确率并不是最优秀的(经典神经网络结构,深度并不是很深),准确率处于中游水平
上图中横轴代表计算量(一次正向推断/前向传播运算的计算量),左图纵轴表示Top1准确率,右图纵轴表示Top1准确率,圆圈的大小表示模型的参数数量
上图中a图表示单位参数能为准确率做出多少贡献,由此可看出VGG效率非常差,b图是a图的散点图
(2)计算资源消耗大:由于网络深度较深,VGG网络在计算资源上的消耗相对较大。
(3)参数数量多:尽管使用小卷积核有助于减少参数数量,但VGG网络的总体参数数量仍然较多,导致更多的内存占用。
(4)对小样本数据的识别能力不足:VGG网络需要大量的样本数据进行训练,对于小样本数据容易出现过拟合或欠拟合的情况。
(5)对复杂场景的识别能力较弱:对于局部区域与整体场景的关系等复杂问题,VGG网络的表现并不是很好。

标签:池化层,16,卷积,模型,VGG,网络,block
From: https://blog.csdn.net/2406_83604847/article/details/140737050

相关文章

  • 解决yolo使用engine模型推理报错AttributeError: “NoneType’cbject has no attribut
    目录起因分析两种解决方案方法一:卸载生产服务器的tensorrt,下载与训练服务器相同版本方法二:将训练服务器训练的pt模型下载出来到生产服务器导出起因在做yolo模型训练时使用了训练服务器,训练结束把模型转换成了.engine模型,在训练服务器上可以正常使用,但把模型放到生成服......
  • 本地运行Meta最新大模型:Llama3.1
    手把手教你本地运行Meta最新大模型:Llama3.1,可是它说自己是ChatGPT? 就在昨晚,Meta发布了可以与OpenAI掰手腕的最新开源大模型:Llama3.1。该模型共有三个版本:8B70B405B对于这次发布,Meta已经在超过150个涵盖广泛语言范围的基准数据集上评估了性能。此外,Meta还进行了广泛......
  • 大模型训练为何离不开GPU?深度解析与显卡推荐
    在人工智能的蓬勃发展中,大模型的训练成为了热门话题。然而,许多人还不清楚为什么训练这些庞大的模型需要GPU(图形处理单元)。本文将深入探讨GPU在大模型训练中的重要性,并推荐几款适合的显卡。一、GPU与CPU的区别在讨论大模型训练时,理解GPU(图形处理单元)与CPU(中央处理单元)之间的区......
  • 深度模型中的优化 - 基本算法篇
    序言在深度学习中,模型优化是提升模型性能与训练效率的关键环节。深度模型通过优化算法不断调整其内部参数,以最小化损失函数,从而实现对复杂数据的有效拟合与预测。本篇章将简要概述深度模型中的几种基本优化算法,包括梯度下降法及其变种,这些算法在推动深度学习领域的发展中起......
  • Trends in Plant Science | 植物生物学中的大语言模型
    分享一篇来自南洋理工大学MarekMutwil团队发表在《TrendsinPlantScience》上有关植物生物学方向的大语言模型综述:Largelanguagemodelsinplantbiology。生物序列本身就是一种自然语言,与LLM是天作之合,实际上生物大模型已有很多开发,只是解释太过复杂,大多是学术报道。这方面......
  • C++和R穿刺针吸活检肿瘤算法模型模拟和进化动力学量化差异模型
    ......
  • R语言分布滞后非线性模型(DLNM)研究发病率,死亡率和空气污染示例|附代码数据
    全文下载链接:http://tecdat.cn/?p=21317最近我们被客户要求撰写关于分布滞后非线性模型(DLNM)的研究报告,包括一些图形和统计输出。本文提供了运行分布滞后非线性模型的示例,同时描述了预测变量和结果之间的非线性和滞后效应,这种相互关系被定义为暴露-滞后-反应关联数据集包含1987-......
  • Python用GARCH、离散随机波动率模型DSV模拟和估计股
    原文链接:http://tecdat.cn/?p=25165 原文出处:拓端数据部落公众号这篇文章介绍了一类离散随机波动率模型,并介绍了一些特殊情况,包括GARCH和ARCH模型。本文展示了如何模拟这些过程以及参数估计。本文为这些实验编写的Python代码在文章末尾引用。离散随机波动率模型是一个......
  • 加州大学伯克利分校等发表的RouteLLM:利用偏好数据学习路由大语言模型
    加州大学伯克利分校等发表的RouteLLM:利用偏好数据学习路由大语言模型原创 无影寺 AI帝国 2024年07月18日08:03 广东一、结论写在前面论文标题:RouteLLM:LearningtoRouteLLMswithPreferenceData论文链接:https://arxiv.org/pdf/2406.18665v2LLM在广泛的任务中......
  • RuntimeError:给定 groups=1,预期权重在维度 0 处至少为 1,但在 YOLOv8 模型训练中得到的
    我正在尝试使用yolov8n-pose.pt预训练模型来训练YOLOv8模型,并在config.yaml中使用以下配置:#Datapath:C:\Users\Denis\OneDrive\Documents\Project\WorkoutAssistant\datatrain:images/train#trainimages(relativeto'path')val:images/val#valima......