def __init__(self, cfg): self.cls_loss_func = SigmoidFocalLoss(cfg.MODEL.FCOS.LOSS_GAMMA, cfg.MODEL.FCOS.LOSS_ALPHA) # we make use of IOU Loss for bounding boxes regression, # but we found that L1 in log scale can yield a similar performance self.box_reg_loss_func = IOULoss() self.centerness_loss_func = nn.BCEWithLogitsLoss()
def __init__(self, cfg): self.cls_loss_func = SigmoidFocalLoss(cfg.MODEL.FCOS.LOSS_GAMMA, cfg.MODEL.FCOS.LOSS_ALPHA) self.fpn_strides = cfg.MODEL.FCOS.FPN_STRIDES self.center_sampling_radius = cfg.MODEL.FCOS.CENTER_SAMPLING_RADIUS self.iou_loss_type = cfg.MODEL.FCOS.IOU_LOSS_TYPE self.norm_reg_targets = cfg.MODEL.FCOS.NORM_REG_TARGETS # we make use of IOU Loss for bounding boxes regression, # but we found that L1 in log scale can yield a similar performance self.box_reg_loss_func = IOULoss(self.iou_loss_type) self.centerness_loss_func = nn.BCEWithLogitsLoss(reduction="sum")
def __init__(self, cfg): self.cls_loss_func = SigmoidFocalLoss( cfg.MODEL.FCOS.LOSS_GAMMA, cfg.MODEL.FCOS.LOSS_ALPHA ) # class_weights = torch.ones(cfg.MODEL.FCOS.NUM_CLASSES).cuda() # class_weights[1] = 0.4 # self.cls_loss_func_ce = nn.CrossEntropyLoss(reduction="sum") self.fpn_strides = cfg.MODEL.FCOS.FPN_STRIDES self.center_sampling_radius = cfg.MODEL.FCOS.CENTER_SAMPLING_RADIUS self.iou_loss_type = cfg.MODEL.FCOS.IOU_LOSS_TYPE self.norm_reg_targets = cfg.MODEL.FCOS.NORM_REG_TARGETS # we make use of IOU Loss for bounding boxes regression, # but we found that L1 in log scale can yield a similar performance self.box_reg_loss_func = IOULoss(self.iou_loss_type) self.f1_loss = F1_Loss(num_classes=cfg.MODEL.FCOS.NUM_CLASSES)
def __init__(self, cfg, proposal_matcher, fg_bg_sampler, box_coder, generate_labels_func): """ Arguments: proposal_matcher (Matcher) fg_bg_sampler (BalancedPositiveNegativeSampler) box_coder (BoxCoder) """ # self.target_preparator = target_preparator self.proposal_matcher = proposal_matcher self.fg_bg_sampler = fg_bg_sampler self.box_coder = box_coder self.copied_fields = [] self.iou_loss_type = cfg.MODEL.FCOS.IOU_LOSS_TYPE self.generate_labels_func = generate_labels_func self.discard_cases = ['not_visibility', 'between_thresholds'] self.box_reg_loss_func = IOULoss(self.iou_loss_type)
def __init__(self, cfg): self.cls_loss_func = SigmoidFocalLoss(cfg.MODEL.EMBED_MASK.LOSS_GAMMA, cfg.MODEL.EMBED_MASK.LOSS_ALPHA) self.fpn_strides = cfg.MODEL.EMBED_MASK.FPN_STRIDES self.center_on = cfg.MODEL.EMBED_MASK.CENTER_ON self.center_sampling_radius = cfg.MODEL.EMBED_MASK.CENTER_POS_RADIOS self.iou_loss_type = cfg.MODEL.EMBED_MASK.IOU_LOSS_TYPE self.norm_reg_targets = cfg.MODEL.EMBED_MASK.NORM_REG_TARGETS self.box_reg_loss_func = IOULoss(self.iou_loss_type) self.centerness_loss_func = nn.BCEWithLogitsLoss(reduction="sum") ########## mask prediction ############ self.mask_loss_func = LovaszHinge(reduction='none') self.mask_scale_factor = cfg.MODEL.EMBED_MASK.MASK_SCALE_FACTOR self.object_sizes_of_interest = [ [-1, cfg.MODEL.EMBED_MASK.FPN_INTEREST_SPLIT[0]], [ cfg.MODEL.EMBED_MASK.FPN_INTEREST_SPLIT[0], cfg.MODEL.EMBED_MASK.FPN_INTEREST_SPLIT[1] ], [ cfg.MODEL.EMBED_MASK.FPN_INTEREST_SPLIT[1], cfg.MODEL.EMBED_MASK.FPN_INTEREST_SPLIT[2] ], [ cfg.MODEL.EMBED_MASK.FPN_INTEREST_SPLIT[2], cfg.MODEL.EMBED_MASK.FPN_INTEREST_SPLIT[3] ], [cfg.MODEL.EMBED_MASK.FPN_INTEREST_SPLIT[3], INF] ] self.sample_in_mask = cfg.MODEL.EMBED_MASK.SAMPLE_IN_MASK self.sample_pos_iou_th = cfg.MODEL.EMBED_MASK.SAMPLE_POS_IOU_TH self.box_padding = cfg.MODEL.EMBED_MASK.BOX_PADDING self.fix_margin = cfg.MODEL.EMBED_MASK.FIX_MARGIN prior_margin = cfg.MODEL.EMBED_MASK.PRIOR_MARGIN self.init_margin = -math.log(0.5) / (prior_margin**2) self.loss_mask_alpha = cfg.MODEL.EMBED_MASK.LOSS_MASK_ALPHA self.loss_smooth_alpha = cfg.MODEL.EMBED_MASK.LOSS_SMOOTH_ALPHA