def __init__(self, cfg):
        super(ReferExpRCNN_Old, self).__init__(cfg)

        # Weight losses
        self.weight_dict = {
            'loss_objectness': cfg.LOSS_WEIGHTS.loss_objectness,
            'loss_rpn_box_reg': cfg.LOSS_WEIGHTS.loss_rpn_box_reg,
            'loss_classifier': cfg.LOSS_WEIGHTS.loss_classifier,
            'loss_box_reg': cfg.LOSS_WEIGHTS.loss_box_reg,
            'loss_mask': cfg.LOSS_WEIGHTS.loss_mask
        }

        # Text Embedding Network
        self.wordnet = LanguageModel(cfg)

        # Ref Localization Network
        if self.hha_backbone:
            self.ref_rpn = build_rpn(
                cfg, self.image_backbone.out_channels * 2 + 1024)
            self.ref_roi_heads = build_roi_heads(
                cfg, self.image_backbone.out_channels * 2 + 1024)
        else:
            self.ref_rpn = build_rpn(cfg,
                                     self.image_backbone.out_channels + 1024)
            self.ref_roi_heads = build_roi_heads(
                cfg, self.image_backbone.out_channels + 1024)
    def __init__(self, cfg, weight_dict=None, extra_features=0):
        super(DepthRCNN, self).__init__()

        # Weight losses
        if weight_dict is None:
            self.weight_dict = {
                'loss_objectness': cfg.LOSS_WEIGHTS.loss_objectness,
                'loss_rpn_box_reg': cfg.LOSS_WEIGHTS.loss_rpn_box_reg,
                'loss_classifier': cfg.LOSS_WEIGHTS.loss_classifier,
                'loss_box_reg': cfg.LOSS_WEIGHTS.loss_box_reg,
                'loss_mask': cfg.LOSS_WEIGHTS.loss_mask
            }
        else:
            self.weight_dict = weight_dict

        self.image_backbone = build_backbone(cfg)
        self.freeze_backbone(self.image_backbone,
                             cfg.MODEL.BACKBONE.FREEZE_CONV_BODY_AT)
        self.roi_heads = None
        if cfg.MODEL.BACKBONE.DEPTH:
            self.hha_backbone = build_backbone(cfg)
            self.freeze_backbone(self.hha_backbone,
                                 cfg.MODEL.BACKBONE.FREEZE_CONV_BODY_AT)
            self.rpn = build_rpn(
                cfg, self.image_backbone.out_channels * 2 + extra_features)
            if not cfg.MODEL.RPN_ONLY:
                self.roi_heads = build_roi_heads(
                    cfg, self.image_backbone.out_channels * 2 + extra_features)
        else:
            self.hha_backbone = None
            self.rpn = build_rpn(
                cfg, self.image_backbone.out_channels + extra_features)
            if not cfg.MODEL.RPN_ONLY:
                self.roi_heads = build_roi_heads(
                    cfg, self.image_backbone.out_channels + extra_features)
Esempio n. 3
0
    def __init__(self, exp_dict):
        super().__init__()
        cfg_base_path = "./models/configs/"

        self.n_classes = 21
        cfg_path = cfg_base_path + "e2e_mask_rcnn_R_50_FPN_1x.yaml"

        self.cfg = cfg
        self.cfg.merge_from_file(cfg_path)

        self.cfg.MODEL.ROI_BOX_HEAD.NUM_CLASSES = self.n_classes

        # ---------------
        # build model
        self.backbone_fpn = backbone.build_backbone(self.cfg)
        self.rpn = rpn.build_rpn(self.cfg, self.backbone_fpn.out_channels)
        self.roi_heads = roi_heads.build_roi_heads(
            self.cfg, self.backbone_fpn.out_channels)

        # ---------------
        # load checkpoint
        checkpoint = _load_file(self.cfg)
        load_state_dict(self, checkpoint.pop("model"))

        #--------
        # Opt stage
        self.cfg.SOLVER.BASE_LR = ((0.0025 * 8) /
                                   (16 / float(exp_dict["batch_size"])))

        optimizer = make_optimizer(self.cfg, self)
        scheduler = make_lr_scheduler(self.cfg, optimizer)

        self.opt = optimizer
        self.scheduler = scheduler
Esempio n. 4
0
    def init_maskrcnn_benchmark(self, args):
        if 'datasets' in sys.modules:
            del sys.modules['datasets']
        this_dir = os.path.dirname(__file__)
        lib_path = os.path.join(this_dir, '../../external/maskrcnn-benchmark')
        sys.path.insert(0, lib_path)

        # config
        from maskrcnn_benchmark.utils.env import setup_environment  # noqa F401 isort:skip
        from maskrcnn_benchmark.config import cfg
        self.cfg = cfg
        #cfg.MODEL.BACKBONE.OUT_CHANNELS = 832
        #cfg.MODEL.RESNETS.RES2_OUT_CHANNELS = 208
        cfg.MODEL.RPN.PRE_NMS_TOP_N_TEST = 6000
        cfg.MODEL.RPN.POST_NMS_TOP_N_TEST = 1000
        cfg.MODEL.ROI_HEADS.SCORE_THRESH = 0
        cfg.MODEL.ROI_HEADS.DETECTIONS_PER_IMG = 0

        # bind classes/methods from MaskRCNN-Benchmark
        from maskrcnn_benchmark.modeling.rpn.rpn import build_rpn
        from maskrcnn_benchmark.modeling.roi_heads.roi_heads import build_roi_heads
        from maskrcnn_benchmark.structures.image_list import to_image_list
        from maskrcnn_benchmark.structures.bounding_box import BoxList
        from maskrcnn_benchmark.modeling.backbone import build_backbone

        self.basenet = build_backbone(cfg)
        self.rpn = build_rpn(cfg)
        self.roi_heads = build_roi_heads(cfg)
        self.to_image_list = to_image_list
        self.BoxList = BoxList
Esempio n. 5
0
    def __init__(self, cfg):
        super(PanopticModel, self).__init__()

        self.backbone = build_backbone(cfg)
        self.loss = SegLoss()
        self.training = True
        self.rpn = build_rpn(cfg, self.backbone.out_channels)
        self.roi_heads = build_roi_heads(cfg, self.backbone.out_channels)
        self.panoptic = PanopticRCNN(
            cfg, num_classes=cfg.MODEL.PANOPTIC.NUM_CLASSES)