مدلهای زبانی بزرگ تنها زبانی متنی بر پایهی دنبالهای از بردارها را میفهمند. برای اینکه ترنسفورمرها بتوانند با تصویر تعامل داشته باشند، باید دادههای بصری را بدون تحمیل هزینههای محاسباتی سرسامآور پیکسلی به فرمت توکن تبدیل کرد. معماری ترنسفورمرهای بینایی (Vision Transformer یا ViT) دقیقاً همان گام اساسی است که پایهی تمامی مدلهای چندوجهی مدرن (VLM) را شکل میدهد.
درک سازوکار تکهتکه کردن تصویر (Patching)، افزودن امبدینگ مکانی و نقش توکنهای رجیستر، پایهایترین مهارتی است که به مهندسان دید دقیقی از مدیریت طول توکنها و مصرف حافظه در پردازش محتوای چندوجهی میدهد. اجرای محاسبات و منطق پیادهسازی این درس صرفاً با کتابخانهی استاندارد Python انجام میشود و به GPU ابری یا پیشنیازهای سنگین وابسته نیست.
پیش از هر پردازش چندوجهی (multimodal)، تصویر باید به دنبالهای از توکنها تبدیل شود تا ترنسفورمر (Transformer) بتواند آن را مصرف کند. مقالهی سال 2020 مدل ViT این مسئله را با تکههای 16x16 پیکسلی، تصویر کردن خطی (linear projection) و امبدینگ مکانی (positional embedding) حل کرد. پنج سال بعد، همهی مدلهای پیشروی سال 2026 (نظیر Claude Opus 4.7 با وضوح بومی 2576 پیکسل، Gemini 3.1 Pro و Qwen3.5-Omni) هنوز کار خود را به همین شکل آغاز میکنند؛ انکودر از ViT به DINOv2 و سپس SigLIP 2 تغییر یافته، توکنهای رجیستر (register tokens) اضافه شدهاند و ساختار مکانی به 2D-RoPE تبدیل شده، اما هستهی اصلی دستنخورده باقی مانده است. در این درس، پایپلاین «تکه به توکن» را از ابتدا تا انتها بررسی میکنیم و آن را با کتابخانهی استاندارد Python پیاده میسازیم تا برای ادامهی فاز 12، مدل ذهنی ملموسی از «توکنهای بصری» داشته باشید.
اهداف یادگیری
- تبدیل تصویر HxWx3 به دنبالهای از توکنهای تکهای با کدگذاری مکانی (positional encoding) صحیح.
- محاسبهی طول دنباله، تعداد پارامترها و FLOPs برای یک ViT با مشخصات معین (اندازهی تکه، وضوح، بعد پنهان، عمق).
- نام بردن از سه ارتقایی که ViT را از پژوهشهای 2020 به محیط عملیاتی 2026 رساند: پیشآموزش خودنظارتی (DINO / MAE)، توکنهای رجیستر و بستهبندی در وضوح بومی (native-resolution packing).
- انتخاب آگاهانه میان تجمیع با توکن CLS، میانگینگیری (mean pooling) و توکنهای رجیستر برای تسکهای پاییندستی.
صورت مسئله
ترنسفورمرها روی دنبالهای از بردارها کار میکنند. متن بهخودیخود یک دنباله است (بایتها یا توکنها). اما تصویر یک شبکهی دوبعدی از پیکسلها با سه کانال رنگی است، نه یک دنباله. اگر همهی پیکسلها را در قالب یک بردار تخت (flatten) کنید، یک تصویر RGB با ابعاد 224x224 تبدیل به 150,528 توکن میشود؛ اجرای خوداتنشن (Self-Attention) روی چنین طولی عملاً ناممکن است (چون هزینهی آن با طول دنباله رابطهی درجهدو دارد).
رویکردهای پیش از 2020، یک استخراجکنندهی ویژگی CNN را به ابتدای کار متصل میکردند: مثلاً ResNet یک نقشهی ویژگی (feature map) به ابعاد 7x7 از بردارهای 2048-بعدی میساخت و آن 49 توکن به ترنسفورمر داده میشدند. این روش کار میکرد، اما سوگیریهای ذاتی CNN (مانند همواریانس با انتقال [translation equivariance] و میدانهای دید [receptive fields] محلی) را به ارث میبرد و اشتهای ترنسفورمر برای مقیاسپذیری را خفه میکرد.
دوسوویتسکی و همکاران (2020) سؤالی صریح و بیپرده پرسیدند: چه میشود اگر کلاً CNN را کنار بگذاریم؟ تصویر را به تکههایی با اندازهی ثابت (مثلاً 16x16 پیکسل) برش بزنید، هر تکه را با تصویر کردن خطی به یک بردار تبدیل کنید، امبدینگ مکانی را بیفزایید و دنبالهی حاصل را به یک ترنسفورمر استاندارد بدهید. در آن زمان، این ایده بدعت به شمار میرفت: بینایی ماشین بدون کانولوشن! اما با دادهی کافی (ابتدا JFT-300M و سپس LAION)، این روش ResNet را روی ImageNet شکست داد و مدام بهتر شد.
تا سال 2026، ساختار پایهای ViT به پایهای بیچونوچرا تبدیل شده است. برج بینایی (vision tower) در تمام مدلهای زبانیبصری (VLM) با وزنهای باز، نسخهای از نسل همین ایده است (DINOv2، SigLIP 2، CLIP، EVA، InternViT). دیگر سؤال این نیست که «آیا باید از تکهها استفاده کنیم؟»، بلکه این است: «چه اندازهای برای تکهها، چه برنامهای برای وضوح، چه هدفی برای پیشآموزش و چه نوع کدگذاری مکانی انتخاب شود؟»
مفاهیم پایه
تکهها در نقش توکن
اگر تصویری با نام x و ابعاد (H, W, 3) و اندازهی تکهی P داشته باشید، تصویر را به شبکهای از (H/P) x (W/P) تکهی بدون همپوشانی تقسیم میکنید. هر تکه، مکعبی از پیکسلها با ابعاد P x P x 3 است. هر مکعب را به یک بردار با طول 3 P^2 تخت میکنید. سپس ماتریس تصویر کردن خطی مشترک W_E با ابعاد (3 P^2, D) را اعمال میکنید تا هر تکه به بعد پنهان مدل (D) نگاشت شود.
برای پیکربندی استاندارد ViT-B/16:
- وضوح 224، اندازهی تکه 16 ← شبکهی 14x14 ← 196 توکن تکهای.
- هر تکه شامل
16 x 16 x 3 = 768مقدار پیکسلی است که بهD = 768تصویر میشود. - افزودن یک توکن کلاس (
[CLS]) قابلیادگیری ← طول دنباله 197.
تصویر کردن تکهها از نظر ریاضی دقیقاً معادل یک کانولوشن دوبعدی با اندازهی کرنل (kernel) برابر با P، استراید (stride) برابر با P و D کانال خروجی است. کد محیطهای عملیاتی نیز دقیقاً همینطور پیاده میشود: nn.Conv2d(3, D, kernel_size=P, stride=P). بیان قضیه در قالب «تصویر کردن خطی» یک چارچوب مفهومی است، اما استفاده از کرنل از نظر محاسباتی بهینهتر است.
امبدینگهای مکانی
تکهها فینفسه ترتیبی ندارند؛ ترنسفورمر آنها را صرفاً کیسهای از دادهها میبیند. مدلهای اولیهی ViT یک امبدینگ مکانی یکبعدیِ قابلیادگیری اضافه میکردند (یک بردار 768-بعدی برای هر موقعیت؛ یعنی 197 بردار). این کار جواب میداد، اما مدل را به وضوح تصویرِ زمان آموزش قفل میکرد: در زمان استنتاج، اگر ابعاد شبکه را تغییر میدادید، ناچار بودید جدول موقعیتها را درونیابی کنید.
بکبونهای مدرن بینایی از 2D-RoPE (مثل M-RoPE در Qwen2-VL و حالت پیشفرض SigLIP 2) یا موقعیتهای دوبعدی تفکیکشده استفاده میکنند. تکنیک 2D-RoPE بر اساس اندیس (سطر، ستون) تکه، بردارهای query و key را میچرخاند؛ بنابراین مدل موقعیت دوبعدی نسبی را مستقیماً از زاویهی چرخش استنتاج میکند و به جدول موقعیتها نیازی ندارد. به این ترتیب، مدل در زمان استنتاج بدون مشکل با شبکههایی با ابعاد دلخواه کار میکند.
توکن CLS، خروجی تجمیعشده و توکنهای رجیستر
نمایش کل تصویر در سطح کلی چگونه به دست میآید؟ سه رویکرد همزمان وجود دارد:
- توکن
[CLS]. یک بردار قابلیادگیری را در ابتدای دنبالهی تکهها میگذارید. پس از گذر از همهی بلوکهای ترنسفورمر، وضعیت پنهان (hidden state) این توکن، نمایش کل تصویر خواهد بود. این رویکرد از BERT به ارث رسیده و در ViT اصلی و CLIP استفاده شده است. - میانگینگیری (Mean pool). وضعیت پنهان خروجیِ همهی توکنهای تکهای را میانگین میگیرید. این روش در SigLIP، DINOv2 و بیشتر VLMهای مدرن کاربرد دارد.
- توکنهای رجیستر. دارسه و همکاران (2023) دریافتند مدلهای ViT که بدون توکن چاهک (sink token) صریح آموزش میبینند، تکههایی با نُرم بالا و غیرعادی («آرتیفکت») ایجاد میکنند که خوداتنشن را میربایند و از مسیر خارج میکنند. افزودن 4 تا 16 توکن رجیستر قابلیادگیری، این بار را جذب میکند و کیفیت پیشبینی متراکم (dense prediction؛ مانند بخشبندی و تخمین عمق) را بالا میبرد. هر دو مدل DINOv2 و SigLIP 2 همراه با توکنهای رجیستر عرضه میشوند.
این انتخاب برای تسکهای پاییندستی نقشی کلیدی دارد. توکن CLS برای دستهبندی عالی است. اما در VLMهایی که توکنهای تکهای را به LLM میفرستند، تجمیع را کاملاً کنار میگذارید؛ هر تکه مستقیماً به یک توکن ورودی برای LLM تبدیل میشود. توکنهای رجیستر نیز پیش از ارسال دادهها به LLM دور ریخته میشوند (چون نقش داربست کمکی دارند، نه محتوا).
پیشآموزش: نظارتشده، مقابلهای، پوشانده، خودتقطیرشده
مدل ViT در سال 2020 با دستهبندی نظارتشده روی JFT-300M پیشآموزش دید، اما خیلی زود جای خود را به روشهای زیر داد:
- مدل CLIP (سال 2021): یادگیری مقابلهای تصویر-متن روی 400 میلیون جفتداده (درس 12.02).
- مدل MAE (سال 2021، هه و همکاران): پوشاندن 75 درصد از تکهها و بازسازی پیکسلها؛ روشی خودنظارتی که روی تصویر خالص کار میکند.
- مدل DINO (سال 2021) / DINOv2 (سال 2023): خودتقطیری (self-distillation) با ساختار شاگرد-استاد، بدون برچسب و بدون کپشن. مدل DINOv2 ViT-g/14 محصول 2023، قویترین بکبون صرفاً بصری و انتخاب پیشفرض برای سناریوهای نیازمند «ویژگیهای متراکم» است.
- مدل SigLIP / SigLIP 2 (سالهای 2023 و 2025): مدل CLIP با تابع زیان (loss) سیگموئید و NaFlex برای نسبت ابعاد بومی. این مدل، برج بینایی پیشتاز در VLMهای متنباز سال 2026 است (مانند Qwen، Idefics2، LLaVA-OneVision).
انتخاب شیوهی پیشآموزش تعیین میکند که بکبون شما برای چه کاری مناسب است: CLIP/SigLIP برای تطابق معنایی با متن، DINOv2 برای ویژگیهای متراکم بصری، و MAE به عنوان نقطهی شروع فاینتیون تسکهای پاییندستی.
قوانین مقیاسپذیری
پژوهش قوانین مقیاسپذیری (Scaling Laws) در ViT (ژای و همکاران، 2022) مشخص کرد که کیفیت ViT از الگوهایی کاملاً پیشبینیپذیر بر حسب اندازهی مدل، حجم داده و بودجهی محاسباتی پیروی میکند. در بودجهی محاسباتی ثابت:
- مدل بزرگتر + دادهی بیشتر ← کیفیت بهتر.
- اندازهی تکه، اهرمی برای تنظیم طول دنباله در برابر وضوح جزئیات است. تکهی اندازهی 14 (رایج در DINOv2/SigLIP SO400m) در مقایسه با تکهی 16، توکنهای بیشتری برای هر تصویر میسازد؛ این کار کیفیت OCR و تسکهای متراکم را بالا میبرد، اما سرعت را فدا میکند.
- وضوح تصویر، اهرم اصلی دیگر است. رفتن از 224 به 384 و سپس به 512 تقریباً همیشه مفید است، اما هزینهی FLOPs آن به صورت درجهدو رشد میکند.
مدلهای ViT-g/14 (با 1 میلیارد پارامتر، تکهی 14 و وضوح 224 ← 256 توکن) و SigLIP SO400m/14 (با 400 میلیون پارامتر و تکهی 14)، دو انکودر اساسی و پرکاربرد در VLMهای متنباز 2026 هستند.
تعداد پارامترهای یک مدل ViT
محاسبات کامل در فایل code/main.py آمده است. برای ViT-B/16 در وضوح 224:
patch_embed = 3 * 16 * 16 * 768 + 768 = 591k
cls + pos = 768 + 197 * 768 = 152k
block = 4 * 768^2 (QKVO) + 2 * 4 * 768^2 (MLP) + 2 * 2*768 (LN)
= 12 * 768^2 + 3k = 7.1M
12 blocks = 85M
final LN = 1.5k
total ≈ 86M
پیش از آنکه چکپوینت (checkpoint) مدلی را لود کنید، همیشه ابعاد آن را به این شیوه سرانگشتی بسنجید. حجم بکبون، حداقل حافظهی گرافیکی (VRAM) مورد نیاز شما را در هر VLM پاییندستی دیکته میکند.
پیکربندی عملیاتی سال 2026
انکودری که بیشتر VLMهای متنباز سال 2026 به همراه دارند، SigLIP 2 SO400m/14 در وضوح بومی (NaFlex) است. این پیکربندی شامل مشخصات زیر است:
- 400 میلیون پارامتر.
- اندازهی تکهی 14، وضوح پیشفرض 384 ← 729 توکن تکهای برای هر تصویر.
- میانگینگیری برای تسکهای کلی در سطح تصویر؛ ارسال تمام 729 تکه به LLM برای VQA (پاسخگویی به سؤالات بصری).
- 4 توکن رجیستر که قبل از تحویل توکنها به LLM حذف میشوند.
- سیستم 2D-RoPE با مقیاسبندی در سطح تصویر برای پشتیبانی از نسبت ابعاد (Aspect ratio) بومی.
تکتک تصمیمهای این معماری بر پایهی مقالاتی بنا شده که میتوانید آنها را مطالعه کنید.
استفاده در عمل
فایل code/main.py یک توکنایزر تکهای و ابزار محاسبهی هندسهی مدل است. این کد پارامترهای تصویر (ارتفاع H، عرض W، اندازهی تکه P، بعد پنهان D و عمق L) را میگیرد و اطلاعات زیر را محاسبه میکند:
- شکل شبکه و طول دنباله پس از ساخت تکهها.
- دنبالهی توکنها برای یک تصویر مصنوعی کوچک با ابعاد 8x8 پیکسل (بررسی گامبهگام مسیرِ تخت کردن و تصویر کردن).
- تفکیک تعداد پارامترها بر حسب امبدینگ تکهها (patch embed)، امبدینگ مکانی، بلوکهای ترنسفورمر و سر (head) مدل.
- مقدار FLOPs در هر گذر رو به جلو (forward pass) در وضوح هدف.
- جدول مقایسهای میان ViT-B/16 @ 224، ViT-L/14 @ 336، DINOv2 ViT-g/14 @ 224 و SigLIP SO400m/14 @ 384.
اسکریپت را اجرا کنید. تعداد پارامترها را با ارقام رسمی مقالات مطابقت دهید. با تغییر اندازهی تکه و وضوح تصویر، بالا رفتن هزینهی تولید توکنها را به چشم ببینید.
تحویل خروجی
خروجی این درس، تولید فایل outputs/skill-patch-geometry-reader.md است. این ابزار بر اساس مشخصات معماری ViT (اندازهی تکه، وضوح، بعد پنهان، عمق)، تعداد توکنها، شمار پارامترها و حافظهی گرافیکی مورد نیاز را با استدلال فنی تخمین میزند. هر زمان خواستید برای یک VLM یک بکبون بینایی انتخاب کنید، از این مهارت بهره ببرید تا با شگفتی ناخوشایند «انفجار توکنها و پر شدن کانتکست LLM» روبهرو نشوید.
تمرینها
-
طول دنبالهی توکنهای تکهای را برای مدل Qwen2.5-VL با ورودی بومی 1280x720 و اندازهی تکهی 14 محاسبه کنید. این عدد چه تفاوتی با بازنمایی مبتنی بر تکتوکن CLS دارد؟
-
یک فریم 1080p با ابعاد (1920x1080) و تکهی اندازهی 14 چند توکن تولید میکند؟ در نرخ 30 فریم بر ثانیه برای یک ویدیوی 5 دقیقهای، چند توکن بصری ساخته میشود؟ کدام تکنیک بیشترین صرفهجویی را دارد: تجمیع، نمونهبرداری فریم (Frame Sampling)، یا ادغام توکنها (token merging)؟
-
میانگینگیری روی توکنهای تکهای را با Python خالص پیادهسازی کنید. بررسی کنید که آیا حاصل میانگینگیریِ 196 توکن خروجی DINOv2، دقیقاً با مقداری که متد
forwardمدل هنگام درخواست امبدینگ تجمیعشده برمیگرداند همخوانی دارد یا نه. -
بخش 3 از مقالهی «Vision Transformers Need Registers» (شناسه: arXiv:2309.16588) را بخوانید. در دو جمله بنویسید توکنهای رجیستر چه نوع آرتیفکتی را جذب میکنند و چرا این مسئله برای تسکهای پیشبینی متراکم در مراحل بعد اهمیت دارد.
-
فایل
code/main.pyرا ویرایش کنید تا از روش patch-n'-pack پشتیبانی کند: با گرفتن فهرستی از تصاویر با وضوحهای مختلف، یک دنبالهی بستهبندیشدهی واحد همراه با ماسک اتنشن قطریبلوکی خروجی دهد. درستی عملکرد آن را هنگام رسیدن به درس 12.06 ارزیابی کنید.
اصطلاحات کلیدی
| اصطلاح | معنای عامیانه | مفهوم دقیق فنی |
|---|---|---|
| تکه (Patch) | «مربع پیکسلی 16x16» | ناحیهای با اندازهی ثابت و بدون همپوشانی از تصویر ورودی؛ که به یک توکن تبدیل میشود |
| امبدینگ تکهها (Patch embedding) | «تصویر کردن خطی» | یک ماتریس وزن مشترک (یا لایهی Conv2d با استراید برابر با P) که پیکسلهای تختشدهی تکه را به بردارهایی D-بعدی مینگارد |
| توکن کلاس (CLS token) | «توکن دستهبندی» | بردار قابلیادگیری ابتدای دنباله که وضعیت پنهان نهایی آن نمایندهی کل تصویر است؛ استفاده از آن در سال 2026 اختیاری شده است |
| توکن رجیستر (Register token) | «توکن چاهک» | توکنهای قابلیادگیری اضافه که آرتیفکتهای اتنشن با نُرم بالا را (که حین پیشآموزش در مدلهای ViT پدید میآید) جذب میکنند |
| امبدینگ مکانی (Positional embedding) | «اطلاعات مکانی» | بردار یا چرخشی اختصاصی برای هر جایگاه که دنباله را نسبت به ترتیب مکانی آگاه میسازد؛ 2D-RoPE استاندارد مدرن آن است |
| شبکه (Grid) | «شبکهی تکهها» | آرایهی دوبعدی تکهها به ابعاد (H/P) x (W/P) برای یک وضوح و اندازهی تکهی مشخص |
| قابلیت NaFlex | «وضوح بومی انعطافپذیر» | ویژگی خاص مدل SigLIP 2 که بدون نیاز به آموزش مجدد، از چندین نسبت ابعاد و وضوح مختلف پشتیبانی میکند |
| بکبون (Backbone) | «برج بینایی» | انکودر تصویر پیشآموزشدیدهای که خروجی توکنهای تکهای آن وارد LLM در یک مدل چندوجهی میشود |
| تجمیع (Pooling) | «خلاصهسازی در سطح تصویر» | استراتژی تبدیل توکنهای تکهای به یک بردار واحد: CLS، میانگینگیری، اتنشن، یا مبتنی بر رجیستر |
| تکه 14 در برابر 16 (Patch 14 vs 16) | «شبکهی ریزتر در برابر درشتتر» | تکهی 14 توکنهای بیشتری به ازای هر تصویر میسازد و جزئیات بهتری برای OCR دارد ولی کندتر است؛ تکهی 16 گزینهی پیشفرض کلاسیک است |
برای مطالعهی بیشتر
- مقاله دوسوویتسکی و همکاران — An Image is Worth 16x16 Words (شناسه: arXiv:2010.11929) — مقالهی معرفی ViT اصلی.
- مقاله هه و همکاران — Masked Autoencoders Are Scalable Vision Learners (شناسه: arXiv:2111.06377) — مدل MAE، خودرمزگذار پوشانده و پیشآموزش خودنظارتی.
- مقاله اوکاب و همکاران — DINOv2 (شناسه: arXiv:2304.07193) — خودتقطیری در مقیاس وسیع بدون دادههای برچسبدار.
- مقاله دارسه و همکاران — Vision Transformers Need Registers (شناسه: arXiv:2309.16588) — توکنهای رجیستر و تحلیل آرتیفکتهای بینایی.
- مقاله چانن و همکاران — SigLIP 2 (شناسه: arXiv:2502.14786) — برج بینایی استاندارد در سال 2026.
- مقاله ژای و همکاران — Scaling Vision Transformers (شناسه: arXiv:2106.04560) — قوانین مقیاسپذیری تجربی برای ترنسفورمرهای بینایی.
