如何有效记住 vgg 和 resnet 的网络结构

首先记住基本结构:CBRP (简记:常被人拍)
C - Conv 层,
B - BN 层,
R - ReLU 层,
P - Pooling 层,MaxPool 或者 AvgPool 或者 AdaptiveMaxPool

在 CBRP 结构中,只有 Conv 层 和 BN 层含有需要更新的参数,当需要冻结 BN 层时,则只有 Conv 层内含有需要优化的参数

使用基本结构 CBRP 解析 VGG

vgg 的对应层数和结构如下:

cfg = [
 	'vgg11': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'],
    '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'],
]

查看代码可知数组中的每个数字对应一个 CBR,M 对应 MaxPooling
所以 vgg11 的结构对应为 CBRP - CBRP - CBR CBR P - CBR CBR P - CBR CBR P
同理可以推出其他 vgg 版本的结构图。由上图可以得出以下观察结果:
1、不同 vgg 版本的区别在于每次 pooling 前所进行的 CBR 次数,vgg11 版本在 pooling 前,进行了2次 CBR 操作,vgg16 进行了 3 次,vgg 19 则进行了 4次 CBR 操作。
2、每次 Pooling 前后的 CBR channel 为 2 的 6,7,8,9,9 次方

使用基本结构 CBRP 解析 ResNet

ResNet 中有 BasickBlock 和 BottleNeck 两种结构,

BasicBlock 中的 CBRP 结构为:CBR CB + R
BottleNeck 中的 CBRP 结构为:CBR CBR CB + R
其中 + 表示 需要接入残差的地方,由上图可见,BottleNeck 和 BasickBlock 都没有 pooling 层,而且 BottleNeck 比 BasickBlock 多了一层 CBR。

由 ResNet 的Pytorch 代码实现,可以看到,无论哪种实现,其通用结构模式为 CBRP [ blocks ] P,对于 resnet18,其 block 类型为 BasicBlock,层数为 [2, 2, 2, 2],所以其 CBRP 结构如下所示:
CBRP [2 * CBR CB+R, 2 * CBR CB+R, 2 * CBR CB+R, 2 * CBR CB+R] P,首先是一层 CBRP,然后是 2 * 4 * 2 层 CBR,最后是一个 avgpool 层。其他层类似,如下表所示:

模型block层数
resnet18BasicBlock-[CBR CB + R][2, 2, 2, 2]
resnet34BasicBlock-[CBR CB + R][3, 4, 6, 3]
resnet50BottleNeck-[CBR CBR CB + R][3, 4, 6, 3]
resnet101BottleNeck-[CBR CBR CB + R][3, 4, 23, 3]
resnet152BottleNeck-[CBR CBR CB + R][3, 4, 36, 3]
总结

使用 CBRP 作为一个积木单元,对 vgg 和 resnet 进行解析,可以发现更通用的模式,也更容易记忆。通过对 vgg 的解析可以发现,vgg 模型总共使用了 5 层 pooling,对图像进行池化操作,缩小特征图尺寸为输入尺寸的 1/32,减少训练参数。resnet 则只有两层 pooling,分别是第一个 CBRP 和 最后一个 avgpool,同时通过在第二、三、四层 layer 中设置 conv 的 stride = 2,达到缩小特征图尺寸为输入尺寸的 1/32 的目的。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值