File size: 4,565 Bytes
a2bc65a
fbb3995
c376f3c
a2bc65a
 
5657a6c
 
29e11ce
35b862f
 
5657a6c
 
a2bc65a
 
 
 
 
 
 
 
c376f3c
058f18b
17fa97d
c376f3c
17fa97d
 
 
c376f3c
 
17fa97d
 
 
c376f3c
 
17fa97d
c376f3c
7e4e0ac
 
c376f3c
 
7e4e0ac
 
c376f3c
 
7e4e0ac
29e11ce
fe5c71c
ddf2165
c376f3c
 
fe5c71c
17fa97d
5657a6c
058f18b
 
 
a2bc65a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from gradio_scripts.file_reader import File
from InferenceConfig import InferenceConfig, TrackerType


models = {
    'master': 'models/v5m_896_300best.pt',
    'elwha': 'models/YsEE20.pt',
    'elwha+kenai_val': 'models/YsEKvE20.pt',
    'elwha+kenai_train': 'models/YsEKtE20.pt',
}

def Upload_Gradio(gradio_components):
    with gr.Tabs():

        # Tab - uploading aris files for inference
        with gr.Tab("Infer ARIS"):

            gr.HTML("<p align='center' style='font-size: large;font-style: italic;'>Submit an .aris file to analyze result.</p>")
            
            default_settings = InferenceConfig()
            settings = []
            with gr.Accordion("Advanced Settings", open=False):
                settings.append(gr.Dropdown(label="Model", value=default_settings.find_model(models), choices=list(models.keys())))

                gr.Markdown("Detection Parameters")
                with gr.Row():
                    settings.append(gr.Slider(0, 1, value=default_settings.conf_thresh, label="Confidence Threshold", info="Confidence cutoff for detection boxes"))
                    settings.append(gr.Slider(0, 1, value=default_settings.nms_iou, label="NMS IoU", info="IoU threshold for non-max suppression"))

                gr.Markdown("Tracking Parameters")
                with gr.Row():
                    settings.append(gr.Slider(0, 100, value=default_settings.min_hits, label="Min Hits", info="Minimum number of frames a fish has to appear in to count"))
                    settings.append(gr.Slider(0, 100, value=default_settings.max_age, label="Max Age", info="Max age of occlusion before track is split"))

                tracker = gr.Dropdown(["None", "Confidence Boost", "ByteTrack"], value=TrackerType.toString(default_settings.associative_tracker), label="Associative Tracking")
                settings.append(tracker)
                with gr.Row(visible=False) as track_row:
                    settings.append(gr.Slider(0, 5, value=default_settings.boost_power, label="Boost Power", info=""))
                    settings.append(gr.Slider(0, 1, value=default_settings.boost_decay, label="Boost Decay", info=""))
                    tracker.change(lambda x:  gr.update(visible=(x=="Confidence Boost")), tracker, track_row)
                with gr.Row(visible=False) as track_row:
                    settings.append(gr.Slider(0, 1, value=default_settings.byte_low_conf, label="Low Conf Threshold", info=""))
                    settings.append(gr.Slider(0, 1, value=default_settings.byte_high_conf, label="High Conf Threshold", info=""))
                    tracker.change(lambda x:  gr.update(visible=(x=="ByteTrack")), tracker, track_row)

                gr.Markdown("Other")
                with gr.Row():
                    settings.append(gr.Slider(0, 3, value=default_settings.min_length, label="Min Length", info="Minimum length of fish (meters) in order for it to count"))
                    settings.append(gr.Slider(0, 5, value=default_settings.min_travel, label="Min Travel", info="Minimum travel distance of track (meters) in order for it to count"))

                gradio_components['hyperparams'] = settings

            with gr.Row():
                settings.append(gr.CheckboxGroup(["Annotated Video", "Manual Marking", "PDF"], label="Output formats", interactive=True, value=["Annotated Video", "Manual Marking"]))

            #Input field for aris submission
            gradio_components['input'] = File(file_types=[".aris", ".ddf"], type="binary", label="ARIS Input", file_count="multiple")

        # Tab - uploading old result files to review
        with gr.Tab("Open Result"):
            gr.HTML("""
                <p align='center' style='font-size: large;font-style: italic;'>Submit an old zip file of results to visualize.</p>
                <p align='center' style='font-size: large;font-style: italic;'>If you want to edit annotations, also submit an aris file.</p>
            """)

            # Input for .zip result file
            gradio_components['result_input'] = File(file_types=[".zip"], type="binary", label="Upload result file", file_count="multiple")
            
            # Optional input for aris file to help with annotation editing
            gradio_components['result_aris_input'] = File(file_types=[".aris", ".ddf"], type="binary", label="Upload aris file (optional)", file_count="multiple")
            
            # Button for initializing review
            gradio_components['preview_result_btn'] = gr.Button("View Result")