File size: 5,878 Bytes
eb53b5d f02a325 eb53b5d f02a325 eb53b5d f02a325 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | import os
os.environ["PIP_ROOT_USER_ACTION"] = "ignore"
os.environ["GRADIO_SSR_MODE"] = "false"
os.environ["GRADIO_DISABLE_SSR"] = "1"
import gradio as gr
import spaces # Mandatory for ZeroGPU Spaces
RESOURCES = [
{
"name": "Vidi (ByteDance)",
"category": "Video Model",
"description": "ByteDance's multimodal video understanding and generation framework.",
"links": [
("π GitHub", "https://github.com/bytedance/vidi"),
("π Live Demo", "https://vidi.byteintl.com"),
],
},
{
"name": "Molmo2-8B (AllenAI)",
"category": "Open-Weight VLM",
"description": "AllenAI's open multimodal vision-language model for rich video and image reasoning.",
"links": [
("π€ Hugging Face", "https://huggingface.co/allenai/Molmo2-8B"),
("π Playground Demo", "https://playground.allenai.org/?model=molmo2-8b"),
("π Blog Post", "https://allenai.org/blog/molmo2"),
("βΆοΈ YouTube Video", "https://youtu.be/Ej3Hb3kRiac"),
],
},
{
"name": "VideoLLaMA 3 (DAMO-NLP-SG)",
"category": "Video-LLM",
"description": "Frontier multimodal foundation model tailored for image and video understanding.",
"links": [
("π GitHub", "https://github.com/DAMO-NLP-SG/VideoLLaMA3"),
("π HF Space Demo", "https://huggingface.co/spaces/lixin4ever/VideoLLaMA3"),
],
},
{
"name": "VideoJev-35B-A3B",
"category": "MoE Video-LLM",
"description": "35B total parameter (3B active) Mixture-of-Experts model for efficient video understanding.",
"links": [
("π€ Hugging Face", "https://huggingface.co/ZhuYuhan/VideoJev-35B-A3B"),
("π HF Space Demo", "https://huggingface.co/spaces/hugging-apps/videojev-35b-a3b"),
],
},
{
"name": "Gemini Agentic Video Understanding",
"category": "API & Developer Guides",
"description": "Official Google AI Studio and Gemini API guides for agentic video reasoning and frame-level understanding.",
"links": [
("π οΈ AI Studio Developer Guide", "https://aistudio.google.com/learn/agentic-video-understanding-with-gemini"),
("π Gemini Video Docs", "https://ai.google.dev/gemini-api/docs/video-understanding"),
],
},
]
@spaces.GPU # Satisfies the ZeroGPU startup scanner
def filter_resources(search_query: str, category_filter: str) -> str:
query = (search_query or "").strip().lower()
sections = []
for item in RESOURCES:
if category_filter != "All" and item["category"] != category_filter:
continue
if query and (
query not in item["name"].lower()
and query not in item["description"].lower()
and query not in item["category"].lower()
):
continue
links_md = " | ".join(
f"**[{label}]({url})**" for label, url in item["links"]
)
section = (
f"### {item['name']} `[{item['category']}]`\n"
f"{item['description']}\n\n"
f"π {links_md}\n\n---"
)
sections.append(section)
if not sections:
return "### No matching models or resources found."
return "\n\n".join(sections)
categories = ["All"] + sorted(list({r["category"] for r in RESOURCES}))
with gr.Blocks(title="Video Understanding Models & Demos Hub") as demo:
gr.Markdown(
"""
# π¬ Video Understanding Models, Demos & Resources
Quick-access directory of multimodal video foundation models, Hugging Face checkpoints, interactive playgrounds, and developer guides.
"""
)
with gr.Row():
search_box = gr.Textbox(
label="Search Models / Links",
placeholder="Filter by keyword (e.g., Molmo, VideoLLaMA, Gemini, ByteDance, Vidi)...",
scale=3,
)
category_dropdown = gr.Dropdown(
choices=categories,
value="All",
label="Category",
scale=1,
)
gr.Markdown("---")
results_markdown = gr.Markdown(value=filter_resources("", "All"))
with gr.Accordion("π Summary Comparison Table", open=True):
gr.Markdown(
"""
| Model / Resource | Category | Model / Repo Link | Live Demo / Space | Extra Links |
| :--- | :--- | :--- | :--- | :--- |
| **Vidi (ByteDance)** | Video Model | [GitHub](https://github.com/bytedance/vidi) | [Vidi Demo](https://vidi.byteintl.com) | β |
| **Molmo2-8B (AllenAI)** | Open-Weight VLM | [Hugging Face](https://huggingface.co/allenai/Molmo2-8B) | [AllenAI Playground](https://playground.allenai.org/?model=molmo2-8b) | [Blog](https://allenai.org/blog/molmo2) Β· [YouTube](https://youtu.be/Ej3Hb3kRiac) |
| **VideoLLaMA 3** | Video-LLM | [GitHub](https://github.com/DAMO-NLP-SG/VideoLLaMA3) | [HF Space](https://huggingface.co/spaces/lixin4ever/VideoLLaMA3) | β |
| **VideoJev-35B-A3B** | MoE Video-LLM | [Hugging Face](https://huggingface.co/ZhuYuhan/VideoJev-35B-A3B) | [HF Space](https://huggingface.co/spaces/hugging-apps/videojev-35b-a3b) | β |
| **Gemini Video Understanding** | API & Developer Guides | [AI Studio Guide](https://aistudio.google.com/learn/agentic-video-understanding-with-gemini) | β | [API Docs](https://ai.google.dev/gemini-api/docs/video-understanding) |
"""
)
search_box.change(
fn=filter_resources,
inputs=[search_box, category_dropdown],
outputs=results_markdown,
)
category_dropdown.change(
fn=filter_resources,
inputs=[search_box, category_dropdown],
outputs=results_markdown,
)
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860, ssr_mode=False) |