计算机视觉与深度学习-经典网络解析-VGG-[北邮鲁鹏]

2023-09-18 17:03:27

VGG

VGG是Oxford的Visual Geometry Group的组提出的(大家应该能看出VGG名字的由来了)。该网络是在ILSVRC 2014上的相关工作,主要工作是证明了增加网络的深度能够在一定程度上影响网络最终的性能。VGG有两种结构,分别是VGG16和VGG19,两者并没有本质上的区别,只是网络深度不一样。
在这里插入图片描述

参考

论文地址
一文读懂VGG网络

在这里插入图片描述

VGG网络贡献

使用尺寸更小的 3 × 3 3 \times 3 3×3卷积串联来获得更大的感受野

对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核是优于采用大的卷积核,因为多层非线性层可以额增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)。

放弃使用 11 × 11 11 \times 11 11×11 5 × 5 5 \times 5 5×5这样的大尺寸卷积核

使用了3个3x3卷积核来代替7x7卷积核,使用了2个3x3卷积核来代替5*5卷积核,这样做的主要目的是在保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果。

2个 3 × 3 3 \times 3 3×3卷积核串联,感受野为 5 × 5 5 \times 5 5×5
在这里插入图片描述
3个 3 × 3 3 \times 3 3×3卷积核串联,感受野为 7 × 7 7 \times 7 7×7
在这里插入图片描述

深度更深、非线性更强,网络的参数也更少;

比如,3个步长为1的3x3卷积核的一层层叠加作用可看成一个大小为7的感受野(其实就表示3个3x3连续卷积相当于一个7x7卷积),其参数总量为 ( 3 × 3 × C ) × C × 3 = 27 C 2 (3 \times 3 \times C) \times C \times 3 = 27C^2 (3×3×C)×C×3=27C2
如果直接使用7x7卷积核,其参数总量为 ( 7 × 7 × C ) × C = 49 C 2 (7 \times 7 \times C) \times C = 49C^2 (7×7×C)×C=49C2 ,这里 C 指的是输入和输出的通道数。

很明显, 27 C 2 27C^2 27C2小于 49 C 2 49C^2 49C2,即减少了参数;而且3x3卷积核有利于更好地保持图像性质。

去掉了AlexNet中的局部响应归一化层(LRN)层。

网络结构

在这里插入图片描述

1、输入224x224x3的图片,经64个3x3的卷积核作两次卷积+ReLU,卷积后的尺寸变为224x224x64

2、作max pooling(最大化池化),池化单元尺寸为2x2(效果为图像尺寸减半),池化后的尺寸变为112x112x64

3、经128个3x3的卷积核作两次卷积+ReLU,尺寸变为112x112x128

4、作2x2的max pooling池化,尺寸变为56x56x128

5、经256个3x3的卷积核作三次卷积+ReLU,尺寸变为56x56x256

6、作2x2的max pooling池化,尺寸变为28x28x256

7、经512个3x3的卷积核作三次卷积+ReLU,尺寸变为28x28x512

8、作2x2的max pooling池化,尺寸变为14x14x512

9、经512个3x3的卷积核作三次卷积+ReLU,尺寸变为14x14x512

10、作2x2的max pooling池化,尺寸变为7x7x512

11、与两层1x1x4096,一层1x1x1000进行全连接+ReLU(共三层)

12、通过softmax输出1000个预测结果

主要改进

输入去均值

AlexNet和ZFNet的输入去均值:求所有图像向量的均值,最后得出一个与原始图像大小相同维度的均值向量。

VGG输入去均值:求所有图像向量的RGB均值,最后得到的是一个3×1的向量 [R,G,B]

小卷积核串联代替大卷积核

增加了非线性能力。

多个小尺寸卷积核串联可以得到与大尺寸卷积核相同的感受野。

与高斯核不同,高斯核中两个小卷积核组合卷积核大卷积核卷积结果相同。但是卷积神经网络中的卷积核,多个小卷积核组合和大卷积核结果不同,但是感受野相同。

无重叠池化

窗口大小为2×2,步长为2。

卷积核个数逐层增加

前层卷积核少,是因为前层学习到的是图像的基元(点、线、边),基元很少,所以不需要很多的神经元学习,又前层的图像都比较大,若神经元很多,计算量会很大(K×m×m×D×K×n×n)。到后面的层时,包含很多的语义结构,需要更多的卷积核学习。

为什么在VGG网络前四段里,每经过一次池化操作,卷积核个数就增加一倍?

