جستجو برای:
  • فروشگاه
  • وبلاگ
  • آموزش‌های رایگان
    • آموزش پایتون رایگان
    • آموزش یادگیری ماشین رایگان
    • آموزش یادگیری عمیق رایگان
    • آموزش pytorch رایگان
    • آموزش گوگل کولب
    • آموزش رایگان matplotlib
    • آموزش متلب رایگان
    • دوره‌های خارجی
  • نقشه راه AI
  • کلاس خصوصی
  • همکاری با ما💚
  • حساب کاربری
  • اساتید
  • درباره ما
     
    • 0902-546-9248
    • howsam.mail@gmail.com
    آکادمی هوش مصنوعی هوسم
    • فروشگاه
    • وبلاگ
    • آموزش‌های رایگان
      • آموزش پایتون
      • آموزش یادگیری ماشین رایگان
      • آموزش یادگیری عمیق
      • آموزش pytorch
      • آموزش گوگل کولب
      • آموزش رایگان matplotlib
      • آموزش متلب
      • دوره‌های خارجی
    • نقشه راه AI
    • کلاس خصوصی
    • درباره ما
      • اساتید
      • پشتیبانی
      • هوسم در اینستا و تلگرام
        • اینستاگرام هوسم (howsam_org@)
        • تلگرام هوسم (howsam_org@)
        • تلگرام پایتورچ (pytorch_howsam@)
    • همکاری با ما💚
    0

    ورود و ثبت نام

    بلاگ

    آکادمی هوش مصنوعی هوسم وبلاگ بینایی کامپیوتر شبکه ویژن ترنسفورمر

    شبکه ویژن ترنسفورمر

    2024/11/02
    ارسال شده توسط سید سجاد اشرفی
    بینایی کامپیوتر ، یادگیری عمیق
    1.68k بازدید

    شبکه ویژن ترنسفورمر (Vision Transformer) یا ViT یک شبکه عصبی مبتنی بر مدل ترنسفورمر هست که برای حوزه بینایی کامپیوتر و کار با داده تصویر طراحی شده است. شبکه ویژن ترنسفورمر یکی از اولین مدل‌های ترنسفورمری است که در حوزه کامپیوتر ویژن جواب داد و جربان‌ساز شد. در این آموزش می‌خواهم به تشریح شبکه ViT بپردازم. با من و هوسم همراه باشید…

    فهرست مطالب نمایش
    1. شبکه ویژن ترنسفورمر چیست؟
    1.1. شبکه ویژن ترنسفورمر و شبکه رزنت
    1.2. ترنسفورمر یک شبکه عصبی همه‌منظوره!
    2. شبکه ترنسفورمر در NLP
    3. شبکه ویژن ترنسفورمر (ViT)
    3.1. توکنایزیشن تصویر
    3.2. وکتوریزیشن تصویر
    3.3. امبدینگ مکانی یا Position Embedding
    3.4. شبکه ویژن ترنسفورمر

    شبکه ویژن ترنسفورمر چیست؟

    شبکه ویژن ترنسفورمر (Vision Transformer) یا ViT یک شبکه عصبی مبتنی بر مدل ترنسفورمر هست که با تقسیم تصویر به بخش‌های کوچک و پردازش آنها به‌صورت توکن، تصاویر را طبقه‌بندی می‌کند. شبکه ViT توسط تیمی از محققان گوگل در سال 2020 معرفی در مقاله‌ای با عنوان زیر ارائه شد:

    An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale

    بیایید کمی عنوان مقاله را بررسی کنیم:

    • از شبکه ترنسفورمر در بینایی کامپیوتر استفاده کرده است؛ شبکه ترنسفورمر، یک شبکه عصبی مدرن هست که در سال 2017 توسط گوگل متولد شد. این شبکه مدرن، از زمان تولدش سروصدای زیادی ایجاد کرده است! تعداد ارجاعات مقاله شبکه ترنسفورمر (حدود 137 هزار ارجاع تا الان!) به خوبی میزان اثرگذاری آن در هوش مصنوعی را نشان می‌دهد. ابتدا تحولی اساسی در پردازش زبان طبیعی (NLP) ایجاد کرد. سپس، وارد سایر شاخه‌های هوش مصنوعی شد و عملکردی قابل توجه از خود برجای گذاشت. ChatGPT را می‌توان خفن‌ترین آورده شبکه عصبی ترنسفورمر دانست.
    • ویژن ترنسفورمر به عنوان روشی مبتنی بر معماری ترنسفورمر برای بازشناسی تصویر (Image Recognition) معرفی شده است. منظور از بازشناسی تصویر، همان طبقه‌بندی تصویر هست. درحالی‌که، پیش از این مقاله، انتخاب اول در بینایی کامپیوتر شبکه کانولوشنی بود!
    • در عنوان مقاله عبارت مهم 16×16 Words دیده می‌شود. در شبکه ویژن ترنسفورمر، هر تصویر به تکه‌های با سایز 16×16 پیکسل تقسیم می‌شود. شکل زیر، نحوه تکه شدن تصویر ورودی و سپس ورود تکه تصاویر به شبکه ترنسفورمر را نشان می‌دهد.
    شبکه ویژن ترنسفورمر
    نیازی نیست که الان عمیقا این انیمیشن رو درک کنید. صرفا به این خاطر این انیمیشن رو آوردم که اون مفهوم تکه کردن تصویر رو متوجه بشید.

    شبکه ویژن ترنسفورمر و شبکه رزنت

    این دنیا به کسی وفا نکرده! حتی به شما ResNet عزیز! 😥 شبکه رزنت سال‌ها پادشاه بلامنازع حوزه بینایی کامپیوتر بود و انتخاب اول در مقالات و تسک‌های مختلف بود. الان که این متن را می‌نویسم، مقاله رزنت بیش از 239 هزار ارجاع دارد! این عددِ بسیار بسیار بسیار بزرگی هست. فکر می‌کنم، مقاله رزنت نه فقط در حوزه بینایی کامپیوتر، بلکه در کل علوم، یکی از پرارجاع‌ترین مقالات تاریخ محسوب می‌شود! 😯

    اما، حالا نمودار زیر از سایت paperswithcode را نگاه کنید. تا قبل 2022، شبکه رزنت با اختلاف پراستفاده‌ترین شبکه بود. اما در سال 2020 شبکه ViT پیشنهاد شد، به‌صورت انفجاری رشد کرد و اوایل 2022 به سطح شبکه رزنت رسید و سپس جایگاه اولی را از او گرفت! اینجاست که یاد شعر قدیمی می‌افتیم که:

    رزنت که بالا بودی همه عمر، دیدی که چگونه ویژن ترنسفورمر رزنت گرفت؟!

    مقایسه شبکه ویژن ترنسفورمر و شبکه رزنت
    مقایسه شبکه ویژن ترنسفورمر و شبکه رزنت

    ترنسفورمر یک شبکه عصبی همه‌منظوره!

    شبکه ترنسفورمر یک ویژگی خاص دارد! بدون هرگونه تغییر در معماری شبکه، می‌تواند داده‌های مختلف مانند تصویر، متن، صوت و غیره را پردازش کند. بنابراین، ساختار داخلی شبکه ویژن ترنسفورمر هیچ تفاوتی با شبکه ترنسفورمر در متن ندارد. دقیقا همان شبکه هست. پس چگونه شبکه ترنسفورمری که برای داده متن طراحی شده، می‌تواند روی داده تصویر کارآیی داشته باشد؟ کافی است که روی تصویر پیش پردازش انجام دهیم. همین! شکل زیر نشان می‌دهد که ابتدا باید داده (متن، صوت، تصویر و غیره) پیش‌پردازش شود، سپس وارد شبکه ترنسفورمر با معماری یکسان شود.

    پبش پردازش یا data preprocessing یادگیری عمیق
    پیریِ چه پراسسینگی؟!

    بسیار خب! تا اینجا متوجه شدید که شبکه ترنسفورمر برای همه نوع داده‌ها یکی هست. اما، پیش‌پردازش برای داده‌های مختلف متفاوت است. در ادامه، بیشتر درباره شبکه ترنسفورمر در NLP و بینایی کامپیوتر و پیش‌پردازش آنها صحبت می‌کنم.

    شبکه ترنسفورمر در NLP

    قبلا، در آموزش شبکه ترنسفورمر درباره نحوه دادن ورودی متن (Text) به شبکه ترنسفورمر صحبت کردم. پیشنهاد می‌کنم، آن را مطالعه کنید. متن باید از طریق یکسری عملیات پیش پردازش به عدد تبدیل شود. کاری که معمولا در پیش پردازش متن انجام می‌شود، این هست:

    1. Tokenization: توکنایز کردن متن
    2. Vectorization: تبدیل هر توکن به یک بردار یکتا (همان لایه Embedding)

    بنابراین، متن نمونه ما تبدیل به یک مجموعه عدد می‌شود که می‌توانیم آنها را در اختیار شبکه ترنسفورمر قرار دهیم. طبق شکل زیر مشاهده می‌کنید که ابتدا داده متن با توکنایزیشن به 20 توکن تبدیل شد. سپس، از طریق وکتوریزیشن برای هر توکن یک بردار به طول 50 ساخته شد. بنابراین، کلا به یک تنسور به ابعاد 50×20 رسیدیم. یعنی، 20 تنسور به طول 50 (معادل 20 توکن).

    طی دو مرحله Tokenization و Vectorization داده متن تبدیل به مجموعه‌ای بردار شد.

    حالا می‌خواهم خروجی پیش پردازش متن برای شبکه ترنسفورمر را فرموله کنم؛ به‌صورت کلی، خروجی پیش پردازش متن، برای هر نمونه داده، تنسوری دوبعدی به ابعاد LxF هست. L نشان‌دهنده تعداد توکن‌های نمونه داده و F بردار امبدینگ هر نمونه داده هست. برای مثال بالا، L و F به‌ترتیب برابر با 20 و 50 بودند.

    شبکه ترنسفورمر در پردازش زبان طبیعی NLP
    درسته که من الان خوابم میاد، ولی مهمه که این ابعاد LxF رو خوب درک کنید. چون خیلی خیلی در شبکه ویژن ترنسفورمر به کار ما میاد.

    شبکه ویژن ترنسفورمر (ViT)

    در NLP به‌صورت مستقیم متن را در اختیار شبکه ترنسفورمر قرار ندادیم و به پیش پردازش نیاز بود. پیش پردازش هم شامل دو عملیات Tokenization و Vectorization بود. حالا، مشابه با متن، باید روی تصویر هم دقیقا همین عملیات پیش پردازش را انجام دهیم! یعنی، عملیات توکنایز کردن و وکتوریزیشن تصویر! 🙃 درادامه، به‌صورت جداگانه درمورد این دو مرحله ساده توضیح داده‌ام.

    توکنایزیشن تصویر

    توکنایزیشن در دنیای پردازش تصویر، معادل با پچ‌بندی تصویر (Patching) هست! یا به قول گزارشگر ورزشی‌مون: پاتسچ! 😁 پچ کردن تصویر، به معنی سلول‌بندی تصویر در راستای سطرها و ستون‌هاست. به شکل زیر نگاه کنید؛ تصویر ورودی به 9 پچ مساوی (3 تا در راستای سطر و 3 تا در راستای ستون) تقسیم شده است.

     

    شبکه ویژن ترنسفورمر و پچ بندی تصویر
    یه چاقو برداشتی داری پیتزا برش میزنی…

    تصویر ورودی شبکه ویژن ترنسفورمر 224×224 است. با پچ سایز 16×16 تصویر پچ‌بندی شده است. یادتان می‌آید عنوان مقاله ویژن ترنسفورمر چه بود؟ یک عبارت 16×16 Words داشتیم. حالا معنی این عبارت را درک می‌کنید؛ هریک از پچ‌های ما 16×16 هست. تصویر 224×224 و سایز هریک از پچ‌ها 16×16 هست. حالا شما بگویید، کلا چند تا پچ داریم؟ خبببببببببببببب، 196 تا پچ! 14 پچ در راستای سطرها و 14 پج در راستای ستون‌ها…

    وکتوریزیشن تصویر

    مرحله وکتوریزیشن تصویر، معادل با همان امبدینگ در متن هست.. در این مرحله، باید پچ‌ها را تبدیل به بردار کنیم و از یک لایه فولی‌کانکتد عبور دهیم. تعداد نورون‌های لایه فولی‌کانکتد را ما تعیین می‌کنیم. طبق توضیحات بالا، اگر سایز هر پچ 16×16 باشد، هر پچ تبدیل به برداری به طول 256 می‌شود. سپس، بردارها از یک لایه فولی کانکتد با مثلا 768 نورون عبور می‌کنند. بنابراین، بعد از این دو مرحله، ما به تنسوری به شکل LxF رسیدیم. L معادل با تعداد توکن‌ها (196) و F طول ویژگی (768) است.

    شبکه ویژن ترنسفورمر
    اون بلوک کالباسی رنگ (🤭)، همون لایه فولی کانکتد هست. می‌بینید که خروجیش مثلا یکسری بردار شده.

    توجه به شکل بالا دقت کنید؛ ما 9 تا پچ نمادین به لایه فولی کانکتد دادیم، اما در خروجی 10 بردار توکن می‌بینیم. تکلیف 9 تا که مشخص هست. یک بردار اضافه داریم که بردار توکن طبقه‌بندی نام دارد. به این دلیل اضافه کردیم که بعدا در خروجی شبکه ترنسفورمر، همین بردار توکن 0 را به طبقه‌بند (لایه کلاسیفایر) بدهیم. 

    امبدینگ مکانی یا Position Embedding

    امبدینگ مکانی یا Positional Embedding در مدل‌های ترنسفورمر به هر توکن در ورودی یک موقعیت مکانی اضافه می‌کند تا ترتیب کلمات در جمله حفظ شود. چون ترنسفورمرها به‌صورت موازی و بدون توجه به ترتیب توکن‌ها کار می‌کنند. قاعدتا، اگر شبکه ترنسفورمر را بلد باشید، این قضیه را می‌دانید. به‌هرصورت، در انیمیشن زیر این اضافه شدن بردار پوزیشن امبدینگ به توکن‌ها نشان داده شده است. دقت کنید، دقیقا بردار توکن و بردار پوزیشن امبدینگ هم‌سایز هستند و درایه به درایه با هم جمع می‌شوند.

    بردار پوزیشن امبدینگ برمبنای موقعیت پچ در تصویر تعیین میشه. ببینید، توی تصویر پچ‌های چطوری شماره‌بندی میشن. همین‌جوری بی حساب و کتاب نیست.

    شبکه ویژن ترنسفورمر

    بعد از آماده شدن تنسور دوبعدی LxF و اضافه کردن اطلاعات موقعیت، وقت آن رسیده که داده را به شبکه ویژن ترنسفورمر بدهیم. از این به بعد نیازی به توضیح ندارد! چون اگر با شبکه ترنسفورمر آشنا باشید، می‌دانید که یک تعداد لایه انکدر داریم که بعد از انجام محاسبات، توکن‌ها به‌دست می‌آید. سپس، توکن 0 را به یک لایه فولی کانکتد (به عنوان طبقه‌بند) متصل می‌کنیم. تامام!

    شبکه ViT
    فرآیند کامل شبکه ویژن ترنسفورمر

    البته، یک راه دیگر هم برای پیش‌پردازش تصویر وجود دارد. بعدا، درباره این راه دوم و جالب هم صحبت می‌کنم. فعلا تمــــــــــام!

    اشتراک گذاری:

    مطالب زیر را حتما مطالعه کنید

    یادگیری انتقالی
    یادگیری انتقالی یا Transfer Learning به معنای استفاده از یک مدل از پیش آموزش‌دیده در...
    شبکه VGG
    شبکه VGG یکی از معماری‌های موفق و معروف در حوزه یادگیری عمیق است که در...
    مهندسی پرامپت
    امروزه، با ظهور ChatGPT و سایر ابزارهای هوش مصنوعی، طیف گسترده‌ای از افراد، از کاربران...
    مدل nanoGPT
    در سال ۲۰۱۹، OpenAI مدل GPT-2 را معرفی کرد. OpenAI، برخلاف مدل‌های بعدی (GPT-3 و...
    شگفت‌انگیزترین ایده هوش مصنوعی از نظر Andrej Karpathy
    هوش مصنوعی به سرعت در حال پیشرفت هست. به‌گونه‌ای که باید زمان و انرژی زیادی...
    شبکه اتوانکدر
    شبکه اتوانکدر (Autoencoder) یک نوع شبکه عصبی است که برای فشرده‌سازی (کدگذاری) داده‌های به‌کار می‌رود....

    10 دیدگاه

    به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

    • گلی گفت:
      2025/05/16 در 12:54 ق.ظ

      سلام وقتتون بخیر
      به راهنمایی و کمک نیاز دارم ممنون میشم جواب بدین.چون رشتم میکروبیولوژی هست برای تحقیق دانشگاه اگر از روشCNN-LSTM با مکانیسم توجه استفاده کنیم یا اینکه بخوایم از روش CNN-Transfor استفاده کنیم این دو روش چه فرقی با هم دارند و به چه داده هایی نیاز دارند تصویر یا عدد یا بردار؟ درود بر شما

      پاسخ
    • sahel گفت:
      2024/11/21 در 4:33 ب.ظ

      مثل همیشه بی نظیر
      عاااالی بود
      خدا خیرتون بده

      پاسخ
      • هوسم گفت:
        2024/11/21 در 5:09 ب.ظ

        ممنون 🌹😊

        پاسخ
      • سعید گفت:
        2025/01/13 در 4:34 ب.ظ

        عالی

        پاسخ
        • هوسم گفت:
          2025/01/14 در 9:10 ق.ظ

          😊🙏

          پاسخ
    • مهدی گفت:
      2024/11/14 در 1:15 ب.ظ

      سلام لطفا درباره اون بردار صفر توضیح می دید؟؟
      نفهمیدم چرا باید باشه؟؟/

      پاسخ
      • هوسم گفت:
        2024/11/16 در 10:22 ق.ظ

        سلام، بردار صفر در ویژن ترنسفورمر به عنوان کلاس توکن (class token) استفاده میشه. این بردار به مدل این امکان رو میده که اطلاعات کلی تصویر رو جمع‌آوری کنه تا برای طبقه‌بندی نهایی استفاده بشه. پس، این بردار حین اجرای لایه‌های ترنسفورمر، در تعامل با توکن‌های دیگه (بخش‌های مختلف تصویر) هست و اطلاعاتی در اون ذخیره میشه. از اول این بردار رو صفر تعریف می‌کنیم، چون می‌خواهیم شامل هیچ اطلاعاتی نباشه.

        پاسخ
    • رضا گفت:
      2024/11/08 در 7:31 ب.ظ

      عالی بود ممنون, فقط من متوجه نشدم که چرا بعداز اینکه پچ ها از فولی کانکتد عبور کرد به ابعاد 196در 768تبدیل شدند؟

      پاسخ
      • هوسم گفت:
        2024/11/09 در 10:19 ق.ظ

        سلام
        اگه یک تصویر 224×244 رو به پچ‌های 16×16 تقسیم کنیم، کلا 196 تا پچ به‌دست میاد. چطوری؟ 224 تقسیم بر 16 میشه 14؛ یعنی در راستای سطرها 14 تا پچ و در راستای ستون‌ها هم 14 تا پچ. حالا 14 در 14 برابر میشه با 196. پس تا اینجا شد 196 تا پچ به سایز 16×16. خب این 16×16-ها رو فلت می‌کنیم و نتیجه میشه 196 تا بردار به سایز 256؛ یا اینکه میگیم 196 توکن به ابعاد 256. حالا این 196 توکن رو به یک فولی کانکتد با 768 نورون میدیم؛ خروجی میشه 196 توکن به ابعاد 768.
        ممنون 🌹😊

        پاسخ
        • رضا گفت:
          2024/11/12 در 6:07 ب.ظ

          ممنون از پاسخگویی

          پاسخ

    دیدگاهتان را بنویسید لغو پاسخ

    جستجو برای:
    فهرست مطالب دوره
    • معرفی دوره یادگیری عمیق رایگان
    • جلسه 00: یادگیری عمیق چیست
    • جلسه 01: ساختار نورون مصنوعی
    • جلسه 02: یادگیری نورون مصنوعی
    • جلسه 03: شبکه عصبی mlp
    • جلسه 04: دسته بندی با mlp و تنسورفلو
    • جلسه 05: رگرسیون با mlp و تنسورفلو
    • جلسه 06: شبکه عصبی کانولوشنی (CNN)
    • جلسه 07: شبکه عصبی بازگشتی (RNN)
    • جلسه 08: شبکه عصبی LSTM
    • جلسه 09: شبکه GRU
    • جلسه 10: شبکه ترنسفورمر
    • جلسه 11: شبکه ویژن ترنسفورمر
    • جلسه 12: شبکه عصبی GAN
    • جلسه 13: شبکه اتوانکدر
    دوره‌های جامع هوسم
    • پیاده‌سازی ChatGPT از صفر با پایتورچ
    • آموزش OpenCV: از پردازش تا بینایی
    • دیپ کاتالیست: دوره افزایش مهارت
    • پایتون برای هوش مصنوعی 🤖
    • یادگیری ماشین جامع: از مفاهیم تا پیاده‌سازی🔥
    • یادگیری عمیق جامع: از مفاهیم تا پیاده‌سازی
    • دوره متلب سوپراستارتر
    درباره هوسم

    آکادمی هوش مصنوعی هوسم با آموزش‌های تخصصی در حوزه هوش مصنوعی در خدمت شماست. روی کمک هوسم حساب کنید…

    • گیلان- شهرستان رودسر- شهرک انصاری- کوچه لاله 9
    • 09025469248
    • howsam.mail@gmail.com
    دسترسی سریع
    • صفحه اصلی
    • وبلاگ
    • حساب کاربری
    • سبد خرید
    شبکه‌های اجتماعی

     

    logo-samandehi
    تمامی حقوق برای آکادمی هوسم محفوظ است.
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!

      ورود

      رمز عبور را فراموش کرده اید؟

      هنوز عضو نشده اید؟ عضویت در سایت