Spaces:
Running
Running
| 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) |