1、池化操作可以减少特征图尺寸,降低显存占用
2、增加卷积核个数有助于学习更多的结构特诊,但会增加网络参数数量以及内存消耗
3、一减一增的设计平衡了识别精度与存储、计算开销

最终提升了网络性能

为什么卷积核个数增加到512后就不再增加了?

1、第一个全连接层含102M参数,占总参数个数的74%
2、这一层的参数个数是特征图的尺寸与个数的乘积
3、参数过多容易过拟合,且不易被训练

如果将最后一层卷积核个数增加至1024,这一层参数个数为: 7 × 7 × 1024 × 4096 = 205520896 ≈ 200 M 7 \times 7 \times 1024 \times 4096 = 205520896 \approx 200M 7×7×1024×4096=205520896200M

更多推荐

亿图脑图移动端V7.0.0推出一键生成竖屏海报,提升思维导图在手机上的阅读体验

近日,亿图脑图移动端V7.0.0版本上线,支持思维导图一键生成竖版海报,开拓了一种新的图文表现形式。思维导图作为一种便捷的可视化工具,被广泛应用于日常生活和工作场合中,然而,在手机终端成为主导的竖屏阅读时代,思维导图往往会出现排版复杂,显示效果不佳等问题,这严重影响了用户的使用体验和效率。所以,亿图脑图移动端V7.0.

算法通关村第13关【白银】| 数字与数学高频问题

数组实现加法1.加一思路:不进位末尾加一,进位挨个加一99,999...进位,新建长度+1的数组,res[0]=1,直接返回lassSolution{publicint[]plusOne(int[]digits){for(inti=digits.length-1;i>=0;i--){intnum=++digits[i]

Direct3D融合技术

该技术能使我们将当前要进行光栅化的像素的颜色与先前已已光栅化并处于同一位置的像素的颜色进行合成,即将正在处理的图元颜色值与存储在后台缓存中的像素颜色值进行合成(混合),利用该技术我们可得到各种各样的效果,尤其是透明效果。在融合运算时需要遵循:首先绘制那些不需要进行融合的物体,然后将需要进行融合的物体按照相对于摄像机的深

低代码之JeecgBoot

JeecgBootJeecgBoot是一款基于BPM的低代码平台!前后端分离架构SpringBoot2.x,SpringCloud,AntDesign&Vue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发!JeecgBoot引领新低代码开发模式Onlin

【网络协议】Http-下

因为Http是无状态的,所以为了协助Web保持状态,Cookie诞生了。下面中是百度百科关于Cookie和Session的解释:Cookie:举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。如果使用浏览器访问Web,会看到所有保存在硬盘上的Cookie

【Git】03-GitHub

文章目录1.GitHub核心功能2.GitHub搜索项目3.GitHub搭建个人博客4.团队项目创建5.git工作流选择5.1需要考虑的因素5.2主干开发5.2GitFlow5.3GitHubFlow5.4GitLabFlow(带生产分支)5.4GitLabFlow(带环境分支)5.4GitLabFlow(带发布分支)

Ceph入门到静态-deep scrub 深度清理处理

9.6洗刷REPORTDOCUMENTATIONBUG#除了为对象创建多个副本外,Ceph还可通过洗刷归置组来确保数据完整性(请参见第1.3.2节“归置组”了解有关归置组的详细信息)。Ceph的洗刷类似于在对象存储层运行fsck。对于每个归置组,Ceph都会生成一个包含所有对象的编目,并比较每个主对象及其副本,以确保不

如何解决 Spring Boot Actuator 的未授权访问漏洞

SpringBootActuator的作用是提供了一组管理和监控端点,允许你查看应用程序的运行时信息,例如健康状态、应用程序信息、性能指标等。这些端点对于开发、测试和运维团队来说都非常有用,可以帮助快速诊断问题、监控应用程序的性能,并采取必要的措施来维护和管理应用程序。SpringBootActuator未授权访问的配

LeetCode 40. Combination Sum II【回溯,剪枝】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及

LeetCode 39. Combination Sum【回溯,剪枝】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及

Android.bp常用语法和预定义属性

介绍Android.bp是Android构建系统中用于定义模块和构建规则的配置文件,它使用一种简单的声明式语法。以下是Android.bp的一些常见语法规则和约定:注释:单行注释使用//符号。多行注释使用/和/包围。和go语言相同//这是单行注释/*这是多行注释*/模块定义:每个模块都以module_type字段开始,

热文推荐