File size: 2,805 Bytes
615e9f1
 
 
 
ebef706
813fdb6
cbbc2ce
00a4c90
 
 
cbbc2ce
 
 
 
3a0ed7b
00a4c90
 
 
 
cbbc2ce
00a4c90
 
 
 
 
 
cbbc2ce
00a4c90
 
 
a37d48b
00a4c90
a37d48b
ebef706
6bc613e
ebef706
00a4c90
 
a37d48b
 
 
 
 
 
 
6bc613e
 
a37d48b
6bc613e
 
 
e49e1d2
 
 
 
 
d6aec26
e49e1d2
 
 
00a4c90
e49e1d2
 
 
00a4c90
e49e1d2
 
 
 
a37d48b
 
 
 
 
 
 
00a4c90
 
615e9f1
 
 
 
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
import streamlit as st
from torchvision.transforms import functional as F
import gc
import numpy as np

from modules.streamlit_utils import *
from modules.utils import error


def main():
    # Example usage
    if 'model_loaded' not in st.session_state:
        st.session_state.model_loaded = False

    st.session_state.first_run = True
    is_mobile, screen_width = configure_page()
    display_banner(is_mobile)
    display_title(is_mobile)
    display_sidebar()

    initialize_session_state()

    cropped_image = None

    img_selected = load_example_image()
    uploaded_file = load_user_image(img_selected, is_mobile)

    if uploaded_file is not None:
        cropped_image = display_image(uploaded_file, screen_width, is_mobile)

    if uploaded_file is not None:
        get_score_threshold(is_mobile)
    
        if st.button("🚀 Launch Prediction"):
            st.session_state.image = launch_prediction(cropped_image, st.session_state.score_threshold, is_mobile, screen_width)
            st.session_state.original_prediction = st.session_state.prediction.copy()
            st.rerun()

    # Create placeholders for all sections
    prediction_result_placeholder = st.empty()
    additional_options_placeholder = st.empty()
    modeler_placeholder = st.empty()


    if 'prediction' in st.session_state and uploaded_file:
        if st.session_state.image != cropped_image:
            print('Image has changed')
            # Delete the prediction
            del st.session_state.prediction
            return

        if len(st.session_state.prediction['labels'])==0:
            error("No prediction available. Please upload a BPMN image or decrease the detection score treshold.")
        else:
            with prediction_result_placeholder.container():
                if is_mobile:
                    display_options(st.session_state.crop_image, st.session_state.score_threshold, is_mobile, int(5/6*screen_width))
                else:
                    with st.expander("Show result of prediction"):
                        display_options(st.session_state.crop_image, st.session_state.score_threshold, is_mobile, int(5/6*screen_width))

            if not is_mobile:
                with additional_options_placeholder.container():
                    state = modify_results()

          
            with modeler_placeholder.container():
                modeler_options(is_mobile)
                display_bpmn_modeler(is_mobile, screen_width)
    else:
        prediction_result_placeholder.empty()
        additional_options_placeholder.empty()
        modeler_placeholder.empty()
        # Create a lot of space for scrolling
        for _ in range(50):
            st.text("")

    gc.collect()

if __name__ == "__main__":
    print('Starting the app...')
    main()