Spaces:
Running
Running
Commit
Β·
e83848d
1
Parent(s):
4227c7b
update leaderboard
Browse files- leaderboards/object_hi3deval.csv +2 -0
- serve/leaderboard.py +21 -27
- serve/markdown.py +11 -1
- serve/model.py +13 -2
leaderboards/object_hi3deval.csv
CHANGED
|
@@ -1,5 +1,7 @@
|
|
| 1 |
Method,Task,Geometry Plausibility,Geometry Details,Texture Quality,Geo.-Tex. Coherence,Prompt-3D Alignment,Overall
|
|
|
|
| 2 |
hunyuan3d-2.0,"Image-to-3D",6.2919,2.7215,2.7644,0.9876,3.4334,16.1988
|
|
|
|
| 3 |
trellis,"Image-to-3D",5.8626,2.392,2.4693,0.9702,3.5048,15.1989
|
| 4 |
spar3d,"Image-to-3D",5.7791,2.3031,2.4749,0.9601,3.4842,15.0014
|
| 5 |
triposr,"Image-to-3D",5.2216,2.4225,2.3758,0.9562,3.3643,14.3404
|
|
|
|
| 1 |
Method,Task,Geometry Plausibility,Geometry Details,Texture Quality,Geo.-Tex. Coherence,Prompt-3D Alignment,Overall
|
| 2 |
+
hunyuan3d-2.5-i,"Image-to-3D",6.460,2.86,2.79,0.981,3.47,16.561
|
| 3 |
hunyuan3d-2.0,"Image-to-3D",6.2919,2.7215,2.7644,0.9876,3.4334,16.1988
|
| 4 |
+
hunyuan3d-2.5-t,"Text-to-3D",6.42,2.7,2.45,0.947,3.18,15.697
|
| 5 |
trellis,"Image-to-3D",5.8626,2.392,2.4693,0.9702,3.5048,15.1989
|
| 6 |
spar3d,"Image-to-3D",5.7791,2.3031,2.4749,0.9601,3.4842,15.0014
|
| 7 |
triposr,"Image-to-3D",5.2216,2.4225,2.3758,0.9562,3.3643,14.3404
|
serve/leaderboard.py
CHANGED
|
@@ -10,29 +10,23 @@ import numpy as np
|
|
| 10 |
import pandas as pd
|
| 11 |
from serve.model import model_config
|
| 12 |
|
| 13 |
-
def
|
| 14 |
-
|
| 15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
-
def
|
| 18 |
-
model_name = model_config[name].model_name
|
| 19 |
if rank==1:
|
| 20 |
-
return "π₯
|
| 21 |
elif rank==2:
|
| 22 |
-
return "π₯
|
| 23 |
elif rank==3:
|
| 24 |
-
return 'π₯
|
| 25 |
else:
|
| 26 |
-
return
|
| 27 |
-
|
| 28 |
-
def get_cfg_info(name):
|
| 29 |
-
config = model_config[name]
|
| 30 |
-
links = []
|
| 31 |
-
if config.page_link:
|
| 32 |
-
links.append(hyperlink("Page", config.page_link))
|
| 33 |
-
if config.code_link:
|
| 34 |
-
links.append(hyperlink("Code", config.code_link))
|
| 35 |
-
return ", ".join(links) if links else "N/A", config.organization if config.organization else "N/A"
|
| 36 |
|
| 37 |
def get_leaderboard_values(leaderboard_df):
|
| 38 |
leaderboard_vals = []
|
|
@@ -43,13 +37,11 @@ def get_leaderboard_values(leaderboard_df):
|
|
| 43 |
if model_name not in model_config.keys() or model_config[model_name].task != task:
|
| 44 |
continue
|
| 45 |
|
| 46 |
-
|
|
|
|
| 47 |
values = values + [row.get(dim, np.NaN) for dim in leaderboard_df.columns[2:]]
|
| 48 |
# values.append(round(np.sum([v for v in values[3:] if pd.notna(v)]), 4))
|
| 49 |
-
|
| 50 |
-
links, organization = get_cfg_info(model_name)
|
| 51 |
-
# values.append(links)
|
| 52 |
-
values.append(organization)
|
| 53 |
|
| 54 |
leaderboard_vals.append(values)
|
| 55 |
return leaderboard_vals
|
|
@@ -77,20 +69,22 @@ def build_leaderboard_tab(leaderboard_file: str, task: str = ""):
|
|
| 77 |
# df = df.drop(df[df["Task"]!=task.split()[0]].index)
|
| 78 |
leaderboard_df = df.drop(df[df["Method"].isnull()].index)
|
| 79 |
leaderboard_df = leaderboard_df.reset_index(drop=True)
|
|
|
|
| 80 |
|
| 81 |
leaderboard_vals = get_leaderboard_values(leaderboard_df)
|
| 82 |
leaderboard = gr.Dataframe(
|
| 83 |
headers = ['Rank', "π€ Model", "πͺ§ Task" ]
|
| 84 |
+ [f"{dim}" for dim in leaderboard_df.keys()[2:-1]]
|
| 85 |
+ ["β Overall", "ποΈ Orgnization"], # "π Links",
|
| 86 |
-
datatype = ["number", "
|
| 87 |
+ ["number"] * (len(leaderboard_df.columns) - 3)
|
| 88 |
-
+ ["number", "
|
| 89 |
value = leaderboard_vals,
|
| 90 |
height = 680,
|
| 91 |
-
column_widths = [60,
|
| 92 |
+ [120] * (len(leaderboard_df.columns) - 3)
|
| 93 |
-
+ [120,
|
| 94 |
wrap = True,
|
|
|
|
| 95 |
)
|
| 96 |
return leaderboard
|
|
|
|
| 10 |
import pandas as pd
|
| 11 |
from serve.model import model_config
|
| 12 |
|
| 13 |
+
def amend_model_name(config):
|
| 14 |
+
if config.page_link:
|
| 15 |
+
return '[' + config.model_name + '](' + config.page_link + ')'
|
| 16 |
+
elif config.code_link:
|
| 17 |
+
return '[' + config.model_name + '](' + config.page_link + ')'
|
| 18 |
+
else:
|
| 19 |
+
return config.model_name
|
| 20 |
|
| 21 |
+
def amend_rank(rank):
|
|
|
|
| 22 |
if rank==1:
|
| 23 |
+
return "π₯"
|
| 24 |
elif rank==2:
|
| 25 |
+
return "π₯"
|
| 26 |
elif rank==3:
|
| 27 |
+
return 'π₯'
|
| 28 |
else:
|
| 29 |
+
return rank
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
def get_leaderboard_values(leaderboard_df):
|
| 32 |
leaderboard_vals = []
|
|
|
|
| 37 |
if model_name not in model_config.keys() or model_config[model_name].task != task:
|
| 38 |
continue
|
| 39 |
|
| 40 |
+
cfg = model_config[model_name]
|
| 41 |
+
values = [amend_rank(rank), amend_model_name(cfg), task]
|
| 42 |
values = values + [row.get(dim, np.NaN) for dim in leaderboard_df.columns[2:]]
|
| 43 |
# values.append(round(np.sum([v for v in values[3:] if pd.notna(v)]), 4))
|
| 44 |
+
values.append(cfg.organization if cfg.organization else "N/A")
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
leaderboard_vals.append(values)
|
| 47 |
return leaderboard_vals
|
|
|
|
| 69 |
# df = df.drop(df[df["Task"]!=task.split()[0]].index)
|
| 70 |
leaderboard_df = df.drop(df[df["Method"].isnull()].index)
|
| 71 |
leaderboard_df = leaderboard_df.reset_index(drop=True)
|
| 72 |
+
leaderboard_df = leaderboard_df.sort_values(by="Overall", ascending=False).reset_index(drop=True)
|
| 73 |
|
| 74 |
leaderboard_vals = get_leaderboard_values(leaderboard_df)
|
| 75 |
leaderboard = gr.Dataframe(
|
| 76 |
headers = ['Rank', "π€ Model", "πͺ§ Task" ]
|
| 77 |
+ [f"{dim}" for dim in leaderboard_df.keys()[2:-1]]
|
| 78 |
+ ["β Overall", "ποΈ Orgnization"], # "π Links",
|
| 79 |
+
datatype = ["number", "markdown", "markdown"]
|
| 80 |
+ ["number"] * (len(leaderboard_df.columns) - 3)
|
| 81 |
+
+ ["number", "markdown"],
|
| 82 |
value = leaderboard_vals,
|
| 83 |
height = 680,
|
| 84 |
+
column_widths = [60, 120, 100]
|
| 85 |
+ [120] * (len(leaderboard_df.columns) - 3)
|
| 86 |
+
+ [120, 180],
|
| 87 |
wrap = True,
|
| 88 |
+
type="pandas",
|
| 89 |
)
|
| 90 |
return leaderboard
|
serve/markdown.py
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
|
| 2 |
def hyperlink(name, link):
|
| 3 |
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); \
|
|
@@ -77,10 +81,16 @@ This leaderboard integrates results from three complementary benchmarks that spa
|
|
| 77 |
return md
|
| 78 |
|
| 79 |
|
| 80 |
-
|
|
|
|
| 81 |
md = f'''
|
| 82 |
This leaderboard is evaluated using **Hi3DEval**, a straight forward scoring benchmark that does **not rely on pairwise comparisons**.
|
| 83 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
Specifically, each dimension is assigned an absolute score within clearly defined value ranges:
|
| 85 |
|
| 86 |
- Geometry Plausibility: range [0, 9]
|
|
|
|
| 1 |
+
home_icon = "https://img.shields.io/badge/Website-Page-blue?logo=homeassistant&logoColor=white&style=flat-square"
|
| 2 |
+
arxiv_icon = "https://img.shields.io/badge/ArXiv-Paper-b31b1b?logo=arxiv&logoColor=white&style=flat-square"
|
| 3 |
+
github_icon = "https://img.shields.io/badge/GitHub-Repo-181717?logo=github&logoColor=white&style=flat-square"
|
| 4 |
+
|
| 5 |
|
| 6 |
def hyperlink(name, link):
|
| 7 |
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); \
|
|
|
|
| 81 |
return md
|
| 82 |
|
| 83 |
|
| 84 |
+
|
| 85 |
+
def get_hi3deval_intro_md():
|
| 86 |
md = f'''
|
| 87 |
This leaderboard is evaluated using **Hi3DEval**, a straight forward scoring benchmark that does **not rely on pairwise comparisons**.
|
| 88 |
|
| 89 |
+
<div style="display: flex; gap: 10px; align-items: center;">
|
| 90 |
+
<a href="https://zyh482.github.io/Hi3DEval/" target="_blank"><img src="{home_icon}"></a>
|
| 91 |
+
<a href="https://arxiv.org/abs/xxxx.xxxxx" target="_blank"> <img src="{arxiv_icon}"></a>
|
| 92 |
+
</div>
|
| 93 |
+
|
| 94 |
Specifically, each dimension is assigned an absolute score within clearly defined value ranges:
|
| 95 |
|
| 96 |
- Geometry Plausibility: range [0, 9]
|
serve/model.py
CHANGED
|
@@ -83,6 +83,17 @@ register_model_config(
|
|
| 83 |
organization="ByteDance"
|
| 84 |
)
|
| 85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
register_model_config(
|
| 87 |
nick_name="grm-t",
|
| 88 |
model_name="GRM",
|
|
@@ -139,12 +150,12 @@ register_model_config(
|
|
| 139 |
organization="Tencent Hunyuan3D Team"
|
| 140 |
)
|
| 141 |
register_model_config(
|
| 142 |
-
nick_name="hunyuan3d-2.5",
|
| 143 |
model_name="Hunyuan3D 2.5",
|
| 144 |
task="Image-to-3D",
|
| 145 |
representation="",
|
| 146 |
paradigm="",
|
| 147 |
-
page_link="",
|
| 148 |
code_link="",
|
| 149 |
organization="Tencent Hunyuan3D Team"
|
| 150 |
)
|
|
|
|
| 83 |
organization="ByteDance"
|
| 84 |
)
|
| 85 |
|
| 86 |
+
register_model_config(
|
| 87 |
+
nick_name="hunyuan3d-2.5-t",
|
| 88 |
+
model_name="Hunyuan3D 2.5",
|
| 89 |
+
task="Text-to-3D",
|
| 90 |
+
representation="",
|
| 91 |
+
paradigm="",
|
| 92 |
+
page_link="https://3d-models.hunyuan.tencent.com/",
|
| 93 |
+
code_link="",
|
| 94 |
+
organization="Tencent Hunyuan3D Team"
|
| 95 |
+
)
|
| 96 |
+
|
| 97 |
register_model_config(
|
| 98 |
nick_name="grm-t",
|
| 99 |
model_name="GRM",
|
|
|
|
| 150 |
organization="Tencent Hunyuan3D Team"
|
| 151 |
)
|
| 152 |
register_model_config(
|
| 153 |
+
nick_name="hunyuan3d-2.5-i",
|
| 154 |
model_name="Hunyuan3D 2.5",
|
| 155 |
task="Image-to-3D",
|
| 156 |
representation="",
|
| 157 |
paradigm="",
|
| 158 |
+
page_link="https://3d-models.hunyuan.tencent.com/",
|
| 159 |
code_link="",
|
| 160 |
organization="Tencent Hunyuan3D Team"
|
| 161 |
)
|