torchvision 0.3 自带 resnet50 结构

定义模型

def res50_faster_rcnn(self_pretrained, num_classes):
    if not self_pretrained:
        print('load res50 backbone pretrained on COCO')

    pretrained = False if self_pretrained else True  # pretrain on COCO
    model = fasterrcnn_resnet50_fpn(pretrained=pretrained)
    in_features = model.roi_heads.box_predictor.cls_score.in_features
    model.roi_heads.box_predictor = FastRCNNPredictor(in_channels=in_features,
                                                      num_classes=num_classes)
    return model

打印 params,只给出了 conv,省去了 bn, relu

def model_params(model):
    print('{:>4} {:<50} {:<30} {}'.format('idx', 'param', 'size', 'grad'))
    for idx, (name, param) in enumerate(model.named_parameters()):  # recurse=True, as net itself is a big module
        print('{:>4} {:<50} {:<30} {}'.format(idx, name, str(param.size()), param.requires_grad))
torchvision 0.3 自带 resnet50 结构_第1张图片

无论是否采用 pretrained, conv1conv2_x 都不更新参数,require_grad=False

 idx param                                              size                           grad
   0 backbone.body.conv1.weight                         torch.Size([64, 3, 7, 7])      False  # conv1, layer0
   1 backbone.body.layer1.0.conv1.weight                torch.Size([64, 64, 1, 1])     False  # conv2_x 0 重复 3 次
   2 backbone.body.layer1.0.conv2.weight                torch.Size([64, 64, 3, 3])     False
   3 backbone.body.layer1.0.conv3.weight                torch.Size([256, 64, 1, 1])    False
   4 backbone.body.layer1.0.downsample.0.weight         torch.Size([256, 64, 1, 1])    False  # layer0 与 layer1 连接处
   5 backbone.body.layer1.1.conv1.weight                torch.Size([64, 256, 1, 1])    False  # conv2_x 1
   6 backbone.body.layer1.1.conv2.weight                torch.Size([64, 64, 3, 3])     False
   7 backbone.body.layer1.1.conv3.weight                torch.Size([256, 64, 1, 1])    False
   8 backbone.body.layer1.2.conv1.weight                torch.Size([64, 256, 1, 1])    False  # conv2_x 2
   9 backbone.body.layer1.2.conv2.weight                torch.Size([64, 64, 3, 3])     False
  10 backbone.body.layer1.2.conv3.weight                torch.Size([256, 64, 1, 1])    False
  11 backbone.body.layer2.0.conv1.weight                torch.Size([128, 256, 1, 1])   True  # conv3_x
  12 backbone.body.layer2.0.conv2.weight                torch.Size([128, 128, 3, 3])   True
  13 backbone.body.layer2.0.conv3.weight                torch.Size([512, 128, 1, 1])   True
  14 backbone.body.layer2.0.downsample.0.weight         torch.Size([512, 256, 1, 1])   True  # layer1 和 layer2 连接处
  15 backbone.body.layer2.1.conv1.weight                torch.Size([128, 512, 1, 1])   True
  16 backbone.body.layer2.1.conv2.weight                torch.Size([128, 128, 3, 3])   True
  17 backbone.body.layer2.1.conv3.weight                torch.Size([512, 128, 1, 1])   True
  18 backbone.body.layer2.2.conv1.weight                torch.Size([128, 512, 1, 1])   True
  19 backbone.body.layer2.2.conv2.weight                torch.Size([128, 128, 3, 3])   True
  20 backbone.body.layer2.2.conv3.weight                torch.Size([512, 128, 1, 1])   True
  21 backbone.body.layer2.3.conv1.weight                torch.Size([128, 512, 1, 1])   True
  22 backbone.body.layer2.3.conv2.weight                torch.Size([128, 128, 3, 3])   True
  23 backbone.body.layer2.3.conv3.weight                torch.Size([512, 128, 1, 1])   True
  24 backbone.body.layer3.0.conv1.weight                torch.Size([256, 512, 1, 1])   True
  25 backbone.body.layer3.0.conv2.weight                torch.Size([256, 256, 3, 3])   True
  26 backbone.body.layer3.0.conv3.weight                torch.Size([1024, 256, 1, 1])  True
  27 backbone.body.layer3.0.downsample.0.weight         torch.Size([1024, 512, 1, 1])  True
  28 backbone.body.layer3.1.conv1.weight                torch.Size([256, 1024, 1, 1])  True
  29 backbone.body.layer3.1.conv2.weight                torch.Size([256, 256, 3, 3])   True
  30 backbone.body.layer3.1.conv3.weight                torch.Size([1024, 256, 1, 1])  True
  31 backbone.body.layer3.2.conv1.weight                torch.Size([256, 1024, 1, 1])  True
  32 backbone.body.layer3.2.conv2.weight                torch.Size([256, 256, 3, 3])   True
  33 backbone.body.layer3.2.conv3.weight                torch.Size([1024, 256, 1, 1])  True
  34 backbone.body.layer3.3.conv1.weight                torch.Size([256, 1024, 1, 1])  True
  35 backbone.body.layer3.3.conv2.weight                torch.Size([256, 256, 3, 3])   True
  36 backbone.body.layer3.3.conv3.weight                torch.Size([1024, 256, 1, 1])  True
  37 backbone.body.layer3.4.conv1.weight                torch.Size([256, 1024, 1, 1])  True
  38 backbone.body.layer3.4.conv2.weight                torch.Size([256, 256, 3, 3])   True
  39 backbone.body.layer3.4.conv3.weight                torch.Size([1024, 256, 1, 1])  True
  40 backbone.body.layer3.5.conv1.weight                torch.Size([256, 1024, 1, 1])  True
  41 backbone.body.layer3.5.conv2.weight                torch.Size([256, 256, 3, 3])   True
  42 backbone.body.layer3.5.conv3.weight                torch.Size([1024, 256, 1, 1])  True
  43 backbone.body.layer4.0.conv1.weight                torch.Size([512, 1024, 1, 1])  True
  44 backbone.body.layer4.0.conv2.weight                torch.Size([512, 512, 3, 3])   True
  45 backbone.body.layer4.0.conv3.weight                torch.Size([2048, 512, 1, 1])  True
  46 backbone.body.layer4.0.downsample.0.weight         torch.Size([2048, 1024, 1, 1]) True
  47 backbone.body.layer4.1.conv1.weight                torch.Size([512, 2048, 1, 1])  True
  48 backbone.body.layer4.1.conv2.weight                torch.Size([512, 512, 3, 3])   True
  49 backbone.body.layer4.1.conv3.weight                torch.Size([2048, 512, 1, 1])  True
  50 backbone.body.layer4.2.conv1.weight                torch.Size([512, 2048, 1, 1])  True
  51 backbone.body.layer4.2.conv2.weight                torch.Size([512, 512, 3, 3])   True
  52 backbone.body.layer4.2.conv3.weight                torch.Size([2048, 512, 1, 1])  True
  53 backbone.fpn.inner_blocks.0.weight                 torch.Size([256, 256, 1, 1])   True
  54 backbone.fpn.inner_blocks.0.bias                   torch.Size([256])              True
  55 backbone.fpn.inner_blocks.1.weight                 torch.Size([256, 512, 1, 1])   True
  56 backbone.fpn.inner_blocks.1.bias                   torch.Size([256])              True
  57 backbone.fpn.inner_blocks.2.weight                 torch.Size([256, 1024, 1, 1])  True
  58 backbone.fpn.inner_blocks.2.bias                   torch.Size([256])              True
  59 backbone.fpn.inner_blocks.3.weight                 torch.Size([256, 2048, 1, 1])  True
  60 backbone.fpn.inner_blocks.3.bias                   torch.Size([256])              True
  61 backbone.fpn.layer_blocks.0.weight                 torch.Size([256, 256, 3, 3])   True
  62 backbone.fpn.layer_blocks.0.bias                   torch.Size([256])              True
  63 backbone.fpn.layer_blocks.1.weight                 torch.Size([256, 256, 3, 3])   True
  64 backbone.fpn.layer_blocks.1.bias                   torch.Size([256])              True
  65 backbone.fpn.layer_blocks.2.weight                 torch.Size([256, 256, 3, 3])   True
  66 backbone.fpn.layer_blocks.2.bias                   torch.Size([256])              True
  67 backbone.fpn.layer_blocks.3.weight                 torch.Size([256, 256, 3, 3])   True
  68 backbone.fpn.layer_blocks.3.bias                   torch.Size([256])              True
  69 rpn.head.conv.weight                               torch.Size([256, 256, 3, 3])   True
  70 rpn.head.conv.bias                                 torch.Size([256])              True
  71 rpn.head.cls_logits.weight                         torch.Size([3, 256, 1, 1])     True
  72 rpn.head.cls_logits.bias                           torch.Size([3])                True
  73 rpn.head.bbox_pred.weight                          torch.Size([12, 256, 1, 1])    True
  74 rpn.head.bbox_pred.bias                            torch.Size([12])               True
  75 roi_heads.box_head.fc6.weight                      torch.Size([1024, 12544])      True
  76 roi_heads.box_head.fc6.bias                        torch.Size([1024])             True
  77 roi_heads.box_head.fc7.weight                      torch.Size([1024, 1024])       True
  78 roi_heads.box_head.fc7.bias                        torch.Size([1024])             True
  79 roi_heads.box_predictor.cls_score.weight           torch.Size([21, 1024])         True
  80 roi_heads.box_predictor.cls_score.bias             torch.Size([21])               True
  81 roi_heads.box_predictor.bbox_pred.weight           torch.Size([84, 1024])         True
  82 roi_heads.box_predictor.bbox_pred.bias             torch.Size([84])               True

你可能感兴趣的:(torchvision 0.3 自带 resnet50 结构)