oskarastrom's picture
Autoload parameters
c376f3c
raw
history blame
4.57 kB
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")