示例#1
0
    def __init__(self, resnet_type, num_classes=80, use_gn=False, planes=512):
        super(YOLOF, self).__init__()
        self.backbone = ResNetBackbone(resnet_type=resnet_type)
        expand_ratio = {
            "resnet18": 1,
            "resnet34": 1,
            "resnet50": 4,
            "resnet101": 4,
            "resnet152": 4
        }
        C5_inplanes = int(512 * expand_ratio[resnet_type])
        self.dila_encoder = DilatedEncoder(C5_inplanes)

        self.num_classes = num_classes
        self.planes = planes

        self.clsregcnt_head = FCOSClsRegCntHead(self.planes,
                                                self.num_classes,
                                                num_layers=4,
                                                prior=0.01,
                                                use_gn=use_gn,
                                                cnt_on_reg=True)

        self.strides = torch.tensor([16], dtype=torch.float)
        self.positions = FCOSPositions(self.strides)

        self.scales = nn.Parameter(torch.tensor([1.], dtype=torch.float32))
        self.trans = nn.ConvTranspose2d(in_channels=C5_inplanes,
                                        out_channels=int(C5_inplanes / 2),
                                        kernel_size=4,
                                        stride=2,
                                        padding=1,
                                        bias=False)
        self.c4_out = nn.Conv2d(C5_inplanes, C5_inplanes, 1)
示例#2
0
    def __init__(self, resnet_type, num_classes=80, use_gn=False, planes=512):
        super(YOLOF, self).__init__()
        self.backbone = ResNetBackbone(resnet_type=resnet_type)
        expand_ratio = {
            "resnet18": 1,
            "resnet34": 1,
            "resnet50": 4,
            "resnet101": 4,
            "resnet152": 4
        }
        C5_inplanes = int(512 * expand_ratio[resnet_type])
        self.dila_encoder = DilatedEncoder(C5_inplanes)

        self.num_classes = num_classes
        self.planes = planes

        self.clsregcnt_head = FCOSClsRegCntHead(self.planes,
                                                self.num_classes,
                                                num_layers=4,
                                                prior=0.01,
                                                use_gn=use_gn,
                                                cnt_on_reg=True)

        self.strides = torch.tensor([32], dtype=torch.float)
        self.positions = FCOSPositions(self.strides)

        self.scales = nn.Parameter(torch.tensor([1.], dtype=torch.float32))
    def __init__(self, resnet_type, num_classes=80, planes=256):
        super(FCOS, self).__init__()
        self.backbone = ResNetBackbone(resnet_type=resnet_type)
        expand_ratio = {
            "resnet18": 1,
            "resnet34": 1,
            "resnet50": 4,
            "resnet101": 4,
            "resnet152": 4
        }
        C3_inplanes, C4_inplanes, C5_inplanes = int(
            128 * expand_ratio[resnet_type]), int(
                256 * expand_ratio[resnet_type]), int(
                    512 * expand_ratio[resnet_type])
        self.fpn = RetinaFPN(C3_inplanes,
                             C4_inplanes,
                             C5_inplanes,
                             planes,
                             use_p5=True)

        self.num_classes = num_classes
        self.planes = planes

        self.cls_head = FCOSClsHead(self.planes,
                                    self.num_classes,
                                    num_layers=4,
                                    prior=0.01)
        self.regcenter_head = FCOSRegCenterHead(self.planes, num_layers=4)

        self.strides = torch.tensor([8, 16, 32, 64, 128], dtype=torch.float)
        self.positions = FCOSPositions(self.strides)

        self.scales = nn.Parameter(torch.FloatTensor([1., 1., 1., 1., 1.]))
示例#4
0
    def __init__(self,
                 resnet_type,
                 num_classes=80,
                 use_TransConv=False,
                 use_gn=False,
                 fpn_bn=False,
                 planes=256):
        super(FCOS, self).__init__()
        self.backbone = ResNetBackbone(resnet_type=resnet_type)
        expand_ratio = {
            "resnet18": 1,
            "resnet34": 1,
            "resnet50": 4,
            "resnet101": 4,
            "resnet152": 4
        }
        C3_inplanes, C4_inplanes, C5_inplanes = int(
            128 * expand_ratio[resnet_type]), int(
                256 * expand_ratio[resnet_type]), int(
                    512 * expand_ratio[resnet_type])
        if use_TransConv:
            self.fpn = RetinaFPN_TransConv(C3_inplanes,
                                           C4_inplanes,
                                           C5_inplanes,
                                           planes,
                                           use_p5=True,
                                           fpn_bn=fpn_bn)
        else:
            self.fpn = RetinaFPN(C3_inplanes,
                                 C4_inplanes,
                                 C5_inplanes,
                                 planes,
                                 use_p5=True,
                                 fpn_bn=fpn_bn)

        self.num_classes = num_classes
        self.planes = planes

        self.clsregcnt_head = FCOSClsRegCntHead(self.planes,
                                                self.num_classes,
                                                num_layers=4,
                                                prior=0.01,
                                                use_gn=use_gn,
                                                cnt_on_reg=True)

        self.strides = torch.tensor([8, 16, 32, 64, 128], dtype=torch.float)
        self.positions = FCOSPositions(self.strides)

        self.scales = nn.Parameter(
            torch.tensor([1., 1., 1., 1., 1.], dtype=torch.float32))
