Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pandas as pd | |
| from utils import load_all_results | |
| def filter_and_sort_leaderboard(category_filters, sort_by="Video-MME", descending=True): | |
| df = load_all_results() | |
| filtered_df = df[df["Category"].isin(category_filters)] | |
| filtered_df = filtered_df.sort_values(by=sort_by, ascending=not descending).reset_index(drop=True) | |
| filtered_df.insert(0, "Rank", filtered_df.index + 1) | |
| return filtered_df.fillna("-") | |
| def render_html_leaderboard(df): | |
| def row_color(category): | |
| if category == "Proprietary Models": | |
| return "background-color: rgba(255, 255, 153, 0.3);" | |
| elif category == "Open-source Transformer-based LMMs": | |
| return "background-color: rgba(153, 255, 204, 0.3);" | |
| elif category == "Open-source Efficient LMMs": | |
| return "background-color: rgba(204, 229, 255, 0.3);" | |
| return "" | |
| table_html = "<style>table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ccc; padding: 6px; text-align: center; }</style>" | |
| table_html += "<table><thead><tr>" + "".join(f"<th>{col}</th>" for col in df.columns) + "</tr></thead><tbody>" | |
| for _, row in df.iterrows(): | |
| style = row_color(row['Category']) | |
| row_html = "".join(f"<td>{row[col]}</td>" for col in df.columns) | |
| table_html += f"<tr style='{style}'>{row_html}</tr>" | |
| table_html += "</tbody></table>" | |
| return table_html | |
| def build_interface(): | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## 🎥 LVU VLM Leaderboard") | |
| gr.Markdown("Benchmarks: Video-MME, MLVU, LVBench, LongVideoBench") | |
| with gr.Row(): | |
| sort_metric = gr.Dropdown(choices=["Video-MME", "MLVU", "LVBench", "LongVideoBench"], label="Sort by", value="Video-MME") | |
| descending = gr.Checkbox(label="Descending", value=True) | |
| with gr.Row(): | |
| proprietary = gr.Checkbox(label="Proprietary Models", value=True) | |
| transformer = gr.Checkbox(label="Open-source Transformer-based LMMs", value=True) | |
| efficient = gr.Checkbox(label="Open-source Efficient LMMs", value=True) | |
| default_df = filter_and_sort_leaderboard( | |
| ["Proprietary Models", "Open-source Transformer-based LMMs", "Open-source Efficient LMMs"], "Video-MME", True | |
| ) | |
| leaderboard = gr.HTML(value=render_html_leaderboard(default_df)) | |
| def update_board(sort_by, descending, proprietary, transformer, efficient): | |
| filters = [] | |
| if proprietary: | |
| filters.append("Proprietary Models") | |
| if transformer: | |
| filters.append("Open-source Transformer-based LMMs") | |
| if efficient: | |
| filters.append("Open-source Efficient LMMs") | |
| df = filter_and_sort_leaderboard(filters, sort_by, descending) | |
| return render_html_leaderboard(df) | |
| inputs = [sort_metric, descending, proprietary, transformer, efficient] | |
| for inp in inputs: | |
| inp.change(fn=update_board, inputs=inputs, outputs=leaderboard) | |
| return demo | |
| if __name__ == "__main__": | |
| demo = build_interface() | |
| demo.launch() |