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)
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.]))
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))
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)
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])
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)
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)