示例#5
0
    def __init__(self, resnet_type, config):
        super(YOLOF, self).__init__()
        self.backbone = ResNetBackbone(resnet_type=resnet_type)
        expand_ratio = {
            "resnet18": 1,
            "resnet34": 1,
            "resnet50": 4,
            "resnet101": 4,
            "resnet152": 4
        }
        C5_inplanes = int(512 * expand_ratio[resnet_type])

        self.multi_task = config.multi_task

        self.num_classes = config.num_classes
        self.dubble_run = config.dubble_run

        self.clsregcnt_head_1 = nn.Sequential(
            NormalNeck(C5_inplanes, config.yolof_encoder_channels),
            FCOSClsRegCntHead(config.yolof_encoder_channels,
                              self.num_classes,
                              num_layers=4,
                              prior=config.prior,
                              use_gn=config.use_GN_head,
                              cnt_on_reg=config.cnt_on_reg))
        if self.multi_task:
            if config.use_ttf:
                self.clsregcnt_head_2 = nn.Sequential(
                    TTFNeck(C5_inplanes, config.ttf_out_channels,
                            config.yolof_encoder_channels),
                    FCOSClsRegCntHead(config.yolof_encoder_channels,
                                      self.num_classes,
                                      num_layers=4,
                                      prior=config.prior,
                                      use_gn=config.use_GN_head,
                                      cnt_on_reg=config.cnt_on_reg))
            else:
                self.clsregcnt_head_2 = nn.Sequential(
                    NormalNeck(C5_inplanes, config.yolof_encoder_channels),
                    FCOSClsRegCntHead(config.yolof_encoder_channels,
                                      self.num_classes,
                                      num_layers=4,
                                      prior=config.prior,
                                      use_gn=config.use_GN_head,
                                      cnt_on_reg=config.cnt_on_reg))

        self.strides = torch.tensor(config.strides, dtype=torch.float)
        self.positions = FCOSPositions(self.strides)
        self.scale = torch.tensor(1, dtype=torch.float, requires_grad=False)
示例#6
0
    def __init__(self, resnet_type, num_classes=80):
        super(CenterNet, self).__init__()
        self.backbone = ResNetBackbone(resnet_type=resnet_type)
        expand_ratio = {
            "resnet18": 1,
            "resnet34": 1,
            "resnet50": 4,
            "resnet101": 4,
            "resnet152": 4
        }
        C5_inplanes = int(512 * expand_ratio[resnet_type])

        self.centernet_head = CenterNetHetRegWhHead(
            C5_inplanes,
            num_classes,
            num_layers=3,
            out_channels=[256, 128, 64])
