Пример #1
0
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,
Пример #3
0
    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
Пример #4
0
    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] = []
Пример #5
0
# 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)