ResNet

Deep Residual Learning for Image Recognition

BasicBlock和BottleNeck

ResNet_第1张图片

BottleNeck是BasicBlock的升级版,其功能也是构造子网络,resnet18和resnet34中使用了BasicBlock,而resnet50、resnet101、resnet152使用了Bottleneck构造网络。

ResNet_第2张图片

ResNet50的一些实现细节

  • ResNet50的4个stage的stride = (1, 2, 2, 2),因为第1个stage前有3×3-s2的max pool,因此不需要stride=2的downsample了
  • 每个stage会堆叠多个bottleneck,4个stage的bottleneck个数为(3, 4, 6, 3)。stride=2在stage的第一个bottleneck中的第一个1×1 conv中实现。
  • shortcut是Add,而不是Concatenate
  • 每个bottleneck是Conv-BN-ReLU、Conv-BN-ReLU、Conv-BN的结构,然后和shortcut进行Add,然后再接ReLU。
  • 当stride=2时,每个stage的第一个bottleneck的stride=2,因此第一个shortcut的需要经过1×1-s2的Conv+BN的downsample,再与bottleneck的输出Add。
  • 每个stage的第1个bottleneck的shortcut会经过downsample,只不过conv2_x是1×1-s1-conv,目的是为了对齐输入输出的channel;而后3个stage的downsample是1×1-s2-conv,目的是为了h,w和channel都对齐。每个stage除了第1个bottleneck外shortcut都是直接用的输入,没有经过其它处理。

你可能感兴趣的:(Classification,深度学习,计算机视觉,人工智能)