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 | 
             
            )
         | 
