Spaces:
Runtime error
Runtime error
File size: 5,573 Bytes
a05992b |
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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
import json
import os
import os.path as osp
import gradio as gr
import numpy as np
import gradio as gr
def load_json(load_dir_path, json_file_name):
load_path = os.path.join(load_dir_path, json_file_name)
if not os.path.exists(load_path):
return None
with open(load_path, 'r', encoding='utf-8') as f:
obj_serializable = json.load(f)
return obj_serializable
def load_results_recaption(save_path, model="gpt-3.5-turbo-0125"):
result_list = load_json(save_path, f'final_results-{model}.json')
if result_list is not None:
result_list = result_list['result_list']
if result_list is None:
result_list = load_json(save_path, 'inference_results.json')
return result_list
plava_theme = gr.themes.Monochrome(
text_size="sm",
spacing_size="sm",
primary_hue=gr.themes.Color(c100="#f5f5f5", c200="#e5e5e5", c300="#d4d4d4", c400="#a3a3a3", c50="#fafafa", c500="#737373", c600="#525252", c700="#404040", c800="#262626", c900="#171717", c950="#000000"),
secondary_hue=gr.themes.Color(c100="#f5f5f5", c200="#e5e5e5", c300="#d4d4d4", c400="#a3a3a3", c50="#fafafa", c500="#737373", c600="#525252", c700="#404040", c800="#262626", c900="#171717", c950="#000000"),
neutral_hue=gr.themes.Color(c100="#f5f5f5", c200="#e5e5e5", c300="#d4d4d4", c400="#a3a3a3", c50="#fafafa", c500="#737373", c600="#525252", c700="#404040", c800="#262626", c900="#171717", c950="#000000"),
).set(
background_fill_primary_dark='*primary_950',
background_fill_secondary_dark='*neutral_950'
)
load_results_funcs = [
load_results_recaption,
]
recaption_root_dir = "recaption_results"
local_video_root_dir = "DATAS/Recaption/Inter4K/60fps/UHD"
remote_video_root_dir ="https://huggingface.co/datasets/ermu2001/Inter4kPlavaRecaption/resolve/main/DATAS/Recaption/Inter4K/60fps/UHD"
def show(result_list_first, result_list_second, result_index):
sample2index_second = {}
for i, result in enumerate(result_list_second):
if 'video_path' not in result:
continue
question = result['question'] if 'question' in result else ''
video_path = result['video_path']
samplehash = question + '--' +video_path
sample2index_second[samplehash] = i
info = result_list_first[result_index]
info_str_first = json.dumps(info, indent=4, ensure_ascii=False)
video_path = info['video_path']
question = info['question'] if 'question' in info else ''
samplehash = question + '--' +video_path
if samplehash in sample2index_second:
info = result_list_second[sample2index_second[samplehash]]
info_str_second = json.dumps(info, indent=4, ensure_ascii=False)
else:
info_str_second = f"NO {video_path} IN THE SECOND RESULT DIR"
video_path = video_path.replace(local_video_root_dir, remote_video_root_dir)
return video_path, info_str_first, info_str_second
def reload_results_dirs():
result_dirs = []
# load result dir paths
for dirpath, dirnames, filenames in os.walk(recaption_root_dir):
if len(dirnames) == 0 and len(filenames) != 0:
result_dirs.append(dirpath)
return gr.Dropdown(result_dirs, value=result_dirs[0])
def reload_results(result_dir):
# if isinstance(result_dir, list):
# result_dir = result_dir[0]
if result_dir is None or not osp.exists(result_dir):
return None
for fn in load_results_funcs:
result_list = fn(result_dir)
if result_list is not None:
np.random.shuffle(result_list)
break
result_index = gr.Slider(0, len(result_list), step=1)
return result_list, result_index
with gr.Blocks(title="PLAVA RESULTS", theme=plava_theme) as demo:
result_list_first = gr.State()
result_list_second = gr.State()
with gr.Row():
with gr.Column():
gr.Markdown("# Showing off Model's Outputs.")
gr.Markdown(
"You can find all our results, including:\n"
"1. results of Captioned Inter4k\n"
"2. results of Different Benchmark inference outputs.\n"
"Choose a directory to see the different output variant.\n"
"You can also choose secondary directory (as long as they are from the same dataset.) to compare on the results.\n"
)
with gr.Row():
with gr.Column():
show_video = gr.Video(interactive=False)
with gr.Column():
button_reload = gr.Button(value='Reload From The Evaluation/Inference Root Directory')
result_index = gr.Slider(0, 0, step=1, label="Index")
result_dir_first = gr.Dropdown(label='Test Result Path')
info_first = gr.Text(interactive=False, label='Detailed Output Information')
result_dir_second = gr.Dropdown(label='Test Result Path')
info_second = gr.Text(interactive=False, label='Detailed Output Information')
button_reload.click(reload_results_dirs, [], [result_dir_first])
button_reload.click(reload_results_dirs, [], [result_dir_second])
result_dir_first.change(reload_results, [result_dir_first], [result_list_first, result_index])
result_dir_second.change(reload_results, [result_dir_second], [result_list_second, result_index])
result_index.change(show, [result_list_first, result_list_second, result_index], [show_video, info_first, info_second])
demo.load(reload_results_dirs, [], [result_dir_first])
demo.load(reload_results_dirs, [], [result_dir_second])
demo.launch() |