示例#7
0
    def __init__(self, resnet_type, config):
        super(YOLOF, self).__init__()
        self.backbone = ResNetBackbone(resnet_type=resnet_type)
        expand_ratio = {
            "resnet18": 1,
            "resnet34": 1,
            "resnet50": 4,
            "resnet101": 4,
            "resnet152": 4
        }
        C5_inplanes = int(512 * expand_ratio[resnet_type])
        self.inplanes = C5_inplanes
        self.up_layers = []
        self.shortcuts = []

        self.num_layers = config.num_layers
        self.ttf_out_channels = config.ttf_out_channels
        for i in range(self.num_layers):
            self.up_layers.append(
                UP_layer(self.inplanes, self.ttf_out_channels[i]))
            self.shortcuts.append(
                ShortCut(int(C5_inplanes / (2**(i + 1))),
                         self.ttf_out_channels[i]))
            self.inplanes = self.ttf_out_channels[i]
        self.dila_encoder = DilatedEncoder(self.inplanes,
                                           config.yolof_encoder_channels)
        self.multi_task = config.multi_task

        self.num_classes = config.num_classes

        self.clsregcnt_head = FCOSClsRegCntHead(config.yolof_encoder_channels,
                                                self.num_classes,
                                                num_layers=4,
                                                prior=config.prior,
                                                use_gn=config.use_GN_head,
                                                cnt_on_reg=config.cnt_on_reg)

        self.strides = torch.tensor(config.strides, dtype=torch.float)
        self.positions = FCOSPositions(self.strides)
        self.scale = torch.tensor(1, dtype=torch.float)
    def __init__(self, resnet_type, num_anchors=9, num_classes=80, planes=256):
        super(RetinaNet, self).__init__()
        self.backbone = ResNetBackbone(resnet_type=resnet_type)
        expand_ratio = {
            "resnet18": 1,
            "resnet34": 1,
            "resnet50": 4,
            "resnet101": 4,
            "resnet152": 4
        }
        C3_inplanes, C4_inplanes, C5_inplanes = int(
            128 * expand_ratio[resnet_type]), int(
                256 * expand_ratio[resnet_type]), int(
                    512 * expand_ratio[resnet_type])
        self.fpn = RetinaFPN(C3_inplanes, C4_inplanes, C5_inplanes, planes)
        self.pan = PAN(planes)

        self.num_anchors = num_anchors
        self.num_classes = num_classes
        self.planes = planes

        self.cls_head = RetinaClsHead(self.planes,
                                      self.num_anchors,
                                      self.num_classes,
                                      num_layers=4,
                                      prior=0.01)

        self.reg_head = RetinaRegHead(self.planes,
                                      self.num_anchors,
                                      num_layers=4)

        self.areas = torch.tensor([[32, 32], [64, 64], [128, 128], [256, 256],
                                   [512, 512]])
        self.ratios = torch.tensor([0.5, 1, 2])
        self.scales = torch.tensor([2**0, 2**(1.0 / 3.0), 2**(2.0 / 3.0)])
        self.strides = torch.tensor([8, 16, 32, 64, 128], dtype=torch.float)

        self.anchors = RetinaAnchors(self.areas, self.ratios, self.scales,
                                     self.strides)
    def __init__(self, resnet_type, num_classes=80, planes=256):
        super(FCOS, self).__init__()
        self.backbone = ResNetBackbone(resnet_type=resnet_type)
        expand_ratio = {
            "resnet18": 1,
            "resnet34": 1,
            "resnet50": 4,
            "resnet101": 4,
            "resnet152": 4
        }
        C3_inplanes, C4_inplanes, C5_inplanes = int(
            128 * expand_ratio[resnet_type]), int(
                256 * expand_ratio[resnet_type]), int(
                    512 * expand_ratio[resnet_type])
        self.fpn = RetinaFPN(C3_inplanes, C4_inplanes, C5_inplanes, planes)

        self.num_classes = num_classes
        self.planes = planes

        self.cls_head = FCOSClsHead(self.planes,
                                    self.num_classes,
                                    num_layers=4,
                                    prior=0.01)
        self.regcenter_head = FCOSRegCenterHead(self.planes, num_layers=4)
示例#10
0
    def __init__(self,
                 resnet_type,
                 num_classes=80,
                 multi_head=False,
                 selayer=True,
                 use_ttf=False,
                 cls_mlp=False,
                 deploy=False):
        super(CenterNet, self).__init__()
        self.backbone = ResNetBackbone(resnet_type=resnet_type)
        expand_ratio = {
            "resnet18": 1,
            "resnet34": 1,
            "resnet50": 4,
            "resnet101": 4,
            "resnet152": 4
        }
        C5_inplanes = int(512 * expand_ratio[resnet_type])
        self.multi_head = multi_head
        self.use_ttf = use_ttf
        self.deploy = deploy

        self.centernet_head = CenterNetHetRegWhHead(
            C5_inplanes,
            num_classes[0],
            num_layers=3,
            out_channels=[256, 128, 64])

        if multi_head:
            if selayer:
                if use_ttf:
                    self.centernet_head_2 = nn.Sequential(
                        TTFHead(C5_inplanes,
                                num_classes[1],
                                out_channels=[256, 128, 64],
                                selayer=selayer))
                else:
                    self.centernet_head_2 = nn.Sequential(
                        SEBlock(C5_inplanes),
                        CenterNetHetRegWhHead(C5_inplanes,
                                              num_classes[1],
                                              num_layers=3,
                                              out_channels=[256, 128, 64]))

            else:
                if use_ttf:
                    self.centernet_head_2 = TTFHead(
                        C5_inplanes,
                        num_classes[1],
                        out_channels=[256, 128, 64],
                        selayer=selayer)
                else:
                    self.centernet_head_2 = CenterNetHetRegWhHead(
                        C5_inplanes,
                        num_classes[1],
                        num_layers=3,
                        out_channels=[256, 128, 64])
        self.cls_mlp = cls_mlp
        if cls_mlp:
            self.cls = nn.Conv2d(num_classes[0], 1, 1)
            self.offset = nn.Conv2d(2, 2, 1)
            self.wh = nn.Conv2d(2, 2, 1)