چیت‌شیت

مدل‌های ویدیو-زبان و ویدیوی طولانی

Video-Language Models and Long Video

نمونه‌برداری فریم‌ها، بودجه‌بندی توکن، انکود زمان، ارجاع‌دهی رویدادها و نمایه‌سازی ویدیوی طولانی با پاسخ‌های دارای برچسب زمانی.

  • ۱۳ بخش
  • ۴ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. پایپ‌لاین نمایه‌سازی صحنه (پروژه‌ی پایانی)
  2. طراحی‌های VLM ویدیویی
  3. ویدیوی طولانی: چهار مسیر
  4. حلقه‌ی VideoAgent
  5. محاسبات توکن
  6. خانواده‌های مدل‌های ویدیویی (بینایی)
  7. توابع در کد
  8. نمونه‌برداری، ارجاع‌دهی، انبساط
  9. اجرای پروژه‌ی پایانی
  10. پیش‌فرض‌ها
  11. عیب‌یابی
  12. پرسش‌ها
  13. بنچ‌مارک‌ها

پایپ‌لاین نمایه‌سازی صحنه (پروژه‌ی پایانی)

معماری
فریم کلیدیصداسه کوئریصحنه‌ی برترپنجرهفایل ویدیوآدرس YouTube یا MP4 محلیبخش‌بندی صحنهTransNetV2 یا PySceneDetectکپشن‌نویسی VLMکپشن + امبدینگ فریمکیودرنت (Qdrant) چندبرداریسه بردار نام‌گذاری‌شدهگذر ASRWhisper-v3-turbo، برچسب‌های زمانی کلماتسؤالزبان طبیعیادغام RRFtop-k=5 صحنه‌هاارجاع زمانیاصلاح شروع و پایان در صحنهترکیب VLMپاسخ + برچسب‌های زمانی

طراحی‌های VLM ویدیویی

مقایسه
عاملVideo-LLaMAVideo-LLaVAQwen2.5-VL
فریم‌هاکلیپ‌های 16 فریمی با 2 FPS8 فریمنرخ فریم پویا
فشرده‌سازQ-former ویدیویی، 32 کوئریMLPM-RoPE با زمان‌بندی هم‌تراز به ازای هر توکن
موقعیت زمانیRoPE زمانی 1Dامبدینگ‌های زمانی یادگرفته‌شدهبرچسب زمانی مطلق (t, h, w)
نکتهAudio branch، ImageBindانکودر مشترک تصویر + ویدیوبهترین متن‌باز 2025
پاسخ به «کی»«اوایل کلیپ»سیستم 8-16 فریمی«در 4.2 ثانیه»
نقطه ضعفطول کلیپ ثابتنبود ویدیوی طولانیذکر نشده

ویدیوی طولانی: چهار مسیر

مقایسه
عاملکانتکست خامرینگ اتنشنفشرده‌سازی توکنبازیابی ایجنتی
مثالGemini 1.5، Gemini 2.5 ProLWM، LongVILAVideo-XL، LongVAVideoAgent
سازوکارهمه‌ی توکن‌ها در یک گذرتکه‌ها بین دستگاه‌ها می‌چرخندیک توکن خلاصه به ازای هر کلیپLLM ابزار کلیپ را فراخوانی می‌کند
هزینهمیلیون‌ها توکنخطی بر حسب کانتکستکانتکست کوچکفقط کلیپ‌های مرتبط
نقطه ضعفبسته، غیر متن‌بازپخش روی دستگاه‌های متعددفریم‌های دقیق را از دست می‌دهدکیفیت بازیابی
انتخاب برایپرسش‌وپاسخ عمومی بالای 1 ساعت15-60 دقیقه15-60 دقیقهپرسش خاص بالای 1 ساعت

حلقه‌ی VideoAgent

گام‌به‌گام
  1. LLMسؤال را می‌خواند.
  2. LLMتابع find_clips(keyword='<word>') را برای کلیپ‌های مرتبط صدا می‌زند.
  3. ابزاربرچسب‌های زمانی کلیپ‌های منطبق را برمی‌گرداند.
  4. VLMتعداد 3 کلیپ 30 ثانیه‌ای را انکود می‌کند (مجموعاً ~7290 توکن).
  5. 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 به 3Dinflate_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_cap4حداکثر نمونه‌ها در هر ثانیه
total_budget32کل نمونه‌های پویا
tol_iou0.3میزان IoU برای تطابق ارجاع‌دهی
time_kernel3عمق زمانی انبساط
RRF constant60افزودن 1.0 / (60 + rank + 1)
`k` in search5صحنه‌های برتر پس از ادغام
Clip length T8همچنین 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.