MINGYISU's picture
add visdoc sub task scores (#52)
01ad525 verified
raw
history blame
9.11 kB
from utils import *
import utils_v2 as v2
global data_component
def update_table(query, min_size, max_size, selected_tasks=None):
df = get_df()
filtered_df = search_and_filter_models(df, query, min_size, max_size)
if selected_tasks and len(selected_tasks) > 0:
selected_columns = BASE_COLS + selected_tasks
filtered_df = filtered_df[selected_columns]
return filtered_df
def update_table_v2(query, min_size, max_size):
df = v2.get_df()
filtered_df = v2.search_and_filter_models(df, query, min_size, max_size)
return filtered_df
with gr.Blocks() as block:
gr.Markdown(LEADERBOARD_INTRODUCTION)
with gr.Tabs(elem_classes="tab-buttons") as tabs:
# Table 1, the main leaderboard of overall scores
with gr.TabItem("πŸ“Š MMEB (V2)", elem_id="qa-tab-table1", id=1):
with gr.Row():
with gr.Accordion("Citation", open=False):
citation_button2 = gr.Textbox(
value=v2.CITATION_BUTTON_TEXT,
label=CITATION_BUTTON_LABEL,
elem_id="citation-button",
lines=10,
)
gr.Markdown(v2.TABLE_INTRODUCTION)
with gr.Row():
search_bar2 = gr.Textbox(
placeholder="Search models...",
show_label=False,
elem_id="search-bar"
)
df = get_df()
df2 = v2.get_df()
min_size2, max_size2 = get_size_range(df2)
with gr.Row():
min_size_slider2 = gr.Slider(
minimum=min_size2,
maximum=max_size2,
value=min_size2,
step=0.1,
label="Minimum number of parameters (B)",
)
max_size_slider2 = gr.Slider(
minimum=min_size2,
maximum=max_size2,
value=max_size2,
step=0.1,
label="Maximum number of parameters (B)",
)
data_component2 = gr.components.Dataframe(
value=df2[v2.COLUMN_NAMES],
headers=v2.COLUMN_NAMES,
type="pandas",
datatype=v2.DATA_TITLE_TYPE,
interactive=False,
visible=True,
max_height=2400,
)
refresh_button2 = gr.Button("Refresh")
def update_with_tasks_v2(*args):
return update_table_v2(*args)
search_bar2.change(
fn=update_with_tasks_v2,
inputs=[search_bar2, min_size_slider2, max_size_slider2],
outputs=data_component2
)
min_size_slider2.change(
fn=update_with_tasks_v2,
inputs=[search_bar2, min_size_slider2, max_size_slider2],
outputs=data_component2
)
max_size_slider2.change(
fn=update_with_tasks_v2,
inputs=[search_bar2, min_size_slider2, max_size_slider2],
outputs=data_component2
)
refresh_button2.click(fn=v2.refresh_data, outputs=data_component2)
def get_special_processed_df2():
"""Temporary special processing to merge v1 scores with v2 image scores.
Will be removed later after v2 is fully adopted."""
df2_i = df2[v2.COLUMN_NAMES_I]
df1 = df.rename(columns={'V1-Overall': 'Image-Overall'})
df1 = df1[v2.BASE_COLS + v2.SUB_TASKS_I + ['Image-Overall']]
combined_df = pd.concat([df1, df2_i], ignore_index=True)
for task in v2.TASKS_I:
combined_df[task] = combined_df[task].apply(lambda score: '-' if pd.isna(score) else score)
combined_df = v2.rank_models(combined_df, 'Image-Overall')
return combined_df[v2.COLUMN_NAMES_I]
# table 2, image scores only
with gr.TabItem("πŸ–ΌοΈ Image", elem_id="qa-tab-table1", id=2):
gr.Markdown(v2.TABLE_INTRODUCTION_I)
df2_i = get_special_processed_df2()
data_component3 = gr.components.Dataframe(
value=df2_i,
headers=v2.COLUMN_NAMES_I,
type="pandas",
datatype=v2.DATA_TITLE_TYPE_I,
interactive=False,
visible=True,
max_height=2400,
)
# table 3, video scores only
with gr.TabItem("πŸ’½ Video", elem_id="qa-tab-table1", id=3):
gr.Markdown(v2.TABLE_INTRODUCTION_V)
data_component4 = gr.components.Dataframe(
value=v2.rank_models(df2[v2.COLUMN_NAMES_V], 'Video-Overall'),
headers=v2.COLUMN_NAMES_V,
type="pandas",
datatype=v2.DATA_TITLE_TYPE_V,
interactive=False,
visible=True,
max_height=2400,
)
# table 4, visual document scores only
with gr.TabItem("πŸ“‘ Visual Doc", elem_id="qa-tab-table1", id=4):
gr.Markdown(v2.TABLE_INTRODUCTION_D)
data_component5 = gr.components.Dataframe(
value=v2.rank_models(df2[v2.COLUMN_NAMES_D], 'Visdoc-Overall'),
headers=v2.COLUMN_NAMES_D,
type="pandas",
datatype=v2.DATA_TITLE_TYPE_D,
interactive=False,
visible=True,
max_height=2400,
)
# table 5
with gr.TabItem("πŸ“ About", elem_id="qa-tab-table2", id=5):
gr.Markdown(LEADERBOARD_INFO, elem_classes="markdown-text")
gr.Image("overview.png", width=900, label="Dataset Overview")
# table 6
with gr.TabItem("πŸš€ Submit here! ", elem_id="submit-tab", id=6):
with gr.Row():
gr.Markdown(SUBMIT_INTRODUCTION, elem_classes="markdown-text")
# table 7
with gr.TabItem("πŸ“Š MMEB (Archived)", elem_id="qa-tab-table1", id=7):
with gr.Row():
with gr.Accordion("Citation", open=False):
citation_button = gr.Textbox(
value=CITATION_BUTTON_TEXT,
label=CITATION_BUTTON_LABEL,
elem_id="citation-button",
lines=10,
)
gr.Markdown(TABLE_INTRODUCTION)
with gr.Row():
search_bar = gr.Textbox(
placeholder="Search models...",
show_label=False,
elem_id="search-bar"
)
min_size, max_size = get_size_range(df)
with gr.Row():
min_size_slider = gr.Slider(
minimum=min_size,
maximum=max_size,
value=min_size,
step=0.1,
label="Minimum number of parameters (B)",
)
max_size_slider = gr.Slider(
minimum=min_size,
maximum=max_size,
value=max_size,
step=0.1,
label="Maximum number of parameters (B)",
)
with gr.Row():
tasks_select = gr.CheckboxGroup(
choices=TASKS_V1,
value=TASKS_V1,
label="Select tasks to Display",
elem_id="tasks-select"
)
data_component = gr.components.Dataframe(
value=df[COLUMN_NAMES],
headers=COLUMN_NAMES,
type="pandas",
datatype=DATA_TITLE_TYPE,
interactive=False,
visible=True,
max_height=2400,
)
refresh_button = gr.Button("Refresh")
def update_with_tasks(*args):
return update_table(*args)
search_bar.change(
fn=update_with_tasks,
inputs=[search_bar, min_size_slider, max_size_slider, tasks_select],
outputs=data_component
)
min_size_slider.change(
fn=update_with_tasks,
inputs=[search_bar, min_size_slider, max_size_slider, tasks_select],
outputs=data_component
)
max_size_slider.change(
fn=update_with_tasks,
inputs=[search_bar, min_size_slider, max_size_slider, tasks_select],
outputs=data_component
)
tasks_select.change(
fn=update_with_tasks,
inputs=[search_bar, min_size_slider, max_size_slider, tasks_select],
outputs=data_component
)
refresh_button.click(fn=refresh_data, outputs=data_component)
block.launch(share=True)