خانه / هوش مصنوعی (AI) / از CNN تا Vision Transformer: چگونه ViT دنیای بینایی کامپیوتری را تغییر داد؟

از CNN تا Vision Transformer: چگونه ViT دنیای بینایی کامپیوتری را تغییر داد؟

از CNN تا Vision Transformer: چگونه ViT دنیای بینایی کامپیوتری را تغییر داد؟

زمان مطالعه:

13
دقیقه

انتشار:

به‌روزرسانی:

تعداد نظرات: 0

در سال‌های اخیر، مدل‌های مبتنی بر Transformer architecture که ابتدا در حوزه پردازش زبان طبیعی (NLP) به موفقیت رسیدند، به‌تدریج مسیر خود را به دنیای بینایی کامپیوتری باز کرده‌اند. یکی از مهم‌ترین نتایج این تغییر، ظهور Vision Transformer (ViT) است؛ مدلی که تلاش می‌کند همان قدرت Transformerها در درک توالی را به داده‌های تصویری تعمیم دهد. تا پیش از این، معماری‌های مبتنی بر شبکه‌های کانولوشنی یا Convolutional Neural Network (CNN) انتخاب اصلی برای پردازش تصویر بودند؛ اما این مدل‌ها با محدودیت‌هایی مثل درک محلی تصویر (local receptive field) و وابستگی به biasهای طراحی‌شده مواجه‌اند. در چنین شرایطی، ورود Transformerها به این حوزه، نگاه جدیدی به مسئله درک تصویر ایجاد کرده است. نگاهی که به‌جای تمرکز بر بخش‌های کوچک، کل تصویر را به‌صورت یک توالی قابل تحلیل در نظر می‌گیرد.

در این مقاله، به‌صورت گام‌به‌گام بررسی می‌کنیم که Vision Transformer یا ViT چیست و چگونه کار می‌کند، چرا استفاده از Transformer برای تصویر اهمیت پیدا کرده و این رویکرد چه تفاوت‌هایی با CNNهای کلاسیک دارد. همچنین به معماری داخلی ViT، نحوه تبدیل تصویر به patch، مکانیزم attention و نقش آن در تصمیم‌گیری مدل می‌پردازیم. در ادامه، مزایا و محدودیت‌های این مدل، نمونه‌های مهم آن و کاربردهای عملی‌اش را مرور می‌کنیم تا در نهایت بتوانید تصمیم بگیرید در چه سناریوهایی استفاده از Vision Transformer انتخاب مناسبی برای شما به‌عنوان یک توسعه‌دهنده خواهد بود.

Vision Transformer چیست؟

vision transformer

Vision Transformer یا ViT در ساده‌ترین تعریف، مدلی در حوزه بینایی کامپیوتری است که به‌جای استفاده از ساختارهای کلاسیک مثل Convolutional Neural Network، از معماری Transformer برای پردازش تصویر استفاده می‌کند. ایده اصلی این مدل این است که تصویر را نه به‌عنوان یک ساختار دوبعدی پیوسته، بلکه به‌عنوان یک توالی (sequence) از قطعات کوچک‌تر در نظر بگیرد؛ تقریبا شبیه به نحوه‌ای که در NLP، یک جمله به توکن‌ها (کلمات) شکسته می‌شود.

در ViT، تصویر به بخش‌های کوچکی به نام patch تقسیم می‌شود و هر patch مانند یک «کلمه» در نظر گرفته می‌شود. سپس این توالی از patchها وارد Transformer می‌شود تا با استفاده از مکانیزم attention، ارتباط بین بخش‌های مختلف تصویر را یاد بگیرد. این یعنی مدل به‌جای تمرکز صرف روی همسایگی‌های محلی (مثل CNN)، می‌تواند از همان ابتدا ارتباطات سراسری (global context) را در کل تصویر درک کند.

اما چرا این ایده مهم است؟ چون یکی از محدودیت‌های اصلی CNNها این است که برای درک کل تصویر نیاز به لایه‌های عمیق‌تر و تجمیع تدریجی اطلاعات دارند، در حالی که Transformerها می‌توانند از همان مراحل اولیه، وابستگی‌های دور را مدل کنند. این تغییر دیدگاه باعث شده Vision Transformer در دیتاست‌های بزرگ، عملکرد بسیار رقابتی، حتی بهتر از CNNها از خود نشان دهد و به یکی از پایه‌های مهم مدل‌های مدرن بینایی کامپیوتری تبدیل شود.

چرا Transformer برای تصویر؟

برای درک اینکه چرا استفاده از Transformer architecture در پردازش تصویر اهمیت پیدا کرده، باید ابتدا محدودیت‌های رویکردهای کلاسیک مثل Convolutional Neural Network (CNN) را دقیق‌تر ببینیم. CNNها به‌صورت ذاتی روی نواحی محلی تصویر تمرکز دارند؛ یعنی هر فیلتر فقط بخش کوچکی از تصویر را در هر مرحله می‌بیند (receptive field محدود). برای اینکه مدل بتواند درک کاملی از کل تصویر داشته باشد، باید چندین لایه روی هم انباشته شوند تا این دید محلی به‌تدریج گسترش پیدا کند. علاوه بر این، CNNها به مجموعه‌ای از inductive biasها (مثل فرض همگنی ویژگی‌ها در کل تصویر) متکی هستند که اگرچه در بسیاری از مسائل مفیدند، اما می‌توانند انعطاف‌پذیری مدل را محدود کنند.

در مقابل، Transformerها رویکرد متفاوتی دارند. به‌جای پردازش تدریجی و محلی، این مدل‌ها از مکانیزم attention استفاده می‌کنند تا بتوانند ارتباط بین تمام بخش‌های تصویر را به‌صورت هم‌زمان بررسی کنند. این یعنی مدل از همان ابتدا به global context دسترسی دارد و می‌تواند وابستگی‌های دور را بدون نیاز به عمیق‌تر شدن شبکه یاد بگیرد. همین ویژگی باعث می‌شود Transformerها درک غنی‌تری از ساختار تصویر داشته باشند و بتوانند الگوهای پیچیده‌تری را نسبت به CNNها مدل کنند، به‌ویژه در سناریوهایی که داده‌های زیادی در اختیار است.

معماری ViTمعماری ویژن ترنسفورمر

برای اینکه دقیق‌تر بفهمیم Vision Transformer چطور کار می‌کند، باید معماری آن را مرحله‌به‌مرحله بررسی کنیم. برخلاف ظاهر ساده‌اش، ViT از چند ایده کلیدی تشکیل شده که کنار هم، یک رویکرد کاملا متفاوت نسبت به Convolutional Neural Network می‌سازند. در حالی که همچنان بر پایه مفاهیم Transformer architecture باقی می‌ماند.

۱. تبدیل تصویر به Patch

اولین قدم در Vision Transformer، شکستن تصویر به قطعات کوچک‌تر است. فرض کنید یک تصویر با اندازه مشخص داریم؛ این تصویر به بلوک‌های مربعی (patch) با اندازه ثابت تقسیم می‌شود.

هر patch در واقع بخشی از تصویر است که به‌صورت مستقل در نظر گرفته می‌شود، دقیقا مشابه کلمات در یک جمله. سپس این patchها به یک توالی (sequence) تبدیل می‌شوند.

analogy مهم:

  • تصویر = جمله
  • patch = کلمه

این تبدیل، پایه‌ای‌ترین تغییر ذهنی ViT است: تصویر دیگر یک ساختار دوبعدی نیست، بلکه یک دنباله از واحدهای قابل پردازش است.

۲. Embedding + Position Encoding

بعد از ساختن sequence از patchها، هر patch باید به یک بردار عددی (embedding) تبدیل شود تا مدل بتواند آن را پردازش کند. این embeddingها مشابه همان token embedding در NLP هستند.

اما یک مسئله مهم وجود دارد: Transformer ذاتا ترتیب (order) را نمی‌فهمد. بنابراین اگر اطلاعات مکانی به مدل داده نشود، تفاوتی بین patch بالا-چپ و پایین-راست وجود نخواهد داشت.

اینجاست که Position Encoding وارد می‌شود. با اضافه کردن اطلاعات موقعیت به embedding هر patch، مدل می‌تواند ساختار فضایی تصویر را حفظ کند و بفهمد هر بخش در کجای تصویر قرار دارد.

۳. Encoder (Transformer Blocks)

در این مرحله، sequence ساخته‌شده وارد بلوک‌های Encoder در Transformer می‌شود. این بخش قلب مدل است و جایی است که «درک» اتفاق می‌افتد.

هر Encoder شامل چند جزء کلیدی است:

  • Self-Attention: مدل بررسی می‌کند که هر patch به کدام patchهای دیگر مرتبط است. این یعنی می‌تواند وابستگی بین بخش‌های مختلف تصویر را حتی اگر از هم دور باشند، یاد بگیرد.
  • Multi-Head Attention: به‌جای یک نوع attention، چندین attention به‌صورت موازی اجرا می‌شوند تا مدل بتواند روابط مختلف را از زوایای متفاوت تحلیل کند.
  • Feed-Forward Layers: بعد از attention، یک شبکه fully connected روی هر بردار اعمال می‌شود تا ویژگی‌ها غنی‌تر شوند.

نکته مهم: در این مرحله، مدل به‌صورت هم‌زمان کل تصویر را می‌بیند (global view)، نه فقط بخش‌های محلی.

۴. CLS Token و خروجی مدل

برای اینکه مدل بتواند در نهایت یک تصمیم (مثلا classification) بگیرد، از یک توکن خاص به نام CLS Token استفاده می‌شود. این توکن به ابتدای sequence اضافه می‌شود و در طول پردازش، اطلاعات کل تصویر را در خود جمع می‌کند.
در انتهای Encoder، بردار مربوط به CLS Token به یک لایه نهایی (classification head) داده می‌شود تا خروجی مدل تولید شود. مثلا اینکه تصویر متعلق به چه کلاسی است.

به‌عبارت ساده، CLS Token نقش «نماینده کل تصویر» را بازی می‌کند و تصمیم نهایی مدل بر اساس همین بردار گرفته می‌شود.

تفاوت Vision Transformer با CNN

CNN vs ViT

برای بسیاری از توسعه‌دهنده‌ها، مهم‌ترین سؤال این است: Vision Transformer دقیقا چه تفاوتی با Convolutional Neural Network دارد و در چه شرایطی انتخاب بهتری است؟ پاسخ این سوال را می‌توان در چند تفاوت کلیدی خلاصه کرد. تفاوت‌هایی که مستقیما روی عملکرد و کاربرد مدل تاثیر می‌گذارند.

Local vs Global

CNNها به‌صورت ذاتی روی ویژگی‌های محلی تمرکز دارند. هر فیلتر فقط بخش کوچکی از تصویر را می‌بیند و برای درک کل تصویر، نیاز به چندین لایه دارد تا این اطلاعات تجمیع شوند.

در مقابل، Vision Transformer که بر پایه Transformer architecture ساخته شده، از همان ابتدا کل تصویر را در قالب یک sequence پردازش می‌کند. به کمک attention، هر patch می‌تواند به تمام patchهای دیگر توجه کند. این یعنی مدل به‌صورت مستقیم به global context دسترسی دارد.

Inductive Bias

CNNها دارای inductive biasهای قوی هستند؛ مثلا فرض می‌کنند ویژگی‌ها در سراسر تصویر مشابه‌اند یا اینکه الگوهای محلی اهمیت بیشتری دارند. این biasها باعث می‌شود CNNها حتی با داده کم هم عملکرد خوبی داشته باشند.

در مقابل، Vision Transformer تقریبا inductive bias خاصی ندارد. این موضوع باعث می‌شود مدل انعطاف‌پذیرتر باشد، اما در عوض نیاز به داده بیشتری برای یادگیری موثر دارد.

Data Requirement

یکی از مهم‌ترین تفاوت‌ها همین‌جاست.

  • CNN ← عملکرد خوب حتی با دیتاست‌های نسبتا کوچک
  • ViT ← نیازمند دیتاست‌های بزرگ برای رسیدن به عملکرد بالا

دلیلش هم این است که ViT باید همه چیز را از داده یاد بگیرد، در حالی که CNN بخشی از این دانش را از قبل در معماری خود دارد.

Performance در Datasetهای بزرگ

وقتی به دیتاست‌های بزرگ (مثل ImageNet در مقیاس وسیع‌تر) می‌رسیم، شرایط تغییر می‌کند.

Vision Transformer در این سناریوها معمولا عملکرد بسیار رقابتی حتی بهتر از CNNها از خود نشان می‌دهد. دلیلش این است که توانایی مدل در درک global context و یادگیری روابط پیچیده، در داده‌های زیاد به‌خوبی شکوفا می‌شود.

مزایا و محدودیت‌های ViT

درک مزایا و محدودیت‌های Vision Transformer به شما کمک می‌کند تصمیم بگیرید که آیا این مدل برای پروژه‌تان مناسب است یا نه به‌خصوص در مقایسه با Convolutional Neural Network و با توجه به ماهیت معماری Transformer architecture.

دسته مورد توضیح
✅ مزایا درک context کامل تصویر دسترسی هم‌زمان به کل تصویر و یادگیری ارتباط بین بخش‌های دور از هم
✅ مزایا Scalability بالا عملکرد بهتر با افزایش داده و بزرگ‌تر شدن مدل
✅ مزایا عملکرد عالی در داده‌های بزرگ توانایی یادگیری الگوهای پیچیده در دیتاست‌های حجیم
⚠️ محدودیت‌ها نیاز به دیتای زیاد وابستگی بالا به حجم داده برای رسیدن به عملکرد مناسب
⚠️ محدودیت‌ها هزینه محاسباتی بالا مصرف منابع بیشتر به‌دلیل مکانیزم attention
⚠️ محدودیت‌ها عملکرد ضعیف در داده کم در دیتاست‌های کوچک معمولا ضعیف‌تر از CNN عمل می‌کند

مدل‌های مبتنی بر Vision Transformer

مدل‌های ViT

پس از معرفی Vision Transformer، نسخه‌های مختلفی از این معماری توسعه داده شدند که هدف آن‌ها بهبود عملکرد، کاهش نیاز به داده، یا افزایش کارایی بوده است. این مدل‌ها در اکوسیستم ابزارهایی مثل Hugging Face نیز به‌طور گسترده در دسترس هستند و به‌عنوان مدل‌های آماده (pretrained) استفاده می‌شوند.

ViT Base / Large

این دو نسخه، شکل استاندارد Vision Transformer هستند که صرفا در اندازه مدل (تعداد لایه‌ها، پارامترها و ظرفیت یادگیری) متفاوت‌اند.

  • ViT Base: نسخه متعادل‌تر از نظر سرعت و دقت
  • ViT Large: نسخه سنگین‌تر با دقت بالاتر، اما نیازمند منابع محاسباتی بیشتر

این مدل‌ها معمولا نقطه شروع اصلی برای بسیاری از پروژه‌ها هستند.

DeiT (Data-efficient Image Transformer)

DeiT نسخه‌ای از ViT است که با هدف کاهش وابستگی به داده‌های بزرگ طراحی شده است. این مدل تلاش می‌کند با استفاده از تکنیک‌هایی مثل distillation، عملکرد خوبی حتی با دیتاست‌های کوچک‌تر ارائه دهد.

Hybrid Models

مدل‌های هیبریدی ترکیبی از CNN و Transformer هستند. در این رویکرد، معمولا از CNN برای استخراج ویژگی‌های اولیه تصویر استفاده می‌شود و سپس Transformer برای مدل‌سازی روابط global وارد عمل می‌شود.

این ترکیب تلاش می‌کند بهترین ویژگی‌های هر دو دنیا را با هم داشته باشد:

  • قدرت CNN در یادگیری محلی
  • قدرت Transformer در درک global context

کاربردهای ViT

کاربردهای ViT

Vision Transformer فقط یک مدل تئوریک نیست؛ بلکه در عمل هم در بسیاری از مسائل بینایی کامپیوتری جای خودش را پیدا کرده است. این مدل که بر پایه Transformer architecture ساخته شده، به‌دلیل توانایی در درک global context، در حوزه‌های مختلفی استفاده می‌شود. از مسائل کلاسیک تا مدل‌های پیشرفته چندوجهی.

۱. Image Classification (دسته‌بندی تصویر)

یکی از رایج‌ترین کاربردهای ViT، تشخیص کلاس تصویر است. در این حالت مدل باید مشخص کند تصویر مربوط به چه دسته‌ای است (مثلا سگ، ماشین یا ساختمان).

Vision Transformer در این حوزه به‌خصوص روی دیتاست‌های بزرگ عملکرد بسیار قدرتمندی دارد.

۲. Object Detection (تشخیص اشیا)

در این کاربرد، مدل باید نه‌تنها اشیا را تشخیص دهد، بلکه موقعیت آن‌ها را هم مشخص کند.

ViT با کمک attention می‌تواند ارتباط بین بخش‌های مختلف تصویر را بهتر درک کند و در نتیجه در شناسایی اشیای پیچیده یا هم‌پوشان عملکرد خوبی داشته باشد.

۳. Image Segmentation (تقسیم‌بندی تصویر)

در segmentation، هدف این است که هر پیکسل تصویر به یک کلاس نسبت داده شود.

Vision Transformer به دلیل توانایی در مدل‌سازی روابط global، می‌تواند مرزهای دقیق‌تری بین نواحی مختلف تصویر ایجاد کند.

۴. Multimodal Models (مدل‌های چندوجهی)

یکی از مهم‌ترین کاربردهای مدرن ViT، استفاده در مدل‌های چندوجهی است، مدل‌هایی که هم تصویر و هم متن را هم‌زمان پردازش می‌کنند.

در اینجا ViT معمولا به‌عنوان encoder تصویر استفاده می‌شود و خروجی آن با مدل‌های زبانی ترکیب می‌شود تا درک عمیق‌تری از داده‌های ترکیبی ایجاد شود.

