Spaces:
Sleeping
Sleeping
import streamlit as st | |
from detectron2.config import get_cfg | |
from detectron2.engine import DefaultPredictor | |
from detectron2 import model_zoo | |
from PIL import Image | |
import numpy as np | |
import os | |
from util import visualize, set_background | |
os.environ['CURL_CA_BUNDLE'] = '' | |
set_background('bg.png') | |
# set title | |
st.title('Brain MRI tumor detection') | |
# set header | |
st.header('Please upload an image') | |
# upload file | |
file = st.file_uploader('', type=['png', 'jpg', 'jpeg']) | |
# load model | |
cfg = get_cfg() | |
cfg.merge_from_file(model_zoo.get_config_file('COCO-Detection/retinanet_R_101_FPN_3x.yaml')) | |
cfg.MODEL.WEIGHTS = 'model_0001999.pth' | |
cfg.MODEL.DEVICE = 'cpu' | |
predictor = DefaultPredictor(cfg) | |
# load image | |
if file: | |
image = Image.open(file).convert('RGB') | |
image_array = np.asarray(image) | |
# detect objects | |
outputs = predictor(image_array) | |
threshold = 0.5 | |
# Display predictions | |
preds = outputs["instances"].pred_classes.tolist() | |
scores = outputs["instances"].scores.tolist() | |
bboxes = outputs["instances"].pred_boxes | |
bboxes_ = [] | |
for j, bbox in enumerate(bboxes): | |
bbox = bbox.tolist() | |
score = scores[j] | |
pred = preds[j] | |
if score > threshold: | |
x1, y1, x2, y2 = [int(i) for i in bbox] | |
bboxes_.append([x1, y1, x2, y2]) | |
# visualize | |
visualize(image, bboxes_) |