# scale = 0.8, # instance_mode = ColorMode.IMAGE_BW) # v = v.draw_instance_predictions(outputs['instances'].to('cpu')) # cv2.imshow('image', v.get_image()[:, :, ::-1]) # cv2.waitKey(0) if args.mode == 'infer': val_dicts = get_val_dicts() for d in random.sample(val_dicts, 10): im = cv2.imread(d['file_name']) outputs = predictor(im) v = Visualizer(im[:, :, ::-1], metadata=openimages_val_metadata, scale=0.8, instance_mode=ColorMode.IMAGE_BW) v = v.draw_instance_predictions(outputs['instances'].to('cpu')) cv2.imshow('image', v.get_image()[:, :, ::-1]) cv2.waitKey(0) if args.mode == 'evaluate': print(cfg.DATASETS.TEST[0]) trainer = DefaultTrainer(cfg) model = trainer.build_model(cfg) DetectionCheckpointer(model).load(args.model_pth) evaluator = COCOEvaluator(cfg.DATASETS.TEST[0], cfg, False, output_dir="./output/") val_loader = build_detection_test_loader(cfg, "openimages_val") inference_on_dataset(model, val_loader, evaluator)
v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=0.8) #为什么这里是cfg.DATASETS.TRAIN[0]而不是TEST呢? out = v.draw_instance_predictions(outputs["instances"].to("cpu")) # cv2_imshow(out.get_image()[:, :, ::-1]) out.save("./model_output.jpg") i += 1 # #from detectron2.utils.visualizer import ColorMode # dataset_dicts = load_coco_json("/home/xuyifei/anaconda3/envs/detectron2/lib/python3.7/site-packages/detectron2/datasets/coco/annotations/instances_val.json", "/home/xuyifei/anaconda3/envs/detectron2/lib/python3.7/site-packages/detectron2/datasets/coco/val") # for d in random.sample(dataset_dicts, 3): # im = cv2.imread(d["file_name"]) # outputs = predictor(im) # v = Visualizer(im[:, :, ::-1], # metadata=coco_train_metadata, # scale=0.8, # instance_mode=ColorMode.IMAGE_BW # remove the colors of unsegmented pixels # ) # out = v.draw_instance_predictions(outputs["instances"].to("cpu")) # cv2_imshow(out.get_image()[:, :, ::-1]) print(os.getcwd()) from detectron2.evaluation import COCOEvaluator, inference_on_dataset from detectron2.data import build_detection_test_loader evaluator = COCOEvaluator("coco_val_2", cfg, True, output_dir="./output") val_loader = build_detection_test_loader(cfg, "coco_val_2") print(inference_on_dataset(trainer.model, val_loader, evaluator)) # another equivalent way is to use trainer.test
def build_test_loader(cls, cfg, dataset_name): return build_detection_test_loader(cfg, dataset_name, mapper=DatasetMapper(cfg, False))
def build_test_loader(cls, cfg, dataset_name): """ Returns: iterable """ return build_detection_test_loader(cfg, dataset_name)