from dataclasses import dataclass from typing import List, Any import gradio as gr @dataclass class AutoEvalColumn: """Column definition for the main leaderboard table""" name: str type: str def make_clickable_model(model_name: str) -> str: """ Convert model name to clickable link format for Gradio. """ if not model_name or model_name == "N/A": return model_name # Create clickable link to Hugging Face model page huggingface_url = f"https://huggingface.co/{model_name}" return f"[{model_name}]({huggingface_url})" def make_clickable_paper(paper_url: str) -> str: """ Convert paper URL to clickable link format for Gradio. """ if paper_url == "N/A" or not paper_url: return "N/A" # Use markdown format for better Gradio compatibility return f'[📄 Paper]({paper_url})' def styled_error(message: str) -> str: """Return a styled error message""" return f'
❌ {message}
' def styled_message(message: str) -> str: """Return a styled success message""" return f'
✅ {message}
' # Define the fields for the main leaderboard fields = lambda cls: [getattr(cls, field.name) for field in cls.__dataclass_fields__.values()] # Column definitions for ImageNet-1k leaderboard def get_imagenet_columns() -> List[AutoEvalColumn]: """Get column definitions for ImageNet-1k leaderboard""" return [ AutoEvalColumn("Model", "markdown"), AutoEvalColumn("Top-1 Accuracy ⬆️", "number"), AutoEvalColumn("Top-5 Accuracy ⬆️", "number"), AutoEvalColumn("Parameters (M)", "number"), AutoEvalColumn("FLOPs (G)", "number"), AutoEvalColumn("Inference Time (ms)", "number"), AutoEvalColumn("Model Size (MB)", "number"), AutoEvalColumn("Paper", "markdown"), AutoEvalColumn("Year", "number"), AutoEvalColumn("License", "str") ]