Downloads · 30 days
16
12% of all-time downloads
2264K/vjepa2-qwen3.5-video-understanding
vjepa2-qwen3.5-video-understanding is a machine learning model from 2264K. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as apache-2.0.
Event-based video understanding pipeline using V-JEPA 2 vision encoder aligned with Qwen3.5-27B LLM.
Downloads · 30 days
16
12% of all-time downloads
All-time downloads
129
Public
Repo size
679 MB
Likes
3
Public
Click a slice to open those files.
.pt671 MB · 99%
From the Hugging Face model README
Event-based video understanding pipeline using V-JEPA 2 vision encoder aligned with Qwen3.5-27B LLM.
Training data: ~600 YouTube Shorts with Gemini 2.0 Flash auto-generated summaries (custom dataset, not publicly released).
| File | Description | Use Case |
|---|---|---|
exp5_projection/proj_epoch5.pt | Projection Layer (3-layer MLP, ~215M) | Video summarization |
exp6_projection/proj_lora_epoch5.pt | Projection Layer trained with LoRA | Summarization + text recognition |
exp6_vjepa_lora/ | V-JEPA 2 LoRA adapter (r=16, alpha=32) | Text recognition in videos |
Video → V-JEPA 2 ViT-L (frozen/LoRA) → frame mean pool → [N_frames, 1024]
→ event segmentation (cosine distance peak detection)
→ event mean pool → [N_events, 1024]
→ Projection Layer (3-layer MLP) → [N_events, 5120]
→ Qwen3.5-27B (frozen) → text generation
class ProjectionV2(nn.Module):
def __init__(self, vjepa_dim=1024, llm_dim=5120):
super().__init__()
hidden = llm_dim * 2 # 10240
self.proj = nn.Sequential(
nn.Linear(vjepa_dim, hidden), nn.GELU(),
nn.Linear(hidden, hidden), nn.GELU(),
nn.Linear(hidden, llm_dim),
)
import torch
from transformers import AutoModel
# Load V-JEPA 2
vjepa = AutoModel.from_pretrained("facebook/vjepa2-vitl-fpc64-256")
# Load Projection
proj = ProjectionV2(1024, 5120)
proj.load_state_dict(torch.load("exp5_projection/proj_epoch5.pt"))
# For text recognition, also load LoRA
from peft import PeftModel
vjepa_lora = PeftModel.from_pretrained(vjepa, "exp6_vjepa_lora/")
proj_lora = ProjectionV2(1024, 5120)
proj_lora.load_state_dict(torch.load("exp6_projection/proj_lora_epoch5.pt"))
If you use this work, please cite:
@misc{raen2026vjepa_video_understanding,
title={Event-Based Video Understanding via V-JEPA--LLM Alignment: From Event Segmentation to Visual-Semantic Mapping},
author={Raen2264},
year={2026},
doi={10.5281/zenodo.19143611},
url={https://doi.org/10.5281/zenodo.19143611},
note={Model checkpoints: https://huggingface.co/2264K/vjepa2-qwen3.5-video-understanding}
}