import pandas as pd import gradio as gr import csv import json import os import shutil from huggingface_hub import Repository HF_TOKEN = os.environ.get("HUGGINGFACE_TOKEN") MODEL_INFO = [ "Model", "Avg", "Visual Quality", "Temporal Consistency", "Dynamic Degree", "Text-to-Video Alignment", ] DATA_TITILE_TYPE = ['markdown', 'number', 'number', 'number', 'number', 'number',] SUBMISSION_NAME = "VideoScore-Leaderboard" SUBMISSION_URL = os.path.join("https://huggingface.co/datasets/hexuan21/", SUBMISSION_NAME) CSV_DIR = "./VideoScore-Leaderboard/results.csv" COLUMN_NAMES = MODEL_INFO LEADERBORAD_INTRODUCTION = """# VideoScore Leaderboard """ TABLE_INTRODUCTION = """ """ LEADERBORAD_INFO = """ We list the information of the used datasets as follows:
""" CITATION_BUTTON_LABEL = "Copy the following snippet to cite these results" CITATION_BUTTON_TEXT = r"""@inproceedings{hendrycks2021measuring, title={Measuring Mathematical Problem Solving With the MATH Dataset}, author={Hendrycks, Dan and Burns, Collin and Kadavath, Saurav and Arora, Akul and Basart, Steven and Tang, Eric and Song, Dawn and Steinhardt, Jacob}, booktitle={Thirty-fifth Conference on Neural Information Processing Systems Datasets and Benchmarks Track (Round 2)}, year={2021} } }""" SUBMIT_INTRODUCTION = """# Submit on Science Leaderboard Introduction ## ⚠ Please note that you need to submit the json file with following format: ```json { "Model": "[NAME]", "Repo": "https://huggingface.co/[MODEL_NAME]" "TheoremQA": 50, "MATH": 50, "GSM": 50, "GPQA": 50, "MMLU-STEM": 50 } ``` After submitting, you can click the "Refresh" button to see the updated leaderboard(it may takes few seconds). """ def get_df(): repo = Repository(local_dir=SUBMISSION_NAME, clone_from=SUBMISSION_URL, use_auth_token=HF_TOKEN) repo.git_pull() df = pd.read_csv(CSV_DIR) df['Model'] = df['Model'].apply(lambda x: f"[{x.split(']')[0][1:]}]({x.split('(')[1][:-1]})") df['Avg'] = df[["Visual Quality", "Temporal Consistency", "Dynamic Degree", "Text-to-Video Alignment",]].mean(axis=1).round(2) df = df.sort_values(by=['Avg'], ascending=False) return df[COLUMN_NAMES] def refresh_data(): return get_df()