Spaces:
Sleeping
Sleeping
File size: 3,825 Bytes
bd7c529 39debef 3170d22 5351a82 bd7c529 0715e8c 3170d22 bd7c529 0715e8c 39debef 8ed86f2 3170d22 8ed86f2 3cf084f 3170d22 8ed86f2 3170d22 cf4de60 6c45483 bd7c529 6c45483 bd7c529 6c45483 bd7c529 56e0661 8c0dd07 0715e8c 76a2d16 cf4de60 4d1e216 6494a0c 4d1e216 76a2d16 3170d22 76a2d16 96b4bfb 4d1e216 9af4bab 4d1e216 9af4bab 4d1e216 c72147b 9af4bab 9448fdb 7520ea1 1fc6f1f 82792a7 9af4bab 9448fdb 82792a7 9448fdb 56e0661 b574fc0 56e0661 bd7c529 1e935c6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
import pandas as pd
import numpy as np
import streamlit as st
from PIL import Image
import random
import sahi.utils.file
from streamlit_image_comparison import image_comparison
IMAGE_TO_URL = {
'factory_pid.png' : 'https://d1afc1j4569hs1.cloudfront.net/factory-pid.png',
'plant_pid.png' : 'https://d1afc1j4569hs1.cloudfront.net/plant-pid.png',
'processing_pid.png' : 'https://d1afc1j4569hs1.cloudfront.net/processing-pid.png',
'prediction_visual.png' : 'https://d1afc1j4569hs1.cloudfront.net/prediction_visual.png'
}
st.set_page_config(
page_title="P&ID Object Detection",
layout="wide",
initial_sidebar_state="expanded"
)
st.title('P&ID Object Detection')
st.subheader(' Identify valves and pumps with deep learning model ', divider='rainbow')
st.caption('Developed by Deep Drawings Co.')
@st.cache_data(show_spinner=False)
def download_comparison_images():
sahi.utils.file.download_from_url(
'https://d1afc1j4569hs1.cloudfront.net/plant-pid.png',
'plant_pid.png',
)
sahi.utils.file.download_from_url(
'https://d1afc1j4569hs1.cloudfront.net/prediction_visual.png',
'prediction_visual.png',
)
download_comparison_images()
if "output_1" not in st.session_state:
st.session_state["output_1"] = Image.open('plant_pid.png')
if "output_2" not in st.session_state:
st.session_state["output_2"] = Image.open('prediction_visual.png')
col1, col2, col3 = st.columns(3, gap='medium')
with col1:
with st.expander('How to use it'):
st.markdown(
'''
1) Upload your P&ID or select example diagrams π¬
2) Set confidence threshold π
3) Press to perform inference π
4) Visualize model predictions π
'''
)
st.write('##')
col1, col2, col3 = st.columns(3, gap='large')
with col1:
st.markdown('##### Input File')
# set input image by upload
image_file = st.file_uploader("Upload your diagram", type=["pdf"])
# set input images from examples
def radio_func(option):
option_to_id = {
'factory_pid.png' : 'A',
'plant_pid.png' : 'B',
'processing_pid.png' : 'C',
}
return option_to_id[option]
radio = st.radio(
'Or select from the following examples',
options = ['factory_pid.png', 'plant_pid.png', 'processing_pid.png'],
format_func = radio_func,
)
with col2:
st.markdown('##### Preview')
# visualize input image
if image_file is not None:
image = Image.open(image_file)
else:
image = sahi.utils.cv.read_image_as_pil(IMAGE_TO_URL[radio])
with st.container(border = True):
st.image(image, use_column_width = True)
with col3:
st.markdown('##### Set model parameters')
postprocess_match_threshold = st.slider(
label = 'Select confidence threshold',
min_value = 0.0,
max_value = 1.0,
value = 0.75,
step = 0.25
)
postprocess_match_metric = st.slider(
label = 'Select IoU threshold',
min_value = 0.0,
max_value = 1.0,
value = 0.75,
step = 0.25
)
st.write('##')
col1, col2, col3 = st.columns([3, 1, 3])
with col2:
submit = st.button("π Perform Prediction")
st.write('##')
col1, col2, col3 = st.columns([1, 3, 1])
with col2:
st.markdown(f"#### Object Detection Result")
with st.container(border = True):
static_component = image_comparison(
img1=st.session_state["output_1"],
img2=st.session_state["output_2"],
label1='Uploaded Diagram',
label2='Model Inference',
width=1000,
starting_position=50,
show_labels=True,
make_responsive=True,
in_memory=True,
)
|