Spaces:
Running
Running
wentao
commited on
Commit
·
e783f64
1
Parent(s):
fb93e31
update
Browse files- app.py +24 -7
- constants.py +23 -0
- utils.py +7 -5
app.py
CHANGED
@@ -3,24 +3,41 @@ import pandas as pd
|
|
3 |
from utils import load_all_results
|
4 |
|
5 |
|
6 |
-
def
|
7 |
df = load_all_results()
|
8 |
-
|
|
|
9 |
|
10 |
|
11 |
def build_interface():
|
12 |
with gr.Blocks() as demo:
|
13 |
-
gr.Markdown("##
|
14 |
-
gr.Markdown("Benchmarks: Video-MME, MLVU,
|
15 |
|
16 |
with gr.Row():
|
17 |
-
sort_metric = gr.Dropdown(choices=["Video-MME", "MLVU", "
|
18 |
descending = gr.Checkbox(label="Descending", value=True)
|
19 |
|
|
|
|
|
|
|
|
|
|
|
20 |
leaderboard = gr.Dataframe(label="Leaderboard")
|
21 |
|
22 |
-
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
|
25 |
return demo
|
26 |
|
|
|
3 |
from utils import load_all_results
|
4 |
|
5 |
|
6 |
+
def filter_and_sort_leaderboard(category_filters, sort_by="Video-MME", descending=True):
|
7 |
df = load_all_results()
|
8 |
+
filtered_df = df[df["Category"].isin(category_filters)]
|
9 |
+
return filtered_df.sort_values(by=sort_by, ascending=not descending).reset_index(drop=True)
|
10 |
|
11 |
|
12 |
def build_interface():
|
13 |
with gr.Blocks() as demo:
|
14 |
+
gr.Markdown("## 🎥 LVU VLM Leaderboard")
|
15 |
+
gr.Markdown("Benchmarks: Video-MME, MLVU, LongVideoBench")
|
16 |
|
17 |
with gr.Row():
|
18 |
+
sort_metric = gr.Dropdown(choices=["Video-MME", "MLVU", "LongVideoBench"], label="Sort by", value="Video-MME")
|
19 |
descending = gr.Checkbox(label="Descending", value=True)
|
20 |
|
21 |
+
with gr.Row():
|
22 |
+
proprietary = gr.Checkbox(label="Proprietary Models", value=True)
|
23 |
+
transformer = gr.Checkbox(label="Open-source Transformer-based LMMs", value=True)
|
24 |
+
efficient = gr.Checkbox(label="Open-source Efficient LMMs", value=True)
|
25 |
+
|
26 |
leaderboard = gr.Dataframe(label="Leaderboard")
|
27 |
|
28 |
+
def update_board(sort_by, descending, proprietary, transformer, efficient):
|
29 |
+
filters = []
|
30 |
+
if proprietary:
|
31 |
+
filters.append("Proprietary Models")
|
32 |
+
if transformer:
|
33 |
+
filters.append("Open-source Transformer-based LMMs")
|
34 |
+
if efficient:
|
35 |
+
filters.append("Open-source Efficient LMMs")
|
36 |
+
return filter_and_sort_leaderboard(filters, sort_by, descending)
|
37 |
+
|
38 |
+
inputs = [sort_metric, descending, proprietary, transformer, efficient]
|
39 |
+
for inp in inputs:
|
40 |
+
inp.change(fn=update_board, inputs=inputs, outputs=leaderboard)
|
41 |
|
42 |
return demo
|
43 |
|
constants.py
CHANGED
@@ -4,3 +4,26 @@ HF_TOKEN = os.environ.get("HF_TOKEN")
|
|
4 |
|
5 |
|
6 |
RESULTS_DIR = "static/eval_results"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
5 |
|
6 |
RESULTS_DIR = "static/eval_results"
|
7 |
+
|
8 |
+
|
9 |
+
CATEGORY_MAP = {
|
10 |
+
"GPT-4V": ("-", "Proprietary Models"),
|
11 |
+
"GPT-4o": ("-", "Proprietary Models"),
|
12 |
+
"Gemini-1.5-Pro": ("-", "Proprietary Models"),
|
13 |
+
|
14 |
+
"VideoChat2": ("7B", "Open-source Transformer-based LMMs"),
|
15 |
+
"ShareGPT4Video": ("7B", "Open-source Transformer-based LMMs"),
|
16 |
+
"LongVA": ("7B", "Open-source Transformer-based LMMs"),
|
17 |
+
"Video-CCAM": ("9B", "Open-source Transformer-based LMMs"),
|
18 |
+
"Kangaroo": ("8B", "Open-source Transformer-based LMMs"),
|
19 |
+
"InternVL2": ("8B", "Open-source Transformer-based LMMs"),
|
20 |
+
"LLaVA-OneVision": ("7B", "Open-source Transformer-based LMMs"),
|
21 |
+
"Qwen2-VL": ("7B", "Open-source Transformer-based LMMs"),
|
22 |
+
"Phi-4-Mini": ("5.6B", "Open-source Transformer-based LMMs"),
|
23 |
+
|
24 |
+
"LLaVA-Mini": ("7B", "Open-source Efficient LMMs"),
|
25 |
+
"LongLLaVA": ("9B", "Open-source Efficient LMMs"),
|
26 |
+
"LongVU": ("9B", "Open-source Efficient LMMs"),
|
27 |
+
"Video-XL": ("7B", "Open-source Efficient LMMs"),
|
28 |
+
"VAMBA": ("10B", "Open-source Efficient LMMs")
|
29 |
+
}
|
utils.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
import os
|
2 |
import json
|
3 |
import pandas as pd
|
4 |
-
from constants import RESULTS_DIR
|
5 |
|
6 |
|
7 |
def load_all_results():
|
@@ -10,8 +10,10 @@ def load_all_results():
|
|
10 |
if file.endswith(".json"):
|
11 |
with open(os.path.join(RESULTS_DIR, file), "r") as f:
|
12 |
data = json.load(f)
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
|
|
|
|
17 |
return pd.DataFrame(all_data)
|
|
|
1 |
import os
|
2 |
import json
|
3 |
import pandas as pd
|
4 |
+
from constants import RESULTS_DIR, CATEGORY_MAP
|
5 |
|
6 |
|
7 |
def load_all_results():
|
|
|
10 |
if file.endswith(".json"):
|
11 |
with open(os.path.join(RESULTS_DIR, file), "r") as f:
|
12 |
data = json.load(f)
|
13 |
+
for entry in data:
|
14 |
+
model = entry["Model"]
|
15 |
+
size, category = CATEGORY_MAP.get(model, ("N/A", "Unknown"))
|
16 |
+
entry["Size"] = size
|
17 |
+
entry["Category"] = category
|
18 |
+
all_data.append(entry)
|
19 |
return pd.DataFrame(all_data)
|