VGG16网络结构

article/2025/8/30 3:45:02

VGGNet模型有A-E五种结构网络,深度分别为11,11,13,16,19,其中VGG16和VGG19较为典型。VGG网络结构如下图所示。

VGG16介绍:

在卷积层1(conv3_64),卷积层2(conv3_128),卷积层3(conv3_256),卷积层4(conv3_512)

分别有64个,128个,256个,512个3X3卷积核,在每两层之间有池化层stride为2的2X2池化矩阵(maxpool)。在卷积层5(conv3_512)后有全连接层,再之后是soft-max预测层。

(1)conv3-64 :是指第三层卷积后维度变成64,同样地,conv3-128指的是第三层卷积后              维度变成128;

(2)input(224X224 RGB image)指的是输入图像大小为224X224的彩色图像,通道为3,             即224X224X3

(3)maxpool 是指最大池化,在VGG16中,pooling采用的是2x2的最大池化方法;

(4)FC-4096 指的是全连接层中有4096个节点,同样地,FC-1000为该层全连接层有1000           个节点;

(5)padding指的是对矩阵在外边填充n圈,padding=1即外边缘填充1圈,5x5大小的矩                  阵,填充一圈后变成7x7大小; 在进行卷积操作的过程中,处于中间位置的数值容易              被进行多次的提取,但是边界数值的特征提取次数相对较少,为了能更好的把边界数              值也利用上,所以给原始数据矩阵的四周都补上一层0,这就是padding操作。

(6)vgg16每层卷积的滑动步长stride=1,padding=1。

 从上图可以看出VGG16由13个卷积层+3个全连接层=16层构成,过程为:

(1)输入224*224*3的图片

(2)conv1_1+conv1_2+pool1:经过64个3*3卷积核的两次卷积后,采用一次max pooling。           经过第一次卷积后有3*3*3*64=1728个训练参数;第二次卷积后有3*3*64*64=36864              个训练参数,大小变为112*112*64 (池化层采用尺寸为2X2,stride=2,max的池化方          式,使得池化后的层尺寸长宽为未池化前的1/2)

(3)conv2_1+conv2_2+pool2:经过两次128个3*3卷积核卷积后,采用一次max pooling,             有3*3*128*128=147456个训练参数,大小变为56*56*128

(4)conv3_1+conv3_2+conv3_3+pool3:经过三次256个3*3卷积核卷积后,采用一次max              pooling,有3*3*256*256=589824个训练参数,大小变为28*28*256

(5)conv4_1+conv4_2+conv4_3+pool4:经过三次512个3*3卷积核卷积后,采用一次max

          pooling,有3*3*512*512=2359296个训练参数,大小变为14*14*512

(6)conv5_1+conv5_2+conv5_3+pool5:经过三次512个3*3卷积核卷积后,采用一次max

          pooling,有3*3*512*512=2359296个训练参数,大小变为7*7*512

(7)利用卷积的方式模拟全连接层,效果等同,输出net为(1,1,4096)。共进行两次。

(8)利用卷积的方式模拟全连接层,效果等同,输出net为(1,1,1000)。

最后输出的就是每个类的预测。

数据与训练

1.输入处理

如果要使用224x224的图作为训练的输入,用S表示图片最小边的值,当S=224时这个图就直接使用,直接将多余的部分减掉;对于S远大于224的,模型将对图像进行单尺度和多尺度的剪裁,通过剪切这个图片中包含object的子图作为训练数据。

2.训练方式

采用带动量的小批量梯度下降法,来优化目标函数,并且当学习效果较为满意时,最初加入的学习率权重衰减系数会起作用,会减小学习率,缓慢达到最优解。

3.初始化

若为浅层,则先随机初始化后训练,深层采用浅层训练后的数据作为初始化数据,中间层则随机初始化。

特色

 1、卷积层均采用相同的卷积核参数,这样就能够使得每一个卷积层(张量)与前一层(张         量)保持相同的宽和高;

2、池化层均采用相同的池化核参数,池化层采用尺寸为2X2,stride=2,max的池化方式,        使得池化后的层尺寸长宽为未池化前的1/2;

3、利用小尺寸卷积核等效大尺寸卷积核,2个3X3卷积核的感受野与1个5X5卷积核相当,3          个3X3卷积核与1个7X7卷积核相当,故在特征提取效果相当时,多个小卷核与大卷积核          相比,学习参数更少,计算量较小,训练更加快速,还能增加网络的深度,提升模型性          能。

卷积后的feature map大小为N:

N=(W-F+2P)/S+1

W:输入图片的大小W*W

F:Filter(滤波器)大小F*F ->=卷积核大小

S:步长

P:padding的像素数

假设feature map是28×28的,假设卷记的步长step=1,padding=0:
使用一层5X5卷积核
由(28−5)/1+1=24可得,输出的feature map为24X24
使用两层3X3卷积核
第一层,由(28−3)/1+1=26可得,输出的feature map为26X26
第二层,由(26−3)/1+1=24可得,输出的feature map为24X24
故最终尺寸结果相等,用3X3卷积核代替7X7卷积核同理。

VGG网络搭建 

VGG网络可以分为两个部分:提取特征网络结构和分类网络结构

不同网络结构配置 

#cfgs字典文件,字典的每个key代表每个模型的配置文件
cfgs = {'vgg11': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'],    #列表中的数字代表卷积层卷积核的个数,M代表池化层的结构(maxpool)'vgg13': [64, 64, 'M', 128, 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'],'vgg16': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M', 512, 512, 512, 'M'],'vgg19': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 'M', 512, 512, 512, 512, 'M'],
}

特征提取网络

def make_features(cfg: list):          #生成提取特征网络(list类型)layers = []                        #定义一个空列表用来盛放定义的每一层结构in_channels = 3                    #输入的图片是RGB图像for v in cfg:                      #for循环来遍历配置列表if v == "M":                   #如果配置元素是M,那么说明该层为最大池化层,那么就创建一个最大池化下采样层layers += [nn.MaxPool2d(kernel_size=2, stride=2)]else:                          #否则该层为卷积层,则创建卷积操作conv2d = nn.Conv2d(in_channels, v, kernel_size=3, padding=1)layers += [conv2d, nn.ReLU(True)]   #将定义的卷积层和ReLU激活函数拼接并添加到layers列表中in_channels = v                     #当特征矩阵通过该层卷积后其输出变成vreturn nn.Sequential(*layers)               #将列表通过非关键字参数的形式传入(*代表通过非关键字形式,sequential要求)

分类网络

        self.classifier = nn.Sequential(            #生成分类网络结构nn.Linear(512*7*7, 4096),               #展平处理nn.ReLU(True),nn.Dropout(p=0.5),nn.Linear(4096, 4096),nn.ReLU(True),nn.Dropout(p=0.5),nn.Linear(4096, num_classes))

参考:

(1条消息) VGG预训练模型网络结构详解——以VGG16为例_飞天长虹的博客-CSDN博客_vgg16预训练模型https://blog.csdn.net/fan_weiqiang/article/details/116545559?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165061995916782248580763%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165061995916782248580763&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-116545559.142%5Ev9%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=vgg16%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84%E8%AF%A6%E8%A7%A3&spm=1018.2226.3001.4187

(1条消息) VGG-16网络结构详解_20Xx太空漫游的博客-CSDN博客_vgg16网络结构https://blog.csdn.net/qq_45998041/article/details/114626473?ops_request_misc=&request_id=&biz_id=102&utm_term=vgg16%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84%E8%AF%A6%E8%A7%A3&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-114626473.142%5Ev9%5Epc_search_result_control_group,157%5Ev4%5Econtrol&spm=1018.2226.3001.4187


http://chatgpt.dhexx.cn/article/8KYXWM0Y.shtml

相关文章

分类网络 VGG16

经典网络VGG16 结构 VGG中根据卷积核大小和卷积层数目的不同,可分为A,A-LRN,B,C,D,E共6个配置(ConvNet Configuration),其中以D,E两种配置较为常用,分别称为VGG16和VGG19。 下图给出了VGG的六种结构配置: 上图中&am…

分类网络:VGG16

VGG16网络的优点: 1.通过堆叠两层3x3的卷积核替代5x5的卷积核, 通过堆叠三层3x3的卷积核替代7x7的卷积核, 原因是拥有相同的感受野,且需要更少的参数:假设输入通道数为C, 则所需要的参数为: 三个3x3的卷积…

VGG16模型

VGG16模型很好的适用于分类和定位任务 其名称来源于作者所在的牛津大学视觉几何组(Visual Geometry Group)的缩写。 1、结构简洁 VGG由5层卷积层、3层全连接层、softmax输出层构成,层与层之间使用max-pooling(最大化池)分开,所有…

VGG16网络结构与代码

VGG16总共有16层(不包括池化层),13个卷积层和3个全连接层,第一次经过64个卷积核的两次卷积后,采用一次pooling,第二次经过两次128个卷积核卷积后,采用pooling;再经过3次256个卷积核卷…

VGG16模型PyTorch实现

1.VGG16 网络简介 VGG16网络模型在2014年ImageNet比赛上脱颖而出,取得了在分类任务上排名第二,在定位任务上排名第一的好成绩。VGG16网络相比于之前的LexNet以及LeNet网络,在当时的网络层数上达到了空前的程度。 2.网络结构 3.创新点 ① 使…

CNN系列学习之VGG16

前言: CNN系列总结自己学习主流模型的笔记,从手写体的LeNet-5到VGG16再到历年的ImageNet大赛的冠军ResNet50,Inception V3,DenseNet等。重点总结每个网络的设计思想(为了解决什么问题),改进点(是怎么解决这…

vgg16猫狗识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:365天深度学习训练营-第8周:猫狗识别(训练营内部成员可读)🍖 原作者:K同学啊|接辅导、项目定制 我的环境&…

VGG16-keras 优化

VGG16-keras 优化 优化结果对比VGG16网络结构VGG16网络结构优化自定义loss训练预测 优化结果对比 原始VGG16 普通调优 使用预训练权重 VGG16网络结构 VGG16网络结构优化 1.增加正则化 2.使用BN/GN层(中间层数据的标准化) 3.使用dropout Net.py i…

VGG16论文解读

VGGNET VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5)。对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核是优于采用…

VGG16模型详解 and 代码搭建

目录 一. VGG 网络模型 二. 代码复现 1. 网络搭建 2.数据集制作(pkl) 3.源码地址 一. VGG 网络模型 Alexnet是卷积神经网络的开山之作,但是由于卷积核太大,移动步长大,无填充,所以14年提出的VGG网络解决了这一问题。而且VGG网…

动手学习VGG16

VGG 论文 《Very Deep Convolutional Networks for Large-Scale Image Recognition》 论文地址:https://arxiv.org/abs/1409.1556 使用重复元素的网络(VGG) 以学习VGG的收获、VGG16的复现二大部分,简述VGG16网络。 一. 学习VGG的收获 VGG网络明确指…

VGG16

VGG16模型的学习以及源码分析 part one 主要学习参考 pytorch 英文文档VGG16学习笔记VGG16网络原理分析与pytorch实现【深度学习】全面理解VGG16模型VGG模型的pytorch代码实现VGG16源代码详解【论文】 VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION p…

VGG16 - 用于分类和检测的卷积网络

VGG16是由牛津大学的K. Simonyan和A. Zisserman在“用于大规模图像识别的非常深卷积网络”的论文中提出的卷积神经网络模型。 该模型在ImageNet中实现了92.7%的前5个测试精度,这是属于1000个类的超过1400万张图像的数据集。它是ILSVRC-2014提交的着名模型…

VGG-16网络结构详解

VGG,又叫VGG-16,顾名思义就是有16层,包括13个卷积层和3个全连接层,是由Visual Geometry Group组的Simonyan和Zisserman在文献《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷积神经网络模型&…

经典卷积神经网络——VGG16

VGG16 前言一、VGG发展历程二、VGG网络模型三、VGG16代码详解1.VGG网络架构2.VGG16网络验证2.读取数据,进行数据增强3.训练模型,测试准确率 四、VGG缺点 前言 我们都知道Alexnet是卷积神经网络的开山之作,但是由于卷积核太大,移动…

VGG16网络模型的原理与实现

VGG 最大的特点就是通过比较彻底地采用 3x3 尺寸的卷积核来堆叠神经网络,这样也加深整个神经网络的深度。这两个重要的改变对于人们重新定义卷积神经网络模型架构也有不小的帮助,至少证明使用更小的卷积核并且增加卷积神经网络的深度,可以更有…

深度学习——VGG16模型详解

1、网络结构 VGG16模型很好的适用于分类和定位任务,其名称来自牛津大学几何组(Visual Geometry Group)的缩写。 根据卷积核的大小核卷积层数,VGG共有6种配置,分别为A、A-LRN、B、C、D、E,其中D和E两种是最…

RK3399平台开发系列讲解(PCI/PCI-E)5.54、PCIE INTx中断机制

文章目录 一、PCIe中断过程二、PCIE 控制器支持的中断三、PCIE 控制器注册中断四、PCIe设备中断号分配沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章将介绍RK3399平台PCIE总线中断INTx相关内容。 一、PCIe中断过程 层级结构为:PCIe设备 => PCIe控制器 =&g…

RK3399—中断

中断是操作系统最常见的事件之一,无论是系统层的“软中断”还是CPU底层的“硬中断”都是编程时常用的。中断的作用之一是充分利用CPU资源,正常情况下,CPU执行用户任务,当外设触发中断产生时,CPU停止当前任务&#xff0…

基于RK3399分析Linux系统下的CPU时钟管理 - 第3篇

1. 时钟系统结构 rockchip的时钟系统代码位于drivers/clk/rockchip,目录整体结构如下: ├── rockchip │ ├── clk.c---------------时钟系统注册 │ ├── clk-cpu.c-----------CPU调频 │ ├── clk-ddr.c-----------DDR调频 │ ├──…