VGG网络结构(一)

article/2025/4/22 18:00:12

刚开始接触深度学习、卷积神经网络的时候非常懵逼,不知道从何入手,我觉得应该有一个进阶的过程,也就是说,理应有一些基本概念作为奠基石,让你有底气去完全理解一个庞大的卷积神经网络:

本文思路:


一、我认为学习卷积神经网络必须知道的几个概念:

1、卷积过程:

  我们经常说卷积神经网络卷积神经网络,到底什么才是卷积?网络层卷积过程到底怎么实现?我们在这里借鉴了另一位博客大牛的动态图来给大家演示一下,

  图作者文章在此:http://blog.csdn.net/silence1214/article/details/11809947

我们可以看到,卷积过程其实还是基于一个固定的矩阵,在另外一个矩阵不断一格一格扫过去的到的数值的和,(注意:这里的一格一格非常重要,因为涉及后面的概念:步长→我们不妨想一想当固定矩阵不是一格一格前进的时候,会发生什么呢?)产生的一个新的矩阵,我们以作为比较会发现:粉红色矩阵和绿色矩阵在根本上有很大不一样,

第一,卷积之后的维数降低了;第二,我们要想想为什么降维了?(思考:降低维度到底有没有规律?)

  答案是有的:我们发现橙色的固定框为3*3,绿色是5*5,出来是三乘三;

  所以规律可以得到:粉红色最后的卷积结果矩阵维度=绿色矩阵维数-橙色矩阵维数+1

  (我们又应该思考:如果我不想最后减少维度,我只希望卷积,怎么办呢?)

2、两层之间的池化:

  我们依然延用博客大牛的另一个动图(再次点赞做的精细准确!)


我们可以发现其实跟之前没什么不一样:还是以三个矩阵之间的运算,但是我们很容易发现,它并不是一行一行扫过去的,橙色矩阵维度是黄色矩阵的整数倍,所以池化的最终的结论是要把原来的维度减少到1/n.这是池化最根本的原理(当然也有特殊情况。)

