پردازش ویدیو و اسناد تصویری با وضوح بالا همواره یکی از چالشهای پرهزینه در مدلهای بینایی-زبانی (VLM) بوده است. روشهای قدیمی یا تصاویر را بیش از حد فشرده میکردند که به از دست رفتن جزئیات منجر میشد، یا با نرخ فریم ثابت و پردازش مستقل فریمها کانتکست مدل را پر میکردند. خانوادهی مدلهای Qwen-VL با معرفی راهکارهایی مثل M-RoPE و نمونهبرداری فریم پویا، استانداردهای جدیدی برای حل این گلوگاهها تعریف کردند.
درک معماری Qwen2-VL و Qwen2.5-VL به توسعهدهندگان کمک میکند تا ویدیوهای طولانی را بدون انفجار تعداد توکنها تحلیل کنند و خروجیهای ساختاریافتهی دقیق (مانند مختصات اشیا در قالب JSON) برای ایجنتهای نرمافزاری دریافت کنند. در این درس، تحول این خانواده از مدلها را به شکل دقیق و گامبهگام تحلیل میکنیم.
خانوادهی Qwen-VL — شامل Qwen-VL (2023)، Qwen2-VL (2024)، Qwen2.5-VL (2025) و Qwen3-VL (2025) — تاثیرگذارترین تبار مدلهای بینایی-زبانی (VLM) متنباز در سال 2026 است. هر نسل، یک تصمیم معماری تعیینکننده گرفت که بقیهی اکوسیستم متنباز ظرف 12 ماه از آن الگوبرداری کردند: وضوح تصویر ذاتاً پویا از طریق M-RoPE، نمونهبرداری فریم با نرخ فریم پویا (Dynamic-FPS) همراه با همترازی زمانی مطلق، اتنشن پنجرهای در ViT، و فرمتهای ساختاریافته برای خروجی ایجنت. با رسیدن به Qwen3-VL، این فرمول تثبیت شد: یک انکودر 2D-RoPE-ViT با ورودیهایی بر اساس نسبت ابعاد اصلی تصویر، یک پروجکتور MLP متصل به مدل زبانی پایهی بزرگ Qwen3، و مراحل آموزشی با تمرکز ویژه روی OCR، ارجاعدهی مکانی (Grounding)، و رفتارهای ایجنتی به عنوان اهداف درجهیک. این درس این خانواده را به ترتیب زمانی بررسی میکند تا متوجه شوید چرا هر پیچ تنظیم دقیقا در جای فعلیاش قرار دارد.
اهداف یادگیری
- چرخشهای سهمحورهی M-RoPE (زمانی، ارتفاع، عرض) را محاسبه کنید و دلیل نیاز به هر سه محور را توضیح دهید.
- یک استراتژی نمونهبرداری با نرخ فریم پویا برای یک ویدیو انتخاب کنید و موازنهی بین توکن در ثانیه و دقت تشخیص رویداد را بسنجید.
- ارتقاهای چهار نسل Qwen-VL را به ترتیب نام ببرید و بگویید هر کدام چه امکانی را فراهم کردند.
- یک خروجی ایجنتی به سبک JSON در Qwen2.5-VL طراحی کنید و فراخوانیهای ساختاریافتهی ابزار (Tool calls) را از پاسخ VLM بیرون بکشید.
صورت مسئله
مدل Qwen-VL در اوت 2023 به عنوان پاسخی مستقیم به LLaVA-1.5 و BLIP-2 عرضه شد. شکافی که تیم Qwen هدف گرفت سهگانه بود: وضوح تصویر، ویدیو، و خروجی ساختاریافته.
وضوح تصویر: مدل LLaVA-1.5 با رزولوشن 336x336 کار میکرد؛ اندازهای که برای عکسها جواب میداد، اما برای یک فاکتور چینیزبان یا اسکرینشات پر از دادهی یک اکسل کاملاً بلااستفاده بود. اولین نوآوری Qwen-VL ارائهی رزولوشن 448x448 و خروجی مختصات کادر تحدیدکننده (Bounding box) بود تا مدل بتواند دقیقاً به اشیا اشاره کند.
ویدیو: مدل Video-LLaMA انکودرهای تکتک فریمها را پشته میکرد و تحویل LLM میداد. این روش برای کلیپهای کوتاه جواب میداد، نه برای ویدیوهای چنددقیقهای که سیگنال اصلی در بستر محور زمانی نهفته است. تیم Qwen یک انکودر واحد میخواست که مفهوم زمان را درک کند.
خروجی ساختاریافته: مدل LLaVA متنی آزاد تحویل میداد، اما ایجنت به JSON نیاز دارد. Qwen-VL مستقیماً روی فرمتهای خروجی صریح JSON، از جمله مختصات کادر تحدیدکننده در قالب متن، آموزش دید.
هر نسل Qwen-VL یکی از این سه محور را گسترش میدهد.
مفاهیم کلیدی
Qwen-VL (اوت 2023)
نسل اول: انکودر OpenCLIP ViT-bigG/14 با 2.5 میلیارد پارامتر، معماری Q-Former سازگار با LLaMA (تکمرحلهای با 256 پرسوجو)، مدل پایهی Qwen-7B. دستاوردها:
- وضوح تصویر 448x448 (که در آن زمان برای یک VLM متنباز بهترین رکورد یا SOTA بود).
- ارجاعدهی مکانی: آموزش روی جفتهای تصویر-متن با خروجی صریح توکنهای مختصات، مانند: «The cat is at <box>(112, 204), (280, 344)</box>».
- آموزش چندزبانهی چینی و انگلیسی از همان نقطه صفر.
بنچمارکها در آن زمان: رقابت شانه به شانه با GPT-4V در انگلیسی، و برتری مطلق در چینی. نظارت روی ارجاعدهی مکانی برگ برندهی اصلی این نسخه بود.
Qwen2-VL (سپتامبر 2024) — امروپ (M-RoPE) و وضوح تصویر ذاتاً پویا
مدل Qwen2-VL ساختار رزولوشن ثابت + Q-Former را با یک انکودر ViT با وضوح ذاتاً پویا جایگزین کرد. تغییرات کلیدی:
- وضوح تصویر ذاتاً پویا: مدل ViT هر ابعاد HxW بخشپذیر بر 28 را میپذیرد (پچ 14 با ادغام مکانی 2 برابری). تصویری با ابعاد 1120x672 (شامل 40x24 پچ ادغامشده) دقیقاً 960 توکن بصری میسازد؛ بدون هیچ تغییر اندازه، کاشیکاری (Tiling) یا تصویر بندانگشتی.
- الگوریتم M-RoPE (یا Multimodal RoPE): هر توکن به جای موقعیت یکبعدی، یک موقعیت سهبعدی (t, h, w) دارد. برای تصاویر t=0 و برای ویدیو t = frame_index است. روش RoPE بردارهای کوئری و کلید را با فرکانسی مجزا برای هر محور میچرخاند؛ بدون نیاز به جدول امبدینگ مکانی (Positional embedding).
- پروجکتور MLP: حذف Q-Former و استفاده از یک MLP دولایه روی توکنهای پچهای ادغامشده.
- ویدیو با نرخ فریم پویا: ویدیوها به طور پیشفرض با نرخ 1 الی 2 فریم در ثانیه نمونهبرداری میشوند، اما مدل تعداد فریم دلخواه را میپذیرد.
نتیجه: مدل Qwen2-VL-7B در چندین بنچمارک چندحالته با GPT-4o برابری کرد و در DocVQA شکستش داد (94.5 در برابر 88.4). این تغییر معماری، تصمیمی تعیینکننده بود.
Qwen2.5-VL (فوریه 2025) — نرخ فریم پویا + زمان مطلق
تحول بزرگ Qwen2.5-VL در بخش ویدیو رخ داد. نرخ فریم پویا صرفاً به معنی «گرفتن فریمهای بیشتر در صورت لزوم» نیست. این مقاله رویکرد زیر را استاندارد کرد:
- زمان مطلق در شناسههای موقعیت: به جای شمارهی فریمها (فریم 0، 1، 2 و...)، محور زمانی M-RoPE از برچسبهای زمانی واقعی استفاده میکند؛ بنابراین فاصلهی بین شناسهی دو فریم دقیقاً نشاندهندهی ثانیههای سپریشده بین آنهاست: «در ثانیهی 0:04، گربه میپرد». هیچ توکن متنی اضافی زمان را حمل نمیکند و در نتیجه این کدگذاری طول توالی را بالا نمیبرد.
- نرخ فریم پویا: نمونهبرداری با 1 فریم در ثانیه برای صحنههای آرام و 4 فریم یا بیشتر برای سکانسهای پرتحرک. کاربر یا پایپلاین آموزش این نرخ را مشخص میکنند و M-RoPE با آن هماهنگ میشود.
- اتنشن پنجرهای در ViT: اتنشن مکانی برای بالا بردن نرخ پردازش (Throughput)، به صورت پنجرهای (محلی داخل بلوکها) اجرا میشود و اتنشن سراسری هر چند لایه یکبار اعمال میگردد.
- فرمت خروجی صریح JSON: آموزشدیده روی دادههای فراخوانی ابزار:
{"tool": "click", "coords": [380, 220]}؛ یعنی آماده برای کاربردهای ایجنتی بدون نیاز به پردازش ثانویه. - مقیاسپذیری MRoPE-v2: موقعیتها متناسب با حداکثر اندازهی ورودی مقیاس میشوند تا یک ویدیوی 10 دقیقهای از محدودهی فرکانسی خارج نشود.
بنچمارکها: مدل Qwen2.5-VL-72B در اغلب بنچمارکهای ویدیویی GPT-4o را پشت سر میگذارد، در تحلیل اسناد همپای Gemini 2.0 پیش میرود و بهترین رکورد مدلهای متنباز را برای ارجاعدهی رابط کاربری ثبت میکند (ScreenSpot: دقت 84% در برابر 38% مدل GPT-4o).
Qwen3-VL (نوامبر 2025)
مدل Qwen3-VL یک ارتقای تدریجی است که به جای بازتعریف همهچیز، پایهها را محکمتر کرده است: بکبون زبانی بزرگتر (Qwen3-72B)، دادههای آموزشی گستردهتر، OCR قویتر، و توان استدلال بالاتر از طریق حالت تفکر (Thinking mode) مدل Qwen3. معماری ViT و M-RoPE دستنخورده باقی ماندند. مقالهی این نسخه بیش از معماری، روی داده و پیشرفتهای آموزشی تمرکز دارد.
پیام اصلی این مسیر: تا سال 2025 معماری Qwen-VL به تکامل و پایداری رسید؛ نسلهای بعدی تنها توان محاسباتی و دادهها را مقیاس میکنند، نه المانهای پایهای معماری را.
مبانی ریاضی M-RoPE
الگوریتم سنتی RoPE یک کوئری q با بعد d را بر اساس موقعیت m با استفاده از مختصات جفتشده میچرخاند:
روش M-RoPE بعد پنهان را به سه بخش تقسیم میکند؛ مثلاً اگر d = 96 باشد، 32 بعد به زمان، 32 بعد به ارتفاع، و 32 بعد به عرض اختصاص داده میشود. هر بخش با موقعیت محور مربوط به خودش دوران مییابد. به عنوان مثال، یک پچ در مختصات (t=5, h=10, w=20)، چرخشهای R_t(5)، R_h(10)، و R_w(20) را روی سه بخش خود دریافت میکند.
توکنهای متنی از t = text_index, h = 0, w = 0 (یا یک مقدار نرمالشده) استفاده میکنند تا سازگاری حفظ شود. فریمهای ویدیو از t = frame_time, h = row, w = col استفاده میکنند و تصاویر تکفریم با t = 0 مقداردهی میشوند.
مزیت این رویکرد: یک سیستم امبدینگ مکانی واحد، بدون نیاز به branch در کد یا جدولهای موقعیت جداگانه، متن، تصویر و ویدیو را مدیریت میکند.
منطق نمونهبرداری با نرخ فریم پویا
فرض کنید ویدیویی با مدتزمان T ثانیه و سقف بودجهی توکن B دارید:
- حداکثر نرخ فریم مجاز را حساب کنید:
fps_max = B / (T * tokens_per_frame). - یک نرخ فریم هدف از مجموعهی
{1, 2, 4, 8}انتخاب کنید که در شرطfps <= fps_maxصدق کند. - اگر تحرک صحنه بالا بود (با استفاده از روشهای جریان نوری یا تعیین مستقیم کاربر)، نرخ فریم بالاتر و اگر حرکت کم بود، نرخ فریم پایینتر را بردارید.
- نمونهبرداری را با نرخ فریم انتخابی به شکل یکنواخت اجرا کنید؛ سپس شناسهی زمانی M-RoPE هر فریم را بر اساس برچسب زمانی آن به ثانیه ثبت کنید.
مدل Qwen2.5-VL این منطق را حین آموزش به شکل ضمنی یاد میگیرد؛ هنگام استنتاج (Inference)، کاربر با پارامتر fps آن را کنترل میکند. یک سکانس پرتحرک 60 ثانیهای با نرخ 4 فریم در ثانیه و 81 توکن برای هر فریم، معادل 19440 توکن تولید میکند که به راحتی در کانتکست 32k جا میگیرد.
خروجی ساختاریافتهی ایجنت
فرایند آموزش ایجنتی در Qwen2.5-VL مستقیماً روی فراخوانیهای ساختاریافتهی ابزار تمرکز دارد:
{
"tool": "mouse_click",
"coords": [1024, 512],
"button": "left",
"modifier": null
}
پارس کردن خروجی کاملاً قطعی است: اجرای مستقیم JSON.parse روی خروجی مدل. این ساختار را با متن آزاد مانند «click at (1024, 512)» مقایسه کنید که نیازمند رجکس و هندل کردن ابهامات متنی بود. دلیل پرش امتیاز ScreenSpot این مدل از 55% در Qwen2-VL به 84% در Qwen2.5-VL دقیقاً همین تغییر است.
پیادهسازی و اجرا
فایل code/main.py این بخشها را پیادهسازی میکند:
- محاسبهی موقعیت M-RoPE برای یک توالی فشرده (Packed sequence) متشکل از متن، پچهای تصویر و فریمهای ویدیو.
- نمونهگیر نرخ فریم پویا: با گرفتن (duration, budget, motion_level)، نرخ فریم مناسب را انتخاب میکند و برچسبهای زمانی فریمها را تحویل میدهد.
- یک پارسر ساده برای خروجی JSON در Qwen2.5-VL که فراخوانیهای ابزار را همراه با فیلدهای مختصات پردازش میکند.
کد را اجرا کنید و تفاوت سوییچ از نرخ فریم ثابت به نرخ فریم پویا را روی یک ویدیوی 5 دقیقهای در عمل ببینید.
خروجی کاربردی
این درس فایل outputs/skill-qwen-vl-pipeline-designer.md را تولید میکند. این ابزار بر اساس تسک ویدیویی مدنظرتان (نظارت تصویری، ایجنت، تشخیص کنش، دسترسپذیری)، پیکربندی بهینهی Qwen2.5-VL (بودجهی فریم، استراتژی FPS، پرچم اتنشن پنجرهای، حالت خروجی ایجنت) را همراه با تخمین تاخیر تحویل میدهد. هر زمان که خواستید مدلی از خانوادهی Qwen-VL را برای یک محصول ویدیویی مستقر کنید، به این راهنما تکیه کنید.
تمرینها
-
چرخشهای M-RoPE را برای یک پچ در مختصات (t=3, h=5, w=7) با بعد پنهان 48 (16 بعد به ازای هر باند، مقدار پایهی تتا 10000) محاسبه کنید. زوایای چرخش را برای سه جفت اول در هر بخش بنویسید.
-
ضبط 10 دقیقهای یک دوربین مداربسته با نرخ 1 فریم در ثانیه چه تعداد فریم ایجاد میکند؟ با رزولوشن 384 و کاهش 3 برابری با پولینگ، حجم کل توکنها چقدر میشود؟ آیا پنجرهی کانتکست پیشفرض 32k در Qwen2.5-VL پاسخگوی آن خواهد بود؟
-
نرخ فریم مناسب را برای یک مسابقهی تنیس 30 ثانیهای، یک ویدیوی آموزش آشپزی 30 ثانیهای، و ضبط 30 ثانیهای کار با رابط کاربری توسط یک ایجنت انتخاب کنید. برای هر مورد بر اساس منطق نمونهبرداری با نرخ فریم پویا دلیل بیاورید.
-
مدل Qwen2.5-VL ماژول Q-Former را کاملاً حذف کرد. چرا یک پروجکتور MLP ساده در سال 2025 جواب میدهد اما در سال 2023 کافی نبود؟ (راهنمایی: مقیاس دادهها و کیفیت انکودر.)
-
سه خروجی JSON فراخوانی ابزار از Qwen2.5-VL را در قالب دیکشنریهای پایتون پارس کنید. در صورت مواجهه با یک JSON خراب چه خطایی رخ میدهد و راهنمای رسمی Qwen چه راهحلی را برای بازیابی پیشنهاد میکند؟
اصطلاحات کلیدی
| اصطلاح | در گفتار عامیانه | معنای دقیق فنی |
|---|---|---|
| M-RoPE | «روپ چندحالته» | امبدینگ موقعیت دورانی سهبعدی با باندهای زمانی، ارتفاع و عرض در بعد پنهان |
| Dynamic FPS | «نمونهبرداری هوشمند» | تعیین نرخ نمونهبرداری فریم برای هر ویدیو بر اساس میزان حرکت، مدتزمان و سقف توکن |
| Absolute time encoding | «M-RoPE همتراز با زمان» | تعیین شناسههای موقعیت زمانی بر اساس زمان واقعی هر فریم، تا مدل بدون تولید توکن اضافی، ثانیههای واقعی را به جای شماره فریم ببیند |
| Window attention | «اتنشن محلی» | محدود کردن خوداتنشن مکانی به پنجرههای کوچک برای افزایش سرعت، همراه با اعمال اتنشن سراسری به شکل دورهای |
| Structured agent output | «حالت JSON» | آموزش مدل برای تولید تضمینی خروجیهای ساختاریافتهی JSON شامل مختصات و نام ابزار |
| min_pixels / max_pixels | «محدودهی وضوح» | تنظیمات هر درخواست در Qwen2.5-VL برای کنترل سقف تعداد پیکسلها و تعداد توکنهای نهایی |
| Grounding | «اشاره به شیء» | بازگرداندن مختصات کادر تحدیدکننده به عنوان توکنهای متنی؛ تکنیکی که از نسخهی اول Qwen-VL حضور دارد |
