def setup(args): """ Create configs and perform basic setups. """ TEST_NAME = 'usopen_nadal_test2' register_coco_instances(TEST_NAME, {}, f"./data/{TEST_NAME}/annotations.json", f"./data/{TEST_NAME}/images") cfg = get_cfg() add_pointrend_config(cfg) cfg.merge_from_file( "./projects/PointRend/configs/InstanceSegmentation/pointrend_rcnn_R_50_FPN_3x_coco.yaml" ) cfg.DATASETS.TEST = (TEST_NAME, ) cfg.MODEL.WEIGHTS = "./models/pointrend_rcnn_R_50_FPN_3x.pkl" # initialize from model zoo cfg.OUTPUT_DIR = f'./output/{TEST_NAME}_pointrend' # cfg.merge_from_file(args.config_file) # cfg.merge_from_list(args.opts) cfg.freeze() default_setup(cfg, args) return cfg
def setup_cfg(args): cfg = get_cfg() cfg.DATALOADER.NUM_WORKERS = 0 add_pointrend_config(cfg) cfg.merge_from_file(args.config_file) cfg.merge_from_list(args.opts) cfg.freeze() return cfg
def setup_cfg(args): cfg = get_cfg() # cuda context is initialized before creating dataloader, so we don't fork anymore cfg.DATALOADER.NUM_WORKERS = 0 add_pointrend_config(cfg) cfg.merge_from_file(args.config_file) cfg.merge_from_list(args.opts) cfg.freeze() return cfg
def setup(args): """ Create configs and perform basic setups. """ cfg = get_cfg() add_pointrend_config(cfg) cfg.merge_from_file(args.config_file) cfg.merge_from_list(args.opts) cfg.freeze() default_setup(cfg, args) return cfg
def setup(args): """ Create configs and perform basic setups. """ cfg = get_cfg() add_pointrend_config(cfg) add_point_sup_config(cfg) cfg.merge_from_file(args.config_file) cfg.merge_from_list(args.opts) cfg.freeze() default_setup(cfg, args) # Setup logger for "point_sup" module setup_logger(output=cfg.OUTPUT_DIR, distributed_rank=comm.get_rank(), name="point_sup") return cfg
def setup(args): """ Create configs and perform basic setups. """ cfg = get_cfg() add_pointrend_config(cfg) cfg.merge_from_file(args.config_file) cfg.merge_from_list(args.opts) # if args.eval_only: # cfg.MODEL.WEIGHTS = "/root/detectron2/projects/PointRend/log_50_50/model_0014999.pth" cfg.freeze() default_setup(cfg, args) return cfg
def test_PointRend_mask_head_tracing(self): cfg = model_zoo.get_config( "COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml") point_rend.add_pointrend_config(cfg) cfg.MODEL.ROI_HEADS.IN_FEATURES = ["p2", "p3"] cfg.MODEL.ROI_MASK_HEAD.NAME = "PointRendMaskHead" cfg.MODEL.ROI_MASK_HEAD.POOLER_TYPE = "" cfg.MODEL.ROI_MASK_HEAD.POINT_HEAD_ON = True chan = 256 head = point_rend.PointRendMaskHead( cfg, { "p2": ShapeSpec(channels=chan, stride=4), "p3": ShapeSpec(channels=chan, stride=8), }, ) def gen_inputs(h, w, N): p2 = torch.rand(1, chan, h, w) p3 = torch.rand(1, chan, h // 2, w // 2) boxes = random_boxes(N, max_coord=h) return p2, p3, boxes class Wrap(nn.ModuleDict): def forward(self, p2, p3, boxes): features = { "p2": p2, "p3": p3, } inst = Instances((p2.shape[2] * 4, p2.shape[3] * 4)) inst.pred_boxes = Boxes(boxes) inst.pred_classes = torch.zeros(inst.__len__(), dtype=torch.long) out = self.head(features, [inst])[0] return out.pred_masks model = Wrap({"head": head}) model.eval() with torch.no_grad(), patch_builtin_len(): traced = torch.jit.trace(model, gen_inputs(302, 208, 20)) inputs = gen_inputs(100, 120, 30) out_eager = model(*inputs) out_trace = traced(*inputs) self.assertTrue(torch.allclose(out_eager, out_trace))
from detectron2.data import MetadataCatalog coco_metadata = MetadataCatalog.get("coco_2017_val") # import PointRend project from detectron2.projects import point_rend # get the pretrained model config_R50 = "projects/PointRend/configs/InstanceSegmentation/pointrend_rcnn_R_50_FPN_3x_coco.yaml" config_R101 = "projects/PointRend/configs/InstanceSegmentation/pointrend_rcnn_R_101_FPN_3x_coco.yaml" config_X101 = "projects/PointRend/configs/InstanceSegmentation/pointrend_rcnn_X_101_32x8d_FPN_3x_coco.yaml" weights_R50 = "detectron2://PointRend/InstanceSegmentation/pointrend_rcnn_R_50_FPN_3x_coco/164955410/model_final_edd263.pkl" weights_R101 = "detectron2://PointRend/InstanceSegmentation/pointrend_rcnn_R_101_FPN_3x_coco/28119983/model_final_3f4d2a.pkl" weights_X101 = "detectron2://PointRend/InstanceSegmentation/pointrend_rcnn_X_101_32x8d_FPN_3x_coco/28119989/model_final_ba17b9.pkl" cfg = get_cfg() point_rend.add_pointrend_config(cfg) cfg.merge_from_file(config_R101) cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5 cfg.MODEL.WEIGHTS = weights_R101 predictor = DefaultPredictor(cfg) def get_void_from_mask(person_mask_closed, height, void_cri_top, void_cri_bottom): top_void = 0 bottom_void = 0 for h_count in range(height): line_mask_int = person_mask_clos[h_count, :, 0].astype(int) if h_count < height * 0.5: