[语义分割] Pytorch-用for语句构成VGG模型

[语义分割] Pytorch-用for语句构成VGG模型



前言

VGG神经网络模型是一个通用性强,经典且实用的模型,一般情况下都是直接进行相应网络的连接,采用conv2d和MaxPool等的不断重复来进行,现在采用for语句来简单实现。


提示:以下是本篇文章正文内容,下面案例可供参考

一、VGG模型的背景

VGG是由Simonyan 和Zisserman在文献《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷积神经网络模型,其名称来源于作者所在的牛津大学视觉几何组(Visual Geometry Group)的缩写。

结构如下图所示:

在这里插入图片描述
这个图形为VGG16的图形,反应了其相应的结构
当我们使用VGG16作为主干特征提取网络的时候,我们只会用到两种类型的层,
卷积层con2d和最大池化层maxpool

二、VGG相应不同结构

1.结构框图

对多种不同深度的网络进行了测试,分别称为为A-E网络,从11-19层,其中D和E被称为VGG16和VGG19。各网络结构如下
在这里插入图片描述

2.对样例VGG16做具体说明

当输入的图像大小为512x512x3的时候,具体执行方式如下:

  1. conv1:进行两次[3,3]的64通道的卷积,获得一个[512,512,64]的初步有效特征层,再进行2X2最大池化,获得一个[256,256,64]的特征层。
  2. conv2:进行两次[3,3]的128通道的卷积,获得一个[256,256,128]的初步有效特征层,再进行2X2最大池化,获得一个[128,128,128]的特征层。
  3. conv3:进行三次[3,3]的256通道的卷积,获得一个[128,128,256]的初步有效特征层,再进行2X2最大池化,获得一个[64,64,256]的特征层。
  4. conv4:进行三次[3,3]的512通道的卷积,获得一个[64,64,512]的初步有效特征层,再进行2X2最大池化,获得一个[32,32,512]的特征层。
  5. conv5:进行三次[3,3]的512通道的卷积,获得一个[32,32,512]的初步有效特征层

在这里插入图片描述

相应代码

# make layer是对每一层的层自定义,有点类似于nn.Sequential(),
# 但是layer是将每一层所要的网络或者激活函数归一化存在一个数组,
# 目前看来他的优点,可以用一个for循环去定义整个网络,不用对对每一层都写同样的函数。从而只改变他的参数就行了。
# 调用函数 make_layers(cfgs["D"], batch_norm=False, in_channels=in_channels)
# [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M', 512, 512, 512, 'M']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值