ResNet结构

ResNet网络结构,BN层以及迁移学习 - 图1

  • 网络结构深(突破1000层)
  • 残差模块
  • 使用Batch Normalization加速训练(丢弃dropout)

    虚线结构的目的

    image.png
    image.png
    stride = 2:56——28

    残差块结构

    ResNet网络结构,BN层以及迁移学习 - 图4

  • ResNet-34;ResNet-50/101/152 (bottleneck)

  • 1*1的卷积层用于升维和降维
  • 以256-d为例

    • 33256256 + 33256256 = 1179648
    • 1125664 + 336464 + 1164*256 = 69632

      参数列表

      ResNet网络结构,BN层以及迁移学习 - 图5
  • Conv_3/4/5的第一层使用虚线残差结构

  • 对于18和34层的网络结构来说,最大池化下采样后得到的输出为[56,56,64],刚好是实线残差结构所需的输入shape
  • 对于50/101/152来说,最大池化下采样后得到的输出为[56,56,64],输入shape是[56,56,256];这里的Conv2对应的第一个虚线残差层仅调整特征矩阵深度,高和宽不变

Batch Normalization

  • 目的:一个batch的feature map满足均值为0,方差为1的分布规律
  • 使用BN层需要注意的问题:
    • 训练时将training参数设置为True,验证时设为False。在pytorch中可通过创建模型的model.train()和model.eval()方法控制
    • batchsize尽量设置大(设置越大越接近整个样本训练集的均值和方差)
    • 建议将BN层放在Conv和Relu之间,且卷积层不要使用bias

迁移学习

  • 方法:
    • load权重后训练所有参数
    • load权重后只训练最后几层
    • load权重后在原网络基础上再添一层全连接层,仅训练最后一个全连接层