چیتشیت
مدلهای ویدیو-زبان و ویدیوی طولانی
Video-Language Models and Long Video
نمونهبرداری فریمها، بودجهبندی توکن، انکود زمان، ارجاعدهی رویدادها و نمایهسازی ویدیوی طولانی با پاسخهای دارای برچسب زمانی.
فهرست مطالب
پایپلاین نمایهسازی صحنه (پروژهی پایانی)
معماریطراحیهای VLM ویدیویی
مقایسه| عامل | Video-LLaMA | Video-LLaVA | Qwen2.5-VL |
|---|---|---|---|
| فریمها | کلیپهای 16 فریمی با 2 FPS | 8 فریم | نرخ فریم پویا |
| فشردهساز | Q-former ویدیویی، 32 کوئری | MLP | M-RoPE با زمانبندی همتراز به ازای هر توکن |
| موقعیت زمانی | RoPE زمانی 1D | امبدینگهای زمانی یادگرفتهشده | برچسب زمانی مطلق (t, h, w) |
| نکته | Audio branch، ImageBind | انکودر مشترک تصویر + ویدیو | بهترین متنباز 2025 |
| پاسخ به «کی» | «اوایل کلیپ» | سیستم 8-16 فریمی | «در 4.2 ثانیه» |
| نقطه ضعف | طول کلیپ ثابت | نبود ویدیوی طولانی | ذکر نشده |
ویدیوی طولانی: چهار مسیر
مقایسه| عامل | کانتکست خام | رینگ اتنشن | فشردهسازی توکن | بازیابی ایجنتی |
|---|---|---|---|---|
| مثال | Gemini 1.5، Gemini 2.5 Pro | LWM، LongVILA | Video-XL، LongVA | VideoAgent |
| سازوکار | همهی توکنها در یک گذر | تکهها بین دستگاهها میچرخند | یک توکن خلاصه به ازای هر کلیپ | LLM ابزار کلیپ را فراخوانی میکند |
| هزینه | میلیونها توکن | خطی بر حسب کانتکست | کانتکست کوچک | فقط کلیپهای مرتبط |
| نقطه ضعف | بسته، غیر متنباز | پخش روی دستگاههای متعدد | فریمهای دقیق را از دست میدهد | کیفیت بازیابی |
| انتخاب برای | پرسشوپاسخ عمومی بالای 1 ساعت | 15-60 دقیقه | 15-60 دقیقه | پرسش خاص بالای 1 ساعت |
حلقهی VideoAgent
گامبهگام- LLMسؤال را میخواند.
- LLMتابع
find_clips(keyword='<word>')را برای کلیپهای مرتبط صدا میزند. - ابزاربرچسبهای زمانی کلیپهای منطبق را برمیگرداند.
- VLMتعداد 3 کلیپ 30 ثانیهای را انکود میکند (مجموعاً ~7290 توکن).
- LLMپاسخ را میسازد یا کوئریهای تکمیلی میپرسد.
محاسبات توکن
مفهومها- بودجه
tokens(duration_s, fps, per_frame)برابر است با مدتزمان ضربدر FPS ضربدر توکنهای هر فریم.- خام
- 1 دقیقه با 30 FPS و 196 توکن بر فریم برابر است با 352 هزار توکن.
- تجمیع 3x3
- تعداد 64 توکن بر فریم. 5 دقیقه با 1 FPS میشود 19,200 توکن.
- 384 بومی
- ~729 توکن بر فریم. تجمیع 3x3 میدهد 81 توکن.
- 30 دقیقه
- با 1 FPS و 81 توکن میشود 145,800 توکن. با 2 FPS میشود 291,600.
- 2 ساعت
- با 1 FPS و 81 توکن میشود 583 هزار توکن.
- بازیابی
3 * 30 * 81 + 200توکن برای 3 کلیپ. 99% ارزانتر.
خانوادههای مدلهای ویدیویی (بینایی)
مفهومها- 2D + تجمیع
- مدل 2D CNN برای هر فریم، میانگینگیری در طول زمان. ناتوان در مدلسازی حرکت.
- کانولوشن 3D
- کرنلها روی (T, H, W). مدلهای C3D، I3D، SlowFast.
- انبساط I3D
- کپی کرنل 2D در امتداد زمان. 3x3 به 3x3x3 تبدیل میشود.
- (2+1)D
- کانولوشن مکانی 2D، سپس کانولوشن زمانی 1D. پارامترهای کمتر.
- اتنشن مشترک
- یک اتنشن روی (t, h, w). درجه دو بر حسب
T*H*W. - اتنشن تفکیکشده
- یک اتنشن روی زمان، یکی روی فضا، در هر بلوک.
- اتنشن تفکیکپذیر
- اتنشن زمان و مکان به شکل متناوب بین بلوکها جابهجا میشوند.
توابع در کد
کار و کد| وظیفه | کد |
|---|---|
| برچسبهای زمانی یکنواخت | uniform_sample(duration, n) |
| برچسبهای زمانی آگاه از حرکت | dynamic_sample(motion, fps_cap=4, total_budget=32) |
| امتیازدهی ارجاعدهی | evaluate_grounding(predictions, ground_truth, tol_iou=0.3) |
| همپوشانی بازهها | iou(a_start, a_end, b_start, b_end) |
| اندیسهای فریم یکنواخت | sample_uniform(num_frames_total, T) |
| پنجرهی تصادفی پیوسته در حافظه | sample_dense(num_frames_total, T, rng=None) |
| ارتقای کانولوشن 2D به 3D | inflate_2d_to_3d(conv2d, time_kernel=3) |
| جستجوی سه بردار | multi_vector_search(query, scenes, k=5) |
نمونهبرداری، ارجاعدهی، انبساط
کدpython
uni = uniform_sample(duration, 8) # step * (i + 0.5)
dyn = dynamic_sample(motion, fps_cap=4, total_budget=12) # 1 تا fps_cap در ثانیه
result = evaluate_grounding(predictions, ground) # تطابق زمانی که IoU >= tol_iou
result["recall"] # تطابقها روی رویدادهای حقیقت پایه
model = FramePool(num_classes=10, pretrained=False) # ResNet-18 بر فریم، میانگین روی T
c3d = inflate_2d_to_3d(c2d, time_kernel=3) # تکرار روی زمان، تقسیم بر time_kernel
c21 = Conv2Plus1D(3, 16) # مکانی، BN، ReLU، زمانی
اجرای پروژهی پایانی
دستورها| دستور | کارکرد آن |
|---|---|
python main.py | دموی نمایه: جستجوی RRF، پنجرهی ارجاع دادهشده |
npm run typecheck | بررسی نوع بخش UI |
npm test | آزمونهای وضعیت کار و ذخیرهسازی |
npm start | دموی خاتمهی خودکار |
npm run serve | سرور HTTP روی پورت 8123: |
GET /jobs | خلاصهی کارها به صورت JSON |
GET /job/:id | خط زمانی مرحله، 404 برای موارد ناشناخته |
Stages | تکهبندی، امبدینگ، نمایهسازی، پرسشوپاسخ |
پیشفرضها
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
fps_cap | 4 | حداکثر نمونهها در هر ثانیه |
total_budget | 32 | کل نمونههای پویا |
tol_iou | 0.3 | میزان IoU برای تطابق ارجاعدهی |
time_kernel | 3 | عمق زمانی انبساط |
RRF constant | 60 | افزودن 1.0 / (60 + rank + 1) |
`k` in search | 5 | صحنههای برتر پس از ادغام |
Clip length T | 8 | همچنین 16، 32 یا 64 |
عیبیابی
عیبیابی«باز کردن در» برابر با «بستن در» است
- علت
- تجمیع زمانی نسبت به ترتیب، پایا است
- راهحل
- از کانولوشن 3D یا ترنسفورمر استفاده کنید
دقت نزدیک به شانس در کلاسهای حرکتی
- علت
- تنها ظاهر فریمها کافی نیست
- راهحل
- آموزش R(2+1)D، نه FramePool
مدل منبسطشده batch norm را خراب میکند
- علت
- مقیاس اکتیویشن رشد میکند
- راهحل
- تقسیم بر
time_kernel
انفجار زمان اجرای اتنشن مشترک
- علت
- درجه دو بر حسب
T*H*W - راهحل
- استفاده از اتنشن تفکیکشده
نمونهبرداری یکنواخت اکشن را از دست میدهد
- علت
- از دست رفتن اوجهای حرکتی
- راهحل
- استفاده از نرخ فریم پویا با سقف فریم مشخص
پاسخ میگوید «اوایل کلیپ»
- علت
- نبود موقعیت زمانی مطلق
- راهحل
- استفاده از M-RoPE با زمانبندی همتراز و خروجی JSON
سرریز کانتکست در ویدیوی 2 ساعته
- علت
- 583 هزار توکن در 1 FPS
- راهحل
- تجمیع بیشتر یا استفاده از VideoAgent
شمارش اشتباه «چند تا X»
- علت
- توهم در شمارش
- راهحل
- گزارش دقت شمارش به صورت جداگانه
پرسشها
پرسش و پاسخ- M-RoPE با زمانبندی همتراز چه چیزی میافزاید؟
- زمان مطلق به ازای هر توکن. این قابلیت فواصل ناهموار نرخ فریم پویا را مدیریت میکند.
- کدام فرمت خروجی؟
- فرمت ساختیافتهی JSON با فیلدهای زمان و رویداد.
- کدام تجمیع؟
- دوخطی 3x3 برای اغلب وظایف. 6x6 برای جریانهای کاری ایجنتی.
- کدام مسیر برای کلیپ 15 دقیقهای؟
- مدل متنباز 72B با کانتکست بومی.
- کدام مسیر برای بالای 2 ساعت؟
- استفاده از VideoAgent یا خلاصهسازیهای سلسلهمراتبی.
- کلیپ 78%، ویدیو 82%؟
- مدل به میانگینگیری در زمان ارزیابی وابسته است.
- چرا سه بردار به ازای هر صحنه؟
- یک بردار تجمیعشده باعث افت کیفیت بازیابی میشود.
بنچمارکها
مفهومها- VideoMME
- ویدیوی کوتاه، متوسط و طولانی. بیش از 2500 نمونه.
- TempCompass
- سؤالات مربوط به ترتیب زمانی «قبل» / «بعد».
- EgoSchema
- ویدیوی اولشخص با افق زمانی بلند.
- سوزن در انبار کاه
- پنهان کردن یک نشانگر در نقطهای تصادفی. امتیازدهی بازخوانی در k.