コード例 #1
0
ファイル: maskiou_head.py プロジェクト: jylins/CORE-Text
    def __init__(self,
                 num_convs=4,
                 num_fcs=2,
                 roi_feat_size=14,
                 in_channels=256,
                 conv_out_channels=256,
                 fc_out_channels=1024,
                 num_classes=80,
                 loss_iou=dict(type='MSELoss', loss_weight=0.5),
                 init_cfg=[
                     dict(type='Kaiming', override=dict(name='convs')),
                     dict(type='Caffe2Xavier', override=dict(name='fcs')),
                     dict(
                         type='Normal',
                         std=0.01,
                         override=dict(name='fc_mask_iou'))
                 ]):
        super(MaskIoUHead, self).__init__(init_cfg)
        self.in_channels = in_channels
        self.conv_out_channels = conv_out_channels
        self.fc_out_channels = fc_out_channels
        self.num_classes = num_classes
        self.fp16_enabled = False

        self.convs = nn.ModuleList()
        for i in range(num_convs):
            if i == 0:
                # concatenation of mask feature and mask prediction
                in_channels = self.in_channels + 1
            else:
                in_channels = self.conv_out_channels
            stride = 2 if i == num_convs - 1 else 1
            self.convs.append(
                Conv2d(
                    in_channels,
                    self.conv_out_channels,
                    3,
                    stride=stride,
                    padding=1))

        roi_feat_size = _pair(roi_feat_size)
        pooled_area = (roi_feat_size[0] // 2) * (roi_feat_size[1] // 2)
        self.fcs = nn.ModuleList()
        for i in range(num_fcs):
            in_channels = (
                self.conv_out_channels *
                pooled_area if i == 0 else self.fc_out_channels)
            self.fcs.append(Linear(in_channels, self.fc_out_channels))

        self.fc_mask_iou = Linear(self.fc_out_channels, self.num_classes)
        self.relu = nn.ReLU()
        self.max_pool = MaxPool2d(2, 2)
        self.loss_iou = build_loss(loss_iou)
コード例 #2
0
 def __init__(self, norm_cfg=dict(type='BN'), channels=64):
     # Protect mutable default arguments
     norm_cfg = cp.deepcopy(norm_cfg)
     super().__init__()
     self.top = nn.Sequential(
         ConvModule(3,
                    channels,
                    kernel_size=7,
                    stride=2,
                    padding=3,
                    norm_cfg=norm_cfg,
                    inplace=True),
         MaxPool2d(kernel_size=3, stride=2, padding=1))
コード例 #3
0
    def __init__(self,
                 depth,
                 stage_channels,
                 norm_cfg=dict(type='BN', requires_grad=True)):
        # Protect mutable default arguments
        norm_cfg = copy.deepcopy(norm_cfg)
        super().__init__()

        self.depth = depth

        cur_channel = stage_channels[0]
        next_channel = stage_channels[1]

        self.up1 = ConvModule(cur_channel,
                              cur_channel,
                              3,
                              padding=1,
                              norm_cfg=norm_cfg)

        self.pool1 = MaxPool2d(2, 2)

        self.low1 = ConvModule(cur_channel,
                               next_channel,
                               3,
                               padding=1,
                               norm_cfg=norm_cfg)

        if self.depth > 1:
            self.low2 = HourglassAEModule(depth - 1, stage_channels[1:])
        else:
            self.low2 = ConvModule(next_channel,
                                   next_channel,
                                   3,
                                   padding=1,
                                   norm_cfg=norm_cfg)

        self.low3 = ConvModule(next_channel,
                               cur_channel,
                               3,
                               padding=1,
                               norm_cfg=norm_cfg)

        self.up2 = nn.UpsamplingNearest2d(scale_factor=2)
コード例 #4
0
    def __init__(self,
                 downsample_times=4,
                 num_stacks=1,
                 out_channels=34,
                 stage_channels=(256, 384, 512, 640, 768),
                 feat_channels=256,
                 norm_cfg=dict(type='BN', requires_grad=True)):
        # Protect mutable default arguments
        norm_cfg = copy.deepcopy(norm_cfg)
        super().__init__()

        self.num_stacks = num_stacks
        assert self.num_stacks >= 1
        assert len(stage_channels) > downsample_times

        cur_channels = stage_channels[0]

        self.stem = nn.Sequential(
            ConvModule(3, 64, 7, padding=3, stride=2, norm_cfg=norm_cfg),
            ConvModule(64, 128, 3, padding=1, norm_cfg=norm_cfg),
            MaxPool2d(2, 2),
            ConvModule(128, 128, 3, padding=1, norm_cfg=norm_cfg),
            ConvModule(128, feat_channels, 3, padding=1, norm_cfg=norm_cfg),
        )

        self.hourglass_modules = nn.ModuleList([
            nn.Sequential(
                HourglassAEModule(downsample_times,
                                  stage_channels,
                                  norm_cfg=norm_cfg),
                ConvModule(feat_channels,
                           feat_channels,
                           3,
                           padding=1,
                           norm_cfg=norm_cfg),
                ConvModule(feat_channels,
                           feat_channels,
                           3,
                           padding=1,
                           norm_cfg=norm_cfg)) for _ in range(num_stacks)
        ])

        self.out_convs = nn.ModuleList([
            ConvModule(cur_channels,
                       out_channels,
                       1,
                       padding=0,
                       norm_cfg=None,
                       act_cfg=None) for _ in range(num_stacks)
        ])

        self.remap_out_convs = nn.ModuleList([
            ConvModule(out_channels,
                       feat_channels,
                       1,
                       norm_cfg=norm_cfg,
                       act_cfg=None) for _ in range(num_stacks - 1)
        ])

        self.remap_feature_convs = nn.ModuleList([
            ConvModule(feat_channels,
                       feat_channels,
                       1,
                       norm_cfg=norm_cfg,
                       act_cfg=None) for _ in range(num_stacks - 1)
        ])

        self.relu = nn.ReLU(inplace=True)