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, selected_tasks=None): df = v2.get_df() filtered_df = v2.search_and_filter_models(df, query, min_size, max_size) if selected_tasks and len(selected_tasks) > 0: selected_columns = v2.BASE_COLS + selected_tasks filtered_df = filtered_df[selected_columns] 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" ) 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) # table 2, image scores only with gr.TabItem("🖼️ Image", elem_id="qa-tab-table1", id=2): gr.Markdown(v2.TABLE_INTRODUCTION_I) data_component3 = gr.components.Dataframe( value=v2.rank_models(df2[v2.COLUMN_NAMES_I], 'Image-Overall'), 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'), 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" ) df = get_df() 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)