sanya94 commited on
Commit
46b81ba
1 Parent(s): 9bf26a8

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -0
app.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from PIL import Image
3
+ import torch
4
+ import os
5
+ import torchvision.transforms as T
6
+ import detectron2
7
+ from detectron2 import model_zoo
8
+ from detectron2.config import get_cfg
9
+ from detectron2.engine import DefaultPredictor
10
+ from detectron2.utils.visualizer import Visualizer
11
+ from detectron2.data import MetadataCatalog
12
+
13
+ # Set up Detectron2 config
14
+ cfg = get_cfg()
15
+ #cfg.OUTPUT_DIR = './output'
16
+ cfg.MODEL.DEVICE = 'cpu' # Use CPU for inference
17
+ cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
18
+ cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5 # Set threshold for segmentations
19
+ cfg.MODEL.WEIGHTS = "model_final.pth"
20
+
21
+ # Load Detectron2 model weights
22
+ cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
23
+ predictor = DefaultPredictor(cfg)
24
+
25
+ # Streamlit app title
26
+ st.title("Object Segmentation using Detectron2")
27
+
28
+ # Upload image
29
+ uploaded_image = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
30
+
31
+ # Perform segmentation and display result
32
+ if uploaded_image is not None:
33
+ # Load image
34
+ image = Image.open(uploaded_image)
35
+
36
+ # Perform segmentation
37
+ outputs = predictor(image)
38
+
39
+ # Visualize segmentation
40
+ v = Visualizer(image, MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
41
+ segmented_image = v.draw_instance_predictions(outputs["instances"].to("cpu"))
42
+
43
+ # Display original and segmented images
44
+ st.image([image, segmented_image.get_image()], caption=["Original Image", "Segmented Image"], width=300)