Example #1
0
    def __init__(self, cfg: CfgNode):
        """
        Initialize chart-based loss from configuration options

        Args:
            cfg (CfgNode): configuration options
        """
        # fmt: off
        self.heatmap_size = cfg.MODEL.ROI_DENSEPOSE_HEAD.HEATMAP_SIZE
        self.w_points = cfg.MODEL.ROI_DENSEPOSE_HEAD.POINT_REGRESSION_WEIGHTS
        self.w_part = cfg.MODEL.ROI_DENSEPOSE_HEAD.PART_WEIGHTS
        self.use_part_focal_loss = cfg.MODEL.ROI_DENSEPOSE_HEAD.PART_FOCAL_LOSS
        self.w_segm = cfg.MODEL.ROI_DENSEPOSE_HEAD.INDEX_WEIGHTS
        self.w_body = cfg.MODEL.ROI_DENSEPOSE_HEAD.BODY_WEIGHTS
        self.n_segm_chan = cfg.MODEL.ROI_DENSEPOSE_HEAD.NUM_COARSE_SEGM_CHANNELS
        self.w_smooth = cfg.MODEL.ROI_DENSEPOSE_HEAD.SMOOTH_WEIGHTS
        self.w_tv = cfg.MODEL.ROI_DENSEPOSE_HEAD.TV_WEIGHTS
        # fmt: on
        self.segm_trained_by_masks = cfg.MODEL.ROI_DENSEPOSE_HEAD.COARSE_SEGM_TRAINED_BY_MASKS
        # <<<<<<< HEAD
        self.use_mean_uv = cfg.MODEL.ROI_DENSEPOSE_HEAD.MEAN_UV_LOSS

        if self.use_part_focal_loss:
            gamma = cfg.MODEL.ROI_DENSEPOSE_HEAD.PART_FOCAL_GAMMA
            self.focal_loss = FocalLoss(gamma=gamma,
                                        alpha=None,
                                        size_average=False)

        self.use_teacher_student = cfg.MODEL.TEACHER_STUDENT
        self.teacher_cfg = cfg.MODEL.TEACHER_CFG_FILE
        self.teacher_weights = cfg.MODEL.TEACHER_WEIGHTS
        self.teach_ins_wo_gt_dp = cfg.MODEL.TEACH_INS_WO_GT_DP
        self.w_part_teach = cfg.MODEL.TEACH_PART_WEIGHTS
        self.w_points_teach = cfg.MODEL.TEACH_POINT_REGRESSION_WEIGHTS
        if self.use_teacher_student:
            from densepose.engine import Trainer
            from densepose.modeling.densepose_checkpoint import DensePoseCheckpointer
            from densepose.config import get_cfg, add_densepose_config
            self.teacher_cfg = get_cfg()
            add_densepose_config(self.teacher_cfg)
            self.teacher_cfg.merge_from_file(cfg.MODEL.TEACHER_CFG_FILE)
            self.teacher_model = Trainer.build_model(self.teacher_cfg)
            # pdb.set_trace()
            DensePoseCheckpointer(self.teacher_model).load(
                cfg.MODEL.TEACHER_WEIGHTS)
            self.teacher_model.eval()

        self.use_aux_global_s = cfg.MODEL.CONDINST.AUX_SUPERVISION_GLOBAL_S
        self.use_aux_global_skeleton = cfg.MODEL.CONDINST.AUX_SUPERVISION_GLOBAL_SKELETON
        self.use_aux_body_semantics = cfg.MODEL.CONDINST.AUX_SUPERVISION_BODY_SEMANTICS
        self.w_aux_global_s = cfg.MODEL.CONDINST.AUX_SUPERVISION_GLOBAL_S_WEIGHTS
        self.w_aux_global_skeleton = cfg.MODEL.CONDINST.AUX_SUPERVISION_GLOBAL_SKELETON_WEIGHTS
        self.w_aux_body_semantics = cfg.MODEL.CONDINST.AUX_SUPERVISION_BODY_SEMANTICS

        self.pred_ins_body = cfg.MODEL.CONDINST.PREDICT_INSTANCE_BODY

        #     def __call__(
        #         self, proposals_with_gt: List[Instances], densepose_predictor_outputs: Any, images=None
        # =======
        self.segm_loss = MaskOrSegmentationLoss(cfg)
Example #2
0
def setup(args):
    cfg = get_cfg()
    add_densepose_config(cfg)
    cfg.merge_from_file(args.config_file)
    cfg.merge_from_list(args.opts)
    cfg.freeze()
    default_setup(cfg, args)
    # Setup logger for "densepose" module
    setup_logger(output=cfg.OUTPUT_DIR, distributed_rank=comm.get_rank(), name="densepose")
    return cfg
Example #3
0
 def setup_config(cls: type, config_fpath: str, model_fpath: str,
                  args: argparse.Namespace, opts: List[str]):
     cfg = get_cfg()
     add_densepose_config(cfg)
     add_hrnet_config(cfg)
     cfg.merge_from_file(config_fpath)
     cfg.merge_from_list(args.opts)
     if opts:
         cfg.merge_from_list(opts)
     cfg.MODEL.WEIGHTS = model_fpath
     ## MLQ added
     cfg.MODEL.DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
     cfg.DATA_DIR = os.path.dirname(args.input)
     # cfg.SMOOTH_K = args.smooth_k
     cfg.freeze()
     return cfg
Example #4
0
 def setup_config(cls: type, config_fpath: str, model_fpath: str,
                  args: argparse.Namespace, opts: List[str]):
     # pdb.set_trace()
     cfg = get_cfg()
     add_densepose_config(cfg)
     # add_hrnet_config(cfg)
     # add_adet_cfg(cfg, args)
     cfg.merge_from_file(config_fpath)
     cfg.merge_from_list(args.opts)
     if opts:
         cfg.merge_from_list(opts)
     cfg.MODEL.WEIGHTS = model_fpath
     ## MLQ added
     cfg.MODEL.DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
     cfg.DATA_DIR = os.path.dirname(args.input)
     cfg.SMOOTH_K = args.smooth_k
     # Set score_threshold for builtin models
     cfg.MODEL.RETINANET.SCORE_THRESH_TEST = args.confidence_threshold
     cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = args.confidence_threshold
     cfg.MODEL.FCOS.INFERENCE_TH_TEST = args.confidence_threshold
     cfg.MODEL.MEInst.INFERENCE_TH_TEST = args.confidence_threshold
     cfg.MODEL.PANOPTIC_FPN.COMBINE.INSTANCES_CONFIDENCE_THRESH = args.confidence_threshold
     cfg.freeze()
     return cfg