def predict_and_plot_differences(dataset, img_id): original_image, image_meta, gt_class_id, gt_box, gt_mask =\ modellib.load_image_gt(dataset, config, img_id, use_mini_mask=False) results = model.detect([original_image], verbose=0) r = results[0] visualize.display_differences( original_image, gt_box, gt_class_id, gt_mask, r['rois'], r['class_ids'], r['scores'], r['masks'], class_names = ['tumor'], title="", ax=get_ax(), show_mask=True, show_box=True)
utils.compute_ap_range(gt_bbox, gt_class_id, gt_mask, r['rois'], r['class_ids'], r['scores'], r['masks'], verbose=1) visualize.display_differences(image, gt_bbox, gt_class_id, gt_mask, r['rois'], r['class_ids'], r['scores'], r['masks'], dataset.class_names, ax=get_ax(), show_box=False, show_mask=False, iou_threshold=0.5, score_threshold=0.5) # Display predictions only # visualize.display_instances(image, r['rois'], r['masks'], r['class_ids'], # dataset.class_names, r['scores'], ax=get_ax(1), # show_bbox=False, show_mask=False, # title="Predictions") # Display Ground Truth only # visualize.display_instances(image, gt_bbox, gt_mask, gt_class_id,
def process( self, args ): """ Run inference with trained model """ # load validation / test dataset test_ds = ShipDataset( (768,768) ) test_ds.load_info( os.path.join( args.data_path, 'test' ) ) test_ds.prepare() # Load weights print("Loading weights ", args.model_pathname) self._model.load_weights(args.model_pathname, by_name=True) for sample in range ( 10 ): # pick random image image_id = random.choice( test_ds.image_ids ) image, image_meta, gt_class_id, gt_bbox, gt_mask = modellib.load_image_gt( test_ds, self._config, image_id, use_mini_mask=False ) # get image info info = test_ds.image_info[ image_id ] print("image ID: {}.{} ({}) {}".format( info["source"], info["id"], image_id, test_ds.image_reference(image_id) ) ) # run object detection results = self._model.detect([image], verbose=1) r = results[0] # compute AP over range 0.5 to 0.95 and print it utils.compute_ap_range( gt_bbox, gt_class_id, gt_mask, r['rois'], r['class_ids'], r['scores'], r['masks'], verbose=1) # display results visualize.display_instances( image, r['rois'], r['masks'], r['class_ids'], test_ds.class_names, r['scores'], title="Predictions", show_bbox=False) # display actual vs predicted differences visualize.display_differences( image, gt_bbox, gt_class_id, gt_mask, r['rois'], r['class_ids'], r['scores'], r['masks'], test_ds.class_names, title="Actual vs Predict Difference" ) return
modellib.load_image_gt(dataset, inference_config, image_id, use_mini_mask=False) print(dataset.image_info[image_id]) log("original_image", original_image) log("image_meta", image_meta) log("gt_class_id", gt_class_id) log("gt_bbox", gt_bbox) log("gt_mask", gt_mask) results = model.detect([original_image], verbose=0) r = results[0] #visualize.display_instances(original_image, gt_bbox, gt_mask, gt_class_id, # dataset.class_names, figsize=(8, 8)) visualize.display_differences(original_image, gt_bbox, gt_class_id, gt_mask, r["rois"], r["class_ids"], r["scores"], r['masks'], dataset.class_names, show_box=False) # Compute VOC-Style mAP @ IoU=0.5 # Running on 10 images. Increase for better accuracy. #image_ids = np.random.choice(dataset.image_ids, 1000) #print(image_ids) #print(dataset.image_ids) APs = [] precision = {} precision[1] = []
# Recreate the model in inference mode model = modellib.MaskRCNN(mode="inference", config=inference_config, model_dir=MODEL_DIR) model.load_weights(COCO_MODEL_PATH, by_name=True) PIC_NAME = "temporary_dataset/" dataset_root_path = os.path.join(ROOT_DIR, PIC_NAME) img_floder = os.path.join(dataset_root_path, "pic") mask_floder = os.path.join(dataset_root_path, "cv2_mask") imglist = os.listdir(img_floder) gt_num = len(imglist) # Validation dataset dataset_test = DrugDataset() dataset_test.load_shapes(gt_num, img_floder, mask_floder, imglist, dataset_root_path) dataset_test.prepare() for i in range(gt_num): original_image, image_meta, gt_class_id, gt_bbox, gt_mask = modellib.load_image_gt( dataset_test, inference_config, i, use_mini_mask=False) results = model.detect([original_image], verbose=0) r = results[0] visualize.display_differences(imglist[i], original_image, gt_bbox, np.asarray([1]), gt_mask, r['rois'], np.asarray([1]), r['scores'], r['masks'], class_names)