قوان-فيل عائلة و ديناميكية-FPS الفيديو
Type: Learn
Languages: Python (stdlib, M-RoPE encoder + dynamic-FPS sampler)
Prerequisites: Phase 12 · 06 (patch-n'-pack)
Time: ~120 minutes
أهداف التعلم
- احسب دورانات M-RoPE ثلاثية المحاور (الزمنية والارتفاع والعرض) و اشرح لماذا كل ثلاثة منها مطلوب.
- اختر استراتيجية أخذ عينات فيديو متحرك واعتبر عن دقة الوهم لكل ثانية مقابل اكتشاف الأحداث
- أسمائهم بأربعة تحديثات جيلية لـ Qwen-VL بالترتيب وما تمكن كل منها.
- سلكية صيغة خروج وكيل JSON على طراز Qwen2.5-VL و تحليل الدعوات الأداة المهيكلة من استجابة VLM.
المشكلة
تم شحن Qwen-VL في أغسطس 2023 كرد مباشر على LLaVA-1.5 و BLIP-2. كانت الفجوة التي استهدفتها فريق Qwen ثلاثية: القرار والفيديو والخروج المهيكلي.
القرار: LLaVA-1.5 تعمل عند 336x336. جيد للصور، لا فائدة من الفاتورة باللغة الصينية أو لقطة شاشة جدول بيانات كثيفة. ابتكار Qwen-VL الأول كان 448x448 وتأريض خروج مربع الحدود، مما يسمح للنموذج توجيه الأشياء.
الفيديو: قام الفيديو-LLaMA بتجميع مبرمجيات لكل إطار وأعطاها إلى LLM. عملت على مقاطع قصيرة، وليس على مقاطع فيديو متعددة الدقائق حيث يكون المحور الزمني هو الإشارة. أراد فريق Qwen مرمجي واحد يفهم الوقت.
إنتاج مهيكل: إصدار LLaVA نصاً حراً. يحتاج وكيل JSON. تم تدريب Qwen-VL على تنسيقات إنتاج JSON صريحة بما في ذلك إحداثيات مربع الحدود كنص.
كل جيل من Qwen-VL يمتد واحد من هذه المحاور الثلاثة.
المفهوم
كوان-فيل (أغسطس 2023)
الجيل الأول: OpenCLIP ViT-bigG/14 كمُخترج (2.5B) ، LLama- متوافق Q-Former (1 خطوة مع 256 استفسارًا) ، قاعدة Qwen-7B. المساهمات:
- 448x448 (ثم SOTA ل VLM مفتوح).
- التأريخ: تدرب على أزواج الصور والنص مع إنتاج واضح للترتيبات. "الكاتس في <box>112, 204), (280, 344)</box>".
- التدريب متعدد اللغات الصينية + الإنجليزية من البداية.
المقاييس في ذلك الوقت: منافسة مع GPT-4V في اللغة الإنجليزية، المهيمنة على الصينية.
Qwen2-VL (سبتمبر 2024) M-RoPE والتحديد الأصلي
استبدل Qwen2-VL كومة Q-Former ذات القرار الثابت بمحاسن ViT ذو القرار الديناميكي الأصلي. تغييرات رئيسية:
- قرار ديناميكي محلي. تقبل ViT أي HxW قابلة للقسم بـ 28 (البطش 14 مع 2x الاندماج الفضائي). صورة عند 1120x672 (40x24 البطشات المدمجة) تنتج 960 رمزًا بصريًا. لا يوجد حجم ، لا توزيع ، لا تمثيل.
- M-RoPE (RoPE متعدد الطرق). كل رمز يحمل موقف 3D (t، h، w) بدلاً من 1D. بالنسبة للصور t = 0 ، بالنسبة لفيديو t = frame_index. RoPE يدور المتجهات المطلوبة / المفتاح بمعدل في كل محور. لا يوجد جدول تضمين موقف.
- مُرّبّة MLP، إسقط Q-Former، استخدم MLP ذات طبقة 2 على رموز المزج المدمجة.
- فيديو مع FPS ديناميكي. يتم أخذ عينات فيديو عند 1-2 FPS حسب الافتراض، ولكن النموذج يقبل حسابات الإطار التعسفي.
النتيجة: قوان 2-فيل-7ب تطابق GPT-4o على العديد من المعايير المتعددة الطرق وتغلب عليه على DocVQA (94.5 مقابل 88.4). كان تغيير الهندسة المعمارية الخطوة الحاسمة.
Qwen2.5-VL (فبراير 2025) FPS ديناميكي + الوقت المطلق
كانت المقاطعة الكبرى في Qwen2.5VL هي الفيديو. FPS الديناميكي ليس فقط "مختبر المزيد من الإطارات عند الحاجة".
- رموز الوقت المطلقة بدلاً من مؤشرات الموقف (الإطار 0، 1، 2...) ، استخدموا طوابع الوقت الفعلية. "في 0: 04, القط يقفز". النموذج يرى
<time>0.04</time>الوهم المتداخل مع الوهم الإطار. - FPS ديناميكي. عينة في 1 FPS لقطات بطيئة، 4 + FPS للعمل. المستخدم أو المدرب يختار؛ M-RoPE يتكيف.
- الاهتمام بالمركز في التلفزيون. يتم توزيع الاهتمام الفضائي على النافذة (المحلي داخل الكتل) من أجل التدفق؛ الاهتمام العالمي كل بضع طبقات.
- صيغة خروج JSON الصريحة. تدرب على أداة الاتصال البيانات: "{\"أداة\": \"نقر\", \"مخططات\": [380, 220]}". وكيل جاهز خارج مربع.
- مقياس MRoPE-v2 مقياس المواقع مع الحد الأقصى حجم المدخل حتى لا يتم تشغيل الفيديو لمدة 10 دقائق من نطاق التردد.
مقاييس: Qwen2.5-VL-72B تفوق GPT-4o على معظم مقاييس الفيديو ، وتطابق Gemini 2.0 على الوثائق ، وتحدد SOTA النموذج المفتوح للتأريخ GUI (ScreenSpot: دقة 84٪ مقابل 38% ل GPT-4o).
Qwen3-VL (نوفمبر 2025)
Qwen3-VL هو تحديث تدريجي يوحد بدلاً من إعادة الاختراع: العمود الفقري LLM أكبر (Qwen3-72B) ، وتوسيع بيانات التدريب، وتحسين OCR، وتفكير أقوى عبر "وضع التفكير" Qwen3.
المخرج: بحلول عام 2025 كانت بنية Qwen-VL قد استقر. أجيال إضافية من الحسابات والبيانات على نطاق واسع، وليس البدائية.
M-RoPE رياضياً
كلاسيكية روبي يدور استفسار qمن الامتدادdحسب الموقفmباستخدام إحداثيات مُزدوجة:
q_rot[2i] = q[2i] * cos(m * theta_i) - q[2i+1] * sin(m * theta_i)
q_rot[2i+1] = q[2i] * sin(m * theta_i) + q[2i+1] * cos(m * theta_i)
theta_i = 10000^(-2i/d)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. . .
الفائدة: تشفير الموقع واحد يتعامل مع النص والصور والفيديو دون تشكيل رمز أو جداول المواقع المختلفة.
منطق أخذ العينات الديناميكية-FPS
نظرا للفيديو الذي استمرTالثواني و ميزانية رموز هدف B:
- احسب أقصى عدد المكاسب التي تستطيع تحملها:
fps_max = B / (T * tokens_per_frame). . . - اختر هدف FPS من
{1, 2, 4, 8}هذا يرضيfps <= fps_max. . . - إذا كان الحركة مرتفعاً (تطلبات الطاقة البصرية أو الطلبات المستخدمية الصريحة) ، اختر FPS أعلى. إذا كان الحركة منخفضة، اختر أقل.
- عينة متساوية في الموقع المختار
<time>t</time>الارقام بين الإطارات
Qwen2.5 - VL تدرب هذه المنطق ضمنياً ، عند الاستنتاج يسيطر المستخدم عبر fpsالمعلم: تسلسل عمل 60 ثانية عند 4 FPS مع 81 رمزا لكل إطار = 19440 رمزا، قابلة للإدارة في سياق 32k.
إنتاج العامل المهيكلي
تدريب الوكلاء في Qwen2.5VL يستهدف صراحة المكالمات المهيكلة للأدوات:
{
"tool": "mouse_click",
"coords": [1024, 512],
"button": "left",
"modifier": null
}التحليل هو تحديد: JSON.parse على إنتاج النموذج. مقارنة مع "انقر على (1024, 512) " في الشكل الحر الذي يتطلب التعامل مع regex والغموض. التحول هو السبب في قفزة نقاط ScreenSpot في Qwen2.5-VL من 55% إلى 84%.
استخدمها
code/main.pyتطبيقات:
- حساب موقف M-RoPE لسلسلة معبأة مزيج من النص، ومصطلحات الصورة، وإطار الفيديو.
- عينة FPS ديناميكية: معينة (مدة، ميزانية، motion_level) ، اختر FPS وإصدار طوابع زمنية الإطار.
- جهاز تحليل خروج JSON Qwen2.5 - VL الذي يتعامل مع استجابات المكالمات مع حقل التنسيق.
إشغله، ثم تشعر الفرق عندما تبدل FPS ثابتة ل FPS ديناميكية على فيديو لمدة 5 دقائق.
أرسله
هذا الدرس يُنتجoutputs/skill-qwen-vl-pipeline-designer.md. بالنظر إلى مهمة الفيديو (المراقبة، وكيل، التعرف على الإجراءات، الوصول) ، فإنه ينبعث من تشكيل Qwen2.5 - VL (ميزانية الإطار، استراتيجية FPS، علامة الاهتمام النافذة، وضع وكيل-إخراج) وتقدير التأخير. استخدم هذا كلما قمت بتنفيذ نموذج Qwen-VL- عائلة لمنتج الفيديو.
التمارين
- احسب دورانات M-RoPE لمصطلح في (t=3 ، h=5 ، w=7) مع 48 مخفيًا (16 لكل شريط ، قاعدة theta 10000).
- كم عدد الإطارات التي يتم تسجيلها من خلال كاميرا الأمن لمدة 10 دقائق عند 1 فبص؟ عند 384 قرار مع مجموعة 3x، كم عدد الرموز الإجمالية؟ هل سياق Qwen2.5 - VL الافتراضي 32k يتعامل مع ذلك؟
- اختر FPS ل30 ثانية من التنس تجمع مقابل 30 ثانية من الوصفة التجريبية مقابل 30 ثانية من وكيل واجهة الوصول تسجيل. تبرير كل مع منطق الديناميكية-FPS.
- Qwen2.5VL يُسقط Q-Former بالكامل. لماذا يعمل MLP بسيط في عام 2025 وليس في عام 2023؟ (لمحة: حجم البيانات ونوعية مرموزة).
- تحليل ثلاثة أدوات دعوة JSON Qwen2.5-VL إلى Python Dicts. ما الذي يفشل في JSON غير مصممة بشكل خاطئ وما هي استراتيجية الاسترداد التي يوصي بها كتاب طهي Qwen؟
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| M-RoPE | "Multimodal RoPE" | 3D rotary position embedding with temporal, height, and width bands in the hidden dim |
| Dynamic FPS | "Smart sampling" | Frame sampling rate chosen per video based on motion, duration, and token budget |
| Absolute time token | "Timestamp token" | <time>t</time> interleaved in the sequence so the model sees actual seconds not frame index |
| Window attention | "Local attention" | Spatial self-attention restricted to small windows for speed; global attention added periodically |
| Structured agent output | "JSON mode" | Training data supervision teaching the VLM to emit parseable JSON with coords and tool names |
| min_pixels / max_pixels | "Resolution bounds" | Per-request Qwen2.5-VL controls bounding total pixel count and therefore token count |
| Grounding | "Point-at-it" | Outputting bounding-box coordinates as text tokens; used since Qwen-VL v1 |
المزيد من القراءة
- Bai et al. — Qwen-VL (arXiv:2308.12966)
- Wang et al. — Qwen2-VL (arXiv:2409.12191)
- Qwen Team — Qwen2.5-VL Technical Report (arXiv:2502.13923)
- Qwen Team — Qwen3-VL (arXiv:2511.21631)
- Zhu et al. — InternVL3 (arXiv:2504.10479)
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.