File size: 2,544 Bytes
39debef
3170d22
 
 
0715e8c
d6675dc
0715e8c
3170d22
 
 
 
0715e8c
39debef
8ed86f2
3170d22
8ed86f2
3cf084f
3170d22
8ed86f2
3170d22
 
cf4de60
 
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
 
 
762f858
56e0661
 
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
import streamlit as st
from PIL import Image
import random
import sahi.utils.file
import pandas as pd
import numpy as np

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'
    }

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.')

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([4, 3, 4])
with col2:
    submit = st.button("πŸš€ Perform Prediction")