(思考点:我们想象一下如果一个19*19的矩阵做池化,会是一种什么样的体验呢?我们不可以缩小整数倍!!答案会在后面的VGG16里面讲清楚,不急不急吐舌头吐舌头吐舌头


3、第三个知识点是步长的概念:

  卷积核(后面讲到VGG16会介绍)移动的步长(stride)小于卷积核的边长(一般为正方行)时,变会出现卷积核与原始输入矩阵作用范围在区域上的重叠(overlap),卷积核移动的步长(stride)与卷积核的边长相一致时,不会出现重叠现象。

  通俗一点其实就是:刚刚说的那个粉红色矩阵,他每一次移动多少格,格子就是步长!!

4、卷积核:

  一个听起来很高大上的词语,我们依然用之前的基础来解释:通俗易懂:就是粉红色矩阵的个数!!因为有时候我们要提取的特征非常多非常广泛,所以需要我们用更多的矩阵来扫(多扫几遍),那么粉红色矩阵的个数就是卷积核个数。

5、Padding:

  这个应该是最抽象的概念了:但是也不会特别难呢,就是我们在之前讲到第一点:卷积的时候,我抛下了一个问题:

 (我们又应该思考:如果我不想最后减少维度,我只希望卷积,怎么办呢?)(现在知道括号的重要性了吧哈哈?骂人骂人骂人

  现在我们来解决这个问题:比如:我们需要做一个300*300的原始矩阵,用一个3*3卷积核(粉红色矩阵)来扫,扫出来,按照之前公式,结果的矩阵应该是:298*298的矩阵,但是这样很难计算,减得也不多,反而增加我计算难度,还不如池化(pooling)来得干脆是吧!那我们就在300*300矩阵外面周围加一圈“0”,记住,是在外面外包一层“0”

重点是:这样的300*300就变成了302*302的矩阵,这样就可以完全避开卷积后那两层的抵消。

6、还有一个就是通道的概念:这个不算知识点,仅仅是一个常识词语,比如一张图片,有RGB三种颜色,对应三个灰度级别,也就是三个通道了:

更加抽象的图可以参照下面的结构:


二、等待已久的VGG16:

VGG16分为16层,我们主要讲前面的前几层(越详细越好吧,后面是一样的)

——首先教会大家一个看其他神经网络也是用的办法:官方数据表格:


看懂一些式子表达:

Conv3-512   →    第三层卷积后维度变成512;

Conv3_2 s=2     →     第三层卷积层里面的第二子层,滑动步长等于2(每次移动两个格子)

好了,我们有了以上的知识可以考试剖析VGG16卷积神经网络了


三、利用之前的基本概念来解释深层的VGG16卷及网络;

【1、从INPUT到Conv1:】


首先两个黄色的是卷积层,是VGG16网络结构十六层当中的第一层(Conv1_1)和第二层Conv1_2,他们合称为Conv1。

我们主要讲述第一个,也就是第一层(Conv1_1),它怎么把一个300*300*3的矩阵变成一个300*300*64的矩阵?


我们假设蓝色框是一个RGB图像,橙色是一个3*3*3的卷积核,我们对一个三维的27个数求和,然后扫过去,按照第一部分算的得出来的是一维的298*298的矩阵(因为卷积核也是三维所以结果是一维);

然后回想一下什么是Padding、前面也讲过它的概念了;所以不了一圈的圆,回到了300*300*1;

然后,VGG16这一层安置有64个卷积核,那么,原来的300*300*1变成300*300*64

于是我们的到了想要的东西;最后的绿色框;

【1、从Conv1到Conv2之间的过度:】


这一步用的Pooling是:2*2*64 s=2;

也就是说,步长是二,滑动的矩阵本身没有重叠;刚好减半,第三维度64不变;

【3、顺利来到Conv2并且结构完全一样进入Conv3:】

我们知道原来INPUT是300*300*3过了第一层出来时150*150*64

那么第二层仍然有池化有128个卷积核,联想推理:

出来的应该是75*75*128;这一步没有问题,我们继续往下分析:

【4、进入Conv3的推演:】


可以知道第三层有256个卷积核,包含三层小的卷基层:

【5、从Conv3到Conv4之间的过度:】


池化没有问题,但是这里75不是一个偶数怎么弄,还记得我们第一部分前面的括号吗?

就是这样,我们在75这里相加了一个一,使之成为76,变成一个偶数,还有一种方法是通过步长的设置这里先不展开来讲了;

【6、后续的步骤】

  后面的方法很简单,根据我给的那个VGG16的表格查找每一层里面有什么卷积核?多少个?池化的大小?步长多少?是否需要Padding?解决这些问题,你的VGG16就已经完全可以从头到尾说清楚了!!!

【7、Faster Rcnn的例子】

http://blog.csdn.net/errors_in_life/article/details/70916583
转载自https://blog.csdn.net/Errors_In_Life/article/details/65950699

http://chatgpt.dhexx.cn/article/viNXDISd.shtml

相关文章

VGG 网络结构

从图中可以看出VGG结构由5层卷积层、3层全连接层、softmax输出层构成,层与层之间使用max-pooling(最大池化)分开,所有隐层的激活单元都采用ReLU函数。VGG最大的贡献就是证明了卷积神经网络的深度增加和小卷积核的使用对网络的最终…

PyTorch之VGG16网络结构详解以及源码解读

论文:Very Deep Convolutional Networks for Large-Scale Image Recognition 简单介绍 意义: 证明了增加小卷积核的个数以及网络深度可以提高分类结果的正确率。 预处理: 各通道减去RGB在训练集上的均值。 特点: 1)使用…

VGG-16网络结构

一、VGG-16网络框架介绍 VGGNet是牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司的研究员一起研发的深度卷积神经网络。 VGGNet探索了卷积神经网络的深度与其性能之间的关系,通过反复堆叠33的小型卷积核和22的最大池化层…

[VGG16]——网络结构介绍及搭建(PyTorch)

一、VGG16的结构层次 VGG16总共有16层,13个卷积层和3个全连接层,第一次经过64个卷积核的两次卷积后,采用一次pooling,第二次经过两次128个卷积核卷积后,采用pooling;再经过3次256个卷积核卷积后。采用pooli…

VGG预训练模型网络结构详解——以VGG16为例

VGG卷积神经网络是牛津大学在2014年提出来的模型。当这个模型被提出时,由于它的简洁性和实用性,马上成为了当时最流行的卷积神经网络模型。它在图像分类和目标检测任务中都表现出非常好的结果。在2014年的ILSVRC比赛中,VGG 在Top-5中取得了92…

卷积神经网络模型之——VGG-16网络结构与代码实现

文章目录 VGGNet简介VGG16网络结构使用pytorch搭建VGG16featuresclassifier完整代码 VGGNet简介 VGG原文:Very deep convolutional networks for large-scale image recognition:https://arxiv.org/pdf/1409.1556.pdf VGG在2014年由牛津大学Visual Geom…

关于VGGNet网络结构浅谈(主要是VGG16结构)

文章目录 1.首先看一下论文中一张表:2.VGG16网络结构解释:3.网络构成详解:4.VGG16使用的卷积核大小都是3x3的,使用比之前小的卷积核有什么作用:5.Tensorflow2.6.0实现VGG16网络结构: 1.首先看一下论文中一张…

深度学习之学习(1-1) VGG16网络结构详解

参见 ​​​​​​【深度学习】全面理解VGG16模型_florrie-CSDN博客_vgg16模型介绍深度学习-VGG16原理详解_£的博客-CSDN博客_vgg16 1、网络结构 根据卷积核大小和卷积层数,VGG共有6中配置,分别为A,A-LRN,B,C,D,E,其中D和E两种最为常…

【深度学习】全面理解VGG16模型

全面理解VGG16模型 VGG16的结构层次介绍结构图VGG16模型所需要的内存容量介绍卷积中的基本概念1.从input到conv1:2.从conv1到conv2之间的过渡:3.conv2到conv3:4.进入conv3:5.从conv3到conv4之间的过渡:6.最后到三层全连…

经典卷积神经网络---VGG16详解

一.VGG概述 VGGNet是牛津大学视觉几何组(Visual Geometry Group)提出的模型,该模型在2014ImageNet图像分类与定位挑战赛 ILSVRC-2014中取得在分类任务第二,定位任务第一的优异成绩。VGGNet突出的贡献是证明了很小的卷积,通过增加网络深度可以…

SpringCloud笔记

Eureka 一、不引入Eureka时 1.引入公共模块依赖 <!-- 引入公共模块依赖 --> <dependency><groupId>niit</groupId><artifactId>springcloud-api</artifactId> </dependency>引入后会发现Maven视图报错&#xff0c;此处需要在父工…

服务链路追踪怎么搞?好搞吗?

微服务架构是一个分布式架构&#xff0c;它按业务划分服务单元&#xff0c;一个分布式系统往往有很多个服务单元。由于服务单元数量众多&#xff0c;业务的复杂性&#xff0c;如果出现了错误和异常&#xff0c;很难去定位。主要体现在&#xff0c;一个请求可能需要调用很多个服…

java小白进阶之基础篇

JAVA基础语法归纳>>小白进阶~~java基础语法 >>Java概述 Java语言的发展历史 1991年出现&#xff0c;1995年正式发布 创始人&#xff1a;James Gosling 出生地&#xff1a;SUN 被Oracle公司在这里插入代码片 最新的JDK的版本&#xff1a; 2020年发布JDK14 Java体系…

WAF绕过总结+工具介绍

什么是WAF Waf是web应用防火墙&#xff08; Web Application Firewa‖l&#xff09;的简称&#xff0c;对来自Web应用程序客户端的各类请求进行内容检测和验证&#xff0c;确保其安全性与合法性&#xff0c;对非法的请求予以实时阻断&#xff0c;为web应用提供防护&#xff0c…

Java基础入门笔记(看到就是赚到)

一、初始java 1. 生活中的程序&#xff1a; 从起床到上班的过程 穿衣打扮—起床—洗漱—吃饭—出门—乘坐交通工具—到公司 2.计算机中的程序: 一组有序指令的集合,需要和计算机交流就要使用计算机语言&#xff0c;java就是计算机语言的一种 3.java能做什么&#xff1a; …

vue-plugin-hiprint vue hiprint vue使用hiprint打印控件VUE HiPrint HiPrint简单使用

vue-plugin-hiprint vue hiprint vue使用hiprint打印控件VUE HiPrint HiPrint简单使用 安装相关依赖安装 vue-plugin-hiprintJQuery安装 打印客户端 引入依赖打印 html 内容 - 简单使用根据模版打印 - 简单使用以下内容 和上面demo 没关系 &#xff01;&#xff01;&#xff01…

Kafka问题整理 (Too many open files等)/kafka重要参数总结

1.Kafka集群搭建好以后&#xff0c;运行一段时间Kafka节点挂掉&#xff0c;程序中出现如下错误 ERROR Error while accepting connection (kafka.network.Acceptor) java.io.IOException: Too many open files 或者 ERROR Error while deleting the clean shutdown file in…

picoCTF,Reverse Engineering,逆向类,42/55

picoCTF&#xff0c;Reverse Engineering&#xff0c;42/55 2019 picoCTF01、vault-door-training&#xff0c;50分02、vault-door-1&#xff0c;100分03、vault-door-3&#xff0c;200分04、vault-door-4&#xff0c;250分05、vault-door-5&#xff0c;300分06、vault-door-6&…

Java学习(12)(String类、String的查找方法、字符串转化、 替换、拆分、截取、trim方法、字符串的不可变性、StringBuilder和StringBuffer)

接上次博客&#xff1a;Java学习&#xff08;11&#xff09;&#xff1a;Java实现图书馆书库管理系统_di-Dora的博客-CSDN博客 目录 String类 构造字符串的方法&#xff1a; String 对象的比较 1、比较是否引用了同一个对象。 2、比较字符串内容是否相同 3、"int co…

渗透测试工具实战技巧合集

本文为作者总结自己在渗透测试中常用的一些小技巧。原文分为两部分&#xff0c;译者将其合二为一&#xff0c;方便大家查阅。 最好的 NMAP 扫描策略 # 适用所有大小网络最好的 nmap 扫描策略# 主机发现&#xff0c;生成存活主机列表 $ nmap -sn -T4 -oG Discovery.gnmap 192.1…