Spaces:
Running
Running
File size: 4,450 Bytes
8c31b90 df9abf4 0d0ab89 df9abf4 8c31b90 df9abf4 8c31b90 df9abf4 0d0ab89 8c31b90 0d0ab89 df9abf4 8c31b90 0d0ab89 df9abf4 8c31b90 df9abf4 8c31b90 df9abf4 8c31b90 df9abf4 8c31b90 df9abf4 8c31b90 df9abf4 8c31b90 df9abf4 8c31b90 0d0ab89 df9abf4 8c31b90 0d0ab89 |
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 |
import os
import streamlit as st
from utils import get_configs, get_display_names, get_path_for_viz
# st.header("EVREAL - Event-based Video Reconstruction Evaluation and Analysis Library")
#
# paper_link = "https://arxiv.org/abs/2305.00434"
# code_link = "https://github.com/ercanburak/EVREAL"
# page_link = "https://ercanburak.github.io/evreal.html"
# instructions_video = "https://www.youtube.com/watch?v="
#
# st.markdown("Paper: " + paper_link, unsafe_allow_html=True)
# st.markdown("Code: " + paper_link, unsafe_allow_html=True)
# st.markdown("Page: " + paper_link, unsafe_allow_html=True)
# st.markdown("Please see this video for instructions on how to use this tool: " + instructions_video, unsafe_allow_html=True)
st.title("Result Analysis Tool")
data_base_path = "/home/bercan/ebv/evreal_data"
dataset_cfg_path = os.path.join("cfg", "dataset")
model_cfg_path = os.path.join("cfg", "model")
metric_cfg_path = os.path.join("cfg", "metric")
viz_cfg_path = os.path.join("cfg", "viz")
datasets = get_configs(dataset_cfg_path)
models = get_configs(model_cfg_path)
metrics = get_configs(metric_cfg_path)
visualizations = get_configs(viz_cfg_path)
dataset_display_names = get_display_names(datasets)
model_display_names = get_display_names(models)
metric_display_names = get_display_names(metrics)
viz_display_names = get_display_names(visualizations)
assert len(set(dataset_display_names)) == len(dataset_display_names), "Dataset display names are not unique"
assert len(set(model_display_names)) == len(model_display_names), "Model display names are not unique"
assert len(set(metric_display_names)) == len(metric_display_names), "Metric display names are not unique"
assert len(set(viz_display_names)) == len(viz_display_names), "Viz display names are not unique"
selected_model_names = st.multiselect('Select multiple methods to compare', model_display_names)
selected_models = [model for model in models if model['display_name'] in selected_model_names]
col1, col2 = st.columns(2)
with col1:
selected_dataset_name = st.selectbox('Select dataset', options=dataset_display_names)
selected_dataset = [dataset for dataset in datasets if dataset['display_name'] == selected_dataset_name][0]
with col2:
selected_sequence = st.selectbox('Select sequence', options=selected_dataset["sequences"].keys())
usable_metrics = [metric for metric in metrics if metric['no_ref'] == selected_dataset['no_ref']]
usable_metric_display_names = get_display_names(usable_metrics)
selected_metric_names = st.multiselect('Select metrics to display', usable_metric_display_names)
selected_metrics = [metric for metric in usable_metrics if metric['display_name'] in selected_metric_names]
selected_viz = st.multiselect('Select other visualizations to display', viz_display_names)
selected_visualizations = [viz for viz in visualizations if viz['display_name'] in selected_viz]
if not st.button('Get Results'):
st.stop()
gt_only_viz = [viz for viz in selected_visualizations if viz['viz_type'] == 'gt_only']
model_only_viz = [viz for viz in selected_visualizations if viz['viz_type'] == 'model_only']
both_viz = [viz for viz in selected_visualizations if viz['viz_type'] == 'both']
recon_viz = {"name": "recon", "display_name": "Reconstruction", "viz_type": "both"}
ground_truth = {"name": "gt", "display_name": "Ground Truth", "model_id": "groundtruth"}
model_viz = [recon_viz] + both_viz + selected_metrics + model_only_viz
num_columns = len(selected_models) + 1
if len(gt_only_viz) > 0:
num_columns += 1
selected_models.append(ground_truth)
num_rows = max(len(selected_metrics) + 1, len(gt_only_viz)) + 1 + len(both_viz)
for row_idx in range(num_rows):
row_visualizations = []
for col_idx in range(num_columns):
if row_idx == 0 and col_idx == 0:
print("meta")
pass
elif row_idx == 0:
# model names
print(selected_models[col_idx - 1]['display_name'])
pass
elif col_idx == 0:
# metric names
print(model_viz[row_idx - 1]['display_name'])
pass
elif col_idx == num_columns - 1:
# gt only viz
print(gt_only_viz[row_idx - 1]['display_name'])
pass
else:
video_path = get_path_for_viz(data_base_path, selected_dataset, selected_sequence, selected_models[col_idx - 1], model_viz[row_idx - 1])
print(video_path)
pass |