آینده Vision Transformer

Vision Transformer فقط یک جایگزین برای CNN نبود؛ بیشتر شبیه یک تغییر جهت در نگاه به مسئله بینایی کامپیوتری است. حالا سوال مهم این است که این مسیر به کجا می‌رود و نقش آن در آینده مدل‌های هوش مصنوعی چیست. به‌خصوص در کنار روندهایی که در Transformer architecture شکل گرفته‌اند.

  • ترکیب با مدل‌های Multimodal

یکی از واضح‌ترین مسیرهای آینده ViT، ادغام با مدل‌های چندوجهی (multimodal) است. در این رویکرد، Vision Transformer به‌عنوان encoder تصویر عمل می‌کند و در کنار مدل‌های زبانی قرار می‌گیرد تا سیستم‌هایی ساخته شوند که هم تصویر و هم متن را به‌صورت هم‌زمان درک کنند.

این ترکیب پایه بسیاری از سیستم‌های مدرن مثل مدل‌های تصویر-به-متن و دستیارهای هوشمند چندرسانه‌ای است.

  • نقش در Foundation Models

Vision Transformer به‌طور فزاینده‌ای در ساخت foundation models نقش دارد. مدل‌هایی بزرگ و عمومی که می‌توانند برای طیف وسیعی از وظایف استفاده شوند.

به دلیل ساختار مبتنی بر attention، ViT به‌راحتی با مقیاس‌های بزرگ داده و مدل سازگار می‌شود و همین ویژگی آن را به گزینه‌ای مناسب برای مدل‌های پایه در حوزه بینایی تبدیل کرده است.

  • آیا CNNها کاملا جایگزین می‌شوند؟

اگرچه Vision Transformer در بسیاری از سناریوهای بزرگ‌مقیاس عملکرد بسیار خوبی دارد، اما Convolutional Neural Network همچنان در موارد زیر جایگاه خود را حفظ می‌کند:

  • دیتاست‌های کوچک یا محدود
  • سیستم‌های سبک و real-time
  • محیط‌هایی با محدودیت منابع محاسباتی

در واقع، آینده بیشتر به سمت همزیستی این دو معماری حرکت می‌کند تا جایگزینی کامل یکی به‌جای دیگری.

جمع‌بندی

Vision Transformer نشان داد که می‌توان بدون تکیه بر ساختارهای سنتی مثل Convolutional Neural Network و با استفاده از معماری Transformer architecture، تصویر را به‌عنوان یک توالی از داده‌ها مدل‌سازی کرد و به درک عمیق‌تری از محتوای بصری رسید. این تغییر رویکرد باعث شد مفاهیمی مثل attention و global context به‌جای پردازش محلی، در مرکز توجه قرار بگیرند.

با این حال، ViT یک راه‌حل همه‌کاره نیست؛ در کنار مزایای قابل توجه در مقیاس‌های بزرگ، همچنان به داده زیاد و منابع محاسباتی بالا نیاز دارد. در نتیجه، انتخاب بین ViT و CNN بیشتر به نوع مسئله، حجم داده و محدودیت‌های عملی پروژه بستگی دارد تا برتری مطلق یکی بر دیگری.

 

منابع

v7labs.com | medium.com | huggingface.co 

سوالات متداول

CNNها به‌صورت محلی ویژگی‌ها را استخراج می‌کنند (مثل لبه‌ها و بافت‌ها)، اما Vision Transformer کل تصویر را به‌صورت جهانی مدل می‌کند و وابستگی بین بخش‌های مختلف تصویر را بهتر یاد می‌گیرد، مخصوصا در داده‌های بزرگ.

بله، یکی از چالش‌های اصلی ViT همین است. این مدل معمولا برای عملکرد خوب به داده‌های بزرگ نیاز دارد، به همین دلیل نسخه‌های بهینه‌تری مثل DeiT طراحی شده‌اند.

نه به‌طور کامل. در حال حاضر بیشتر از ترکیب این دو استفاده می‌شود. CNNها هنوز در بسیاری از کاربردهای سبک‌تر و real-time بسیار کاربردی هستند، در حالی که ViT در مدل‌های پیشرفته‌تر استفاده می‌شود.

فرصت‌های شغلی

ایجاد محیطی با ارزش های انسانی، توسعه محصولات مالی کارامد برای میلیون ها کاربر و استفاده از فناوری های به روز از مواردی هستند که در آسا به آن ها می بالیم. اگر هم مسیرمان هستید، رزومه تان را برایمان ارسال کنید.

سمیرا محمدی نیم‌رخ

نویسنده:

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *