[语义分割] 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的时候,具体执行方式如下:
- conv1:进行两次[3,3]的64通道的卷积,获得一个[512,512,64]的初步有效特征层,再进行2X2最大池化,获得一个[256,256,64]的特征层。
- conv2:进行两次[3,3]的128通道的卷积,获得一个[256,256,128]的初步有效特征层,再进行2X2最大池化,获得一个[128,128,128]的特征层。
- conv3:进行三次[3,3]的256通道的卷积,获得一个[128,128,256]的初步有效特征层,再进行2X2最大池化,获得一个[64,64,256]的特征层。
- conv4:进行三次[3,3]的512通道的卷积,获得一个[64,64,512]的初步有效特征层,再进行2X2最大池化,获得一个[32,32,512]的特征层。
- 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']

最低0.47元/天 解锁文章
9775

被折叠的 条评论
为什么被折叠?



