VGG网络结构

网络中的亮点:通过堆叠多个3x3的卷积核来代替大尺度卷积核(减少所需参数),可以拥有相同的感受野

1、一张原始图片被resize到(224,224,3)。
2、conv1两次[3,3]卷积网络,输出的特征层为64,输出为(224,224,64),再2X2最大池化,输出net为(112,112,64)。
3、conv2两次[3,3]卷积网络,输出的特征层为128,输出net为(112,112,128),再2X2最大池化,输出net为(56,56,128)。
4、conv3三次[3,3]卷积网络,输出的特征层为256,输出net为(56,56,256),再2X2最大池化,输出net为(28,28,256)。
5、conv4三次[3,3]卷积网络,输出的特征层为512,输出net为(28,28,512),再2X2最大池化,输出net为(14,14,512)。
6、conv5三次[3,3]卷积网络,输出的特征层为512,输出net为(14,14,512),再2X2最大池化,输出net为(7,7,512)。
7、利用卷积的方式模拟全连接层,效果等同,输出net为(1,1,4096)。共进行两次。
8、利用卷积的方式模拟全连接层,效果等同,输出net为(1,1,1000)。
最后输出的就是每个类的预测。

在卷积神经网络中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野。通俗的解释是,输出feature map上的一个单元对应输入层上的区域大小。

在VGG中,使用三个3x3的卷积核可以替代一个7x7的卷积核(步长默认为1):

论文中提到通过这种方法能够减少所需参数:
假设输入输出channel为C,那么使用7x7卷积核所需参数为7x7xCxC=49C3;堆叠三个3x3卷积核所需参数为3x3xCxC+3x3xCxC+3x3xCxC=27C3

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))

训练和预测相关代码和AlexNet网络差不多

导师博客:https://blog.csdn.net/qq_37541097/article/details/103482003
导师github:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing
代码用的导师的,自己又加了些备注,就放在自己的github里了:
https://github.com/Petrichor223/Deep_Learning/tree/master

VGG16网络详解并使用pytorch搭建模型相关推荐

  1. MobileNetv1、v2网络详解、使用pytorch搭建模型MobileNetv2并基于迁移学习训练

    1.MobileNetv1网络详解 传统卷积神经网络专注于移动端或者嵌入式设备中的轻量级CNN网络,相比于传统卷积神经网络,在准确率小幅降低的前提下大大减少模型参数与运算量.(相比VGG16准确率减少 ...

  2. ResNet网络详解并使用pytorch搭建模型、并基于迁移学习训练

    1.ResNet网络详解 网络中的创新点: (1)超深的网络结构(突破1000层) (2)提出residual模块 (3)使用Batch Normalization加速训练(丢弃dropout) (1 ...

  3. GoogLeNet网络详解并使用pytorch搭建模型

    1.GoogLeNet网络详解 网络中的创新点: (1)引入了Inception结构(融合不同尺度的特征信息) (2)使用1x1的卷积核进行降维以及映射处理 (虽然VGG网络中也有,但该论文介绍的更详 ...

  4. Faster-RCNN.pytorch的搭建、使用过程详解(适配PyTorch 1.0以上版本)

    Faster-RCNN.pytorch的搭建.使用过程详解 引言 faster-rcnn pytorch代码下载 faster-rcnn pytorch配置过程 faster-rcnn pytorch ...

  5. YOLOv4网络详解

    0前言 在YOLOv4论文中,作者其实就是把当年所有的常用技术罗列了一遍,然后做了一堆消融实验. 1.YOLOV4的网络改进部分 1.主干特征提取网络:DarkNet53 => CSPDarkN ...

  6. ResNet网络详解与keras实现

    ResNet网络详解与keras实现 ResNet网络详解与keras实现 Resnet网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 梯度退化 Residual Lear ...

  7. GoogleNet网络详解与keras实现

    GoogleNet网络详解与keras实现 GoogleNet网络详解与keras实现 GoogleNet系列网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 Incepti ...

  8. EfficientNetV2网络详解

    原论文名称:EfficientNetV2: Smaller Models and Faster Training 论文下载地址:https://arxiv.org/abs/2104.00298 原论文 ...

  9. ResNet、ResNeXt网络详解及复现

    网络详解: ResNet网络详解 ResNeXt网络详解 torch复现: import torch.nn as nn import torch''' 对应着18层和34层的残差结构 既要拥有实现部分 ...

最新文章

  1. Error:java: 无效的源发行版: 11
  2. ModuleNotFoundError: No module named ‘cx_Oracle‘
  3. JAVA作业 02 JAVA语法基础
  4. views 多个文件夹 netcore_.NET Core中的使用Kestrel服务器理解及应用
  5. 网络安全之SQL注入
  6. 软件项目管理第二课—项目投标准备工作及投标函
  7. g2o图优化简介与基本使用方法
  8. SpringBoot-Bean作用域
  9. 如何把空间数据从CGCS2000转换到WGS84和BD09 ——JAVA语言实现
  10. indy-sdk tutorials数字身份认证(一)
  11. HTML 修真录------深渊三君王
  12. Mac 下如何解压 bin 文件
  13. 英文字母pc是什么意思,互联网的pc指的是什么
  14. “任期”已近20年,这个AI训练工具有点儿问题
  15. 2019CCPC江苏南京女生赛 | 总结
  16. 深入产品线的配置管理
  17. 电商设计师(美工)必备的素材网站!
  18. 网页下载工具curl命令简介
  19. 《作为意志和表象的世界》_世界作为表象初论_叔本华
  20. python mongodb驱动 pymongo模块常见用法总结

热门文章

  1. Xavier远程不接显示器设置分辨率
  2. 数字雷达模拟器ScanFaker
  3. 常见服务器小机型号,小机服务器 配置清单
  4. 站外SEO怎么做?有哪些seo技巧?
  5. Excel—对数回归分析与预测
  6. 误导孩子一生的20个坏习惯,真后悔没早看到
  7. CSS clear 属性取值详解
  8. 分享46个ASP.NET博客程序源码,总有一款适合您
  9. 畅销25年,销售百万册,这本神书和背后的软件大神
  10. 太原理工大学软件学院信息安全方向信息安全技术与应用复习