jatin-tec
fix
3d40b10
import gradio as gr
from PIL import Image
import sys
#Set the Working Cloned directory - To find local version of the library
sys.path.append('/home/user/app/Mask_RCNN')
import mrcnn.model as modellib
from mrcnn.config import Config
import pickle
def get_predictions_from_mask_rcnn(mask_model, image):
predictions_mask_rcnn = []
# Run Object Detection using Mask RCNN
results = mask_model.detect(image, verbose=0)
# Get the Results
r = results[0]
# Get Predictions ROIs, Class IDs, Scores and Masks
pred_boxes = r['rois']
pred_class_ids = r['class_ids']
pred_scores = r['scores']
pred_masks = r['masks']
print(f"predictions - rois shape: {pred_boxes.shape}, scores: {pred_scores}, masks shape: {pred_masks.shape}")
# Update the Predictions
predictions_mask_rcnn.append((pred_boxes, pred_class_ids, pred_scores, pred_masks))
# Finally, return the Predictions
return predictions_mask_rcnn
# Load Config
def load_config(filepath):
with open(filepath, 'rb') as f:
return pickle.load(f)
class RSNA_Detect_Config(Config):
"""Configuration for training pneumonia detection on the RSNA pneumonia dataset
Overrides values in the base Config class
"""
# Provided the configuration a recognizable name
NAME = 'RSNA_pneumonia'
# Train on 1 GPU and 8 images per GPU. We can put multiple images on each
# GPU because the images are small. Batch size is 8 (GPUs * images/GPU).
GPU_COUNT = 1
BACKBONE = 'resnet50'
NUM_CLASSES = 2 # background + 1 pneumonia classes
IMAGE_MIN_DIM = 256 # default 800
IMAGE_MAX_DIM = 256 # default 1024
RPN_ANCHOR_SCALES = (16, 32, 64, 128, 256) # default (32, 64, 128, 256, 512)
TRAIN_ROIS_PER_IMAGE = 32 # default 200
MAX_GT_INSTANCES = 4 # default 100
DETECTION_MAX_INSTANCES = 4 # default 100, to match distribution
DETECTION_MIN_CONFIDENCE = 0.78 # match the target distribution
DETECTION_NMS_THRESHOLD = 0.01 # default 0.3
# Get object reference for RSNA_Eval_Config
config = RSNA_Detect_Config()
mask_rcnn_inference_model = modellib.MaskRCNN(mode = 'inference',
config = config,
model_dir = "assests")
def predict(inp):
confidences = {"cat": 0.0, "dog": 0.5}
predictions = get_predictions_from_mask_rcnn(mask_rcnn_inference_model, inp)
print(predictions)
return inp, confidences
gr.Interface(fn=predict,
inputs=gr.Image(type="pil"),
outputs=[gr.Image(type="pil"), gr.Label(num_top_classes=3)],
examples=[]).launch()