Views
No views yet
| 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 generation1class ProjectionV2(nn.Module):
2 def __init__(self, vjepa_dim=1024, llm_dim=5120):
3 super().__init__()
4 hidden = llm_dim * 2 # 10240
5 self.proj = nn.Sequential(
6 nn.Linear(vjepa_dim, hidden), nn.GELU(),
7 nn.Linear(hidden, hidden), nn.GELU(),
8 nn.Linear(hidden, llm_dim),
9 )1import torch
2from transformers import AutoModel
3
4# Load V-JEPA 2
5vjepa = AutoModel.from_pretrained("facebook/vjepa2-vitl-fpc64-256")
6
7# Load Projection
8proj = ProjectionV2(1024, 5120)
9proj.load_state_dict(torch.load("exp5_projection/proj_epoch5.pt"))
10
11# For text recognition, also load LoRA
12from peft import PeftModel
13vjepa_lora = PeftModel.from_pretrained(vjepa, "exp6_vjepa_lora/")
14proj_lora = ProjectionV2(1024, 5120)
15proj_lora.load_state_dict(torch.load("exp6_projection/proj_lora_epoch5.pt"))1@misc{raen2026vjepa_video_understanding,
2 title={Event-Based Video Understanding via V-JEPA--LLM Alignment: From Event Segmentation to Visual-Semantic Mapping},
3 author={Raen2264},
4 year={2026},
5 doi={10.5281/zenodo.19143611},
6 url={https://doi.org/10.5281/zenodo.19143611},
7 note={Model checkpoints: https://huggingface.co/2264K/vjepa2-qwen3.5-video-understanding}
8}