الرؤية الحاسوبية2020متوسط9 دقيقة قراءة

صورة تساوي 16×16 كلمة: المحوِّلات للتعرف على الصور على نطاق واسع

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

Dosovitskiy, A. · Beyer, L. · Kolesnikov, A. · Weissenborn, D. · Zhai, X. · Unterthiner, T. · Dehghani, M. · Minderer, M. · Heigold, G. · Gelly, S. · Uszkoreit, J. · Houlsby, N. — ICLR

المشكلة

حتى عام 2020 كانت الشبكات الالتفافية تُهيمن على الرؤية الحاسوبية. المُحوِّل كان قد غيّر قواعد اللعبة في معالجة اللغة الطبيعية، لكن كل محاولات استخدام الانتباه في الصور كانت إما تخلطه بالالتفاف أو تطبّقه على مستوى البكسل المنفرد — وهذا مُكلف جداً على الدقّات الحقيقية. السؤال المطروح: هل يمكن لمُحوِّل صِرف، بلا أي التفاف، أن يُجاري أفضل الشبكات الالتفافية أو يتفوّق عليها في الصور؟

الإسهام

مُحوِّل الرؤية (ViT): الفكرة أن تُقطَّع الصورة إلى رُقَع بحجم 16×16 بكسل، ثم تُبسَط كل رقعة وتُسقَط خطّياً إلى ، ويُضاف رمز [CLS] قابل للتعلُّم في بداية التسلسل مع تضمينات موضعية، ثم يُمرَّر التسلسل كاملاً إلى مُرمِّز مُحوِّل قياسي — نفسه من ورقة «الانتباه هو كل ما تحتاجه» دون أي تعديل. بعد على مجموعة بيانات ضخمة ()، حقّق ViT نتائج تُضاهي أو تتفوّق على أفضل الشبكات الالتفافية (BiT وNoisy Student) في ImageNet وCIFAR-100 وVTAB بتكلفة حوسبية أقلّ بكثير.

الأثر

أثبت ViT أنّ المُحوِّل ليس حكراً على اللغة، بل هو مُعالِج تسلسلات للأغراض العامة. أطلق هذا موجة من مُحوِّلات الرؤية (DeiT وSwin وBEiT وDINO وSAM)، ونماذج متعددة الوسائط (CLIP وDALL·E وStable Diffusion)، ثم البنى الموحَّدة التي تقف خلف أنظمة الذكاء الاصطناعي متعددة الوسائط اليوم. عقدان من هيمنة الشبكات الالتفافية على الرؤية الحاسوبية انتهيا بورقة واحدة.

تقرأ الصورة كشخص يمسك عدسة مُكبِّرة ويمرّرها فوق صفحة: مساحة صغيرة، تفاصيل دقيقة، نقطة واحدة في كل مرة. السمات المفيدة تنتقل صعوداً عبر الطبقات، وعنصرٌ في الزاوية العليا لا يستطيع التأثير في قرارٍ عند الزاوية السفلى إلا بعد مرور عدّة طبقات التفافية متتالية.

يستبدل العدسة المكبِّرة بـطاولة اجتماعات: تُقطَّع الصورة إلى رُقَع 16×16 — كصورٍ مُعلَّقة على لوحة — وكل رقعة تجلس إلى الطاولة، حرّة في مُخاطَبة أي رقعة أخرى مباشرة. أُذُن القط تستطيع أن تسأل العشب في الخلفية: «هل أنت جزء من المشهد الخارجي؟» في خطوة واحدة.

السقف: الشبكات الالتفافية ترى محلياً لا عالمياً

تعمل الشبكات الالتفافية بمُرشِّحات صغيرة (عادةً 3×3) تمسح الصورة موضعياً. للربط بين مناطق متباعدة تحتاج إلى تكديس طبقات كثيرة — يتوسّع قليلاً مع كل طبقة، لكن السياق الشامل لا يظهر إلا في أعماق الشبكة المتأخرة. هذا يعكس قوياً: الشبكة تفترض مُسبقاً أن الأنماط المحلية مهمّة وأنّ السمات لا تتغيّر بالإزاحة.

هذه الافتراضات مفيدة حين تكون البيانات محدودة — فهي تُرشد إلى كيف ينظر — لكنّها في المقابل تُقيِّد ما يستطيع تعلُّمه. في معالجة اللغة الطبيعية، أثبتت أنّ أنماط المُتعلَّمة تتفوّق على الافتراضات البنيوية المُبرمَجة مُسبقاً متى توفّرت بيانات كافية. فهل يمكن أن يتكرّر الأمر نفسه في الرؤية الحاسوبية؟

افتح في المختبر
قارن كيف تبني الشبكة الالتفافية السياق تدريجياً عبر طبقات متراصة مقابل ViT الذي يرى كل شيء في خطوة واحدة.
تستيقظ التجربة عند وصولك…

الفكرة: عامل رُقَع الصورة كرموز

فكرة ViT بسيطة وأنيقة: حوِّل الصورة إلى تسلسل يعرف المُحوِّل كيف يعالجه بالفعل. والوصفة كالتالي:

  1. قسِّم صورة 224×224 إلى شبكة من رُقَع 16×16 غير متراكبة ← 196 رقعة.
  2. ابسط كل رقعة (16 × 16 × 3 = 768 قيمة) ثم اسقطها خطّياً إلى تضمين بأبعاد D.
  3. أضف في المقدمة [CLS] قابلاً للتعلُّم — تمثيله النهائي سيحمل تصنيف الصورة.
  4. أضف قابلة للتعلُّم حتى يعرف النموذج من أين جاءت كل رقعة.
  5. مرِّر تسلسل الـ 197 رمزاً (196 رقعة + 1 CLS) إلى مُرمِّز مُحوِّل قياسي.

هذا كل شيء. لا التفاف، لا تجميع، لا مُستخرِجات سمات يدوية. البنية نفسها التي تقرأ الجمل أصبحت تقرأ الصور.

افتح في المختبر
شاهد صورة 224×224 تُقسَّم إلى 196 رقعة، كل منها تُبسَط وتُسقَط في تضمين.
تستيقظ التجربة عند وصولك…
z0=[xclass;  xp1E;  xp2E;  ;  xpNE]+Epos\mathbf{z}_0 = [\mathbf{x}_{\text{class}}; \; \mathbf{x}_p^1 E; \; \mathbf{x}_p^2 E; \; \cdots; \; \mathbf{x}_p^N E] + \mathbf{E}_{pos}
تجميع مدخل ViT — الرُّقَع تصبح رموزاًxₚⁱ = الرقعة المبسوطة i E = مصفوفة الإسقاط الخطي إلى D بُعد x_class = رمز [CLS] القابل للتعلُّم E_pos = التضمينات الموضعية z₀ = تسلسل المُدخَل الذي يراه المُحوِّل

البنية: مرمِّز محوِّل بلا تعديل

يستخدم ViT مُرمِّز المُحوِّل القياسي كما هو تماماً في الورقة الأصلية. كل طبقة تُطبِّق:

  • (MSA) — كل رقعة تنتبه لكل رقعة أخرى. رقعة تُظهر عجلةً تنتبه لرقعة تُظهر طريقاً، فيُبنى سياق «سيارة على طريق» في خطوة واحدة.
  • تُطبَّق قبل كل وحدة فرعية (تسوية مُسبقة)، مما يُثبِّت عملية في النماذج العميقة.
  • كتلة — طبقتان خطّيتان مع تفعيل GELU، تُطبَّقان باستقلال على كل موضع رقعة.
  • حول كلٍّ من MSA وMLP.

بعد L طبقة، يُمرَّر تمثيل رمز [CLS] عبر رأس MLP صغير لإجراء التصنيف. يأتي النموذج بثلاثة أحجام: ViT-Base ‏(86 مليون ، 12 طبقة)، وViT-Large ‏(307 مليون، 24 طبقة)، وViT-Huge ‏(632 مليون، 32 طبقة).

افتح في المختبر
انقر على أي طبقة لتعرف ماذا تفعل داخل مرمِّز ViT.
تستيقظ التجربة عند وصولك…

لماذا 16×16؟ مفاضلة حجم الرقعة

حجم الرُّقعة يُحدِّد عدد الرموز التي يراها المُحوِّل. لصورة 224×224:

  • رُقَع 32×32 ← 49 رمزاً فقط — سريع لكن خشن، وتضيع التفاصيل الدقيقة.
  • رُقَع 16×16 ← 196 رمزاً — نقطة التوازن المثلى: تفاصيل كافية وتكلفة حوسبية معقولة.
  • رُقَع 8×8 ← 784 رمزاً — تفاصيل غنية، لكن تكلفة من رتبة O(n²)، فأربعة أضعاف الرُّقع تعني 16 ضعفاً في تكلفة الانتباه.

أسلوب التسمية يعكس ذلك: ViT-L/16 يعني النموذج الكبير برُقَع 16×16، وViT-H/14 (الضخم، رُقَع 14×14) كان أكبر نسخة جرى اختبارها.

افتح في المختبر
اسحب حجم الرقعة وشاهد عدد الرموز وتكلفة الانتباه تتغير.
تستيقظ التجربة عند وصولك…

التضمينات الموضعية: كيف يعرف ViT مكان كل رقعة

على خلاف الجيبي الثابت في المُحوِّل الأصلي، يستخدم ViT تضمينات موضعية قابلة للتعلُّم واحد لكل موضع رقعة، يُدرَّب من الصفر. جرّبت الورقة بدائل تُراعي البُعدَين لكنها وجدت أنّ التضمينات أحادية البُعد البسيطة تُحقِّق الكفاءة نفسها.

والاكتشاف اللافت هنا: حين تُصوَّر هذه التضمينات المُتعلَّمة بصرياً، تظهر فيها بنية ثنائية الأبعاد واضحة. المواضع المتجاورة تملك تضمينات متشابهة، ونمط الشبكة ينبثق من التعلُّم وحده — أي أنّ النموذج يكتشف الترتيب المكاني بنفسه دون أن يُخبَر عنه.

افتح في المختبر
انقر على موضع رقعة لترى أيّ المواضع الأخرى تحمل تضمينات مُتعلَّمة أكثر تشابهاً.
تستيقظ التجربة عند وصولك…

الشرط: ViT يحتاج بيانات ضخمة

الاكتشاف المحوري في الورقة قصة تدريج ذات فصلين:

الفصل الأول — بيانات محدودة: عند التدريب على ImageNet وحدها (~1.3 مليون صورة)، يتراجع أداء ViT-Large عن شبكة ResNet مُماثلة (BiT). بدون الانحياز الاستقرائي المُدمَج في الشبكة الالتفافية — كالمعرفة المكانية وثبات الإزاحة — يضطر المُحوِّل لتعلُّم البنية المكانية من البيانات نفسها، و1.3 مليون صورة لا تكفي لذلك.

الفصل الثاني — بيانات ضخمة: عند التدريب المسبق على JFT-300M ‏(~300 مليون صورة)، يتفوّق ViT-Huge على أفضل شبكة التفافية. مع بيانات كافية، تصبح أنماط الانتباه المُتعلَّمة أكثر مرونة وقوة من البنية الالتفافية المُبرمَجة سلفاً. غياب الانحياز الاستقرائي يتحوّل إلى ميزة — النموذج لا يفترض، بل يكتشف.

نقطة التقاطع تقع بين 10 و100 مليون صورة تقريباً. تحتها تتفوّق الشبكات الالتفافية بفضل كفاءتها، وفوقها يتفوّق ViT بفضل سعته.

افتح في المختبر
اسحب حجم مجموعة البيانات لترى أين يتفوق ViT على الشبكة الالتفافية.
تستيقظ التجربة عند وصولك…

فعلياً، ماذا يتعلم ViT؟

حين نفحص نماذج ViT بعد التدريب، يظهر تسلسل هرمي واضح عبر الطبقات:

  • الطبقات المبكرة — الانتباه محلي في الغالب. رؤوس الانتباه تُركِّز على الرُّقَع المجاورة، وكأنّها تُعيد اختراع ما يفعله بطبيعته.
  • الطبقات الوسطى — مزيج من أنماط محلية وشاملة. بعض الرؤوس تتخصّص في الانتباه إلى رُقَع متشابهة اللون أو الملمس.
  • الطبقات المتأخرة — الانتباه يصبح شاملاً. الرؤوس تربط مناطق مترابطة دلالياً بصرف النظر عن موقعها في الصورة: كل أجزاء الكلب معاً، والخلفية منفصلة عن المقدمة. وهذا ما يصعب على الشبكات الالتفافية تحقيقه دون تكديس طبقات كثيرة.

كذلك يتعلّم النموذج استخدام رمز [CLS] بوصفه مُجمِّعاً للمعلومات: في الطبقة الأخيرة، ينتبه هذا الرمز على نطاق واسع إلى أكثر الرُّقَع إفادةً ويتجاهل الفوضى في الخلفية.

الفكرة في الكود

تضمين رُقَع ViT + تمرير أمامي للمحوِّلpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np

def create_patch_embeddings(image, patch_size=16, d_model=768):
    """قسِّم الصورة إلى رُقَع واسقطها إلى d_model بُعد."""
    H, W, C = image.shape                  # مثلاً (224, 224, 3)
    n_patches = (H // patch_size) * (W // patch_size)  # 196 لـ 224/16

    # أعد التشكيل إلى (عدد_الرُّقع, حجم_الرقعة*حجم_الرقعة*C) = (196, 768)
    patches = image.reshape(
        H // patch_size, patch_size,
        W // patch_size, patch_size, C
    ).transpose(0, 2, 1, 3, 4).reshape(n_patches, -1)

    # إسقاط خطي (في التطبيق الفعلي: مصفوفة أوزان مُتعلَّمة)
    W_e = np.random.randn(patches.shape[1], d_model) * 0.02
    return patches @ W_e                    # (196, 768)

def vit_forward(image, n_layers=12, n_heads=12, d_model=768):
    """تمرير أمامي مبسَّط لـ ViT."""
    # 1. تضمينات الرُّقع
    patch_emb = create_patch_embeddings(image, d_model=d_model)

    # 2. ألحق رمز [CLS] في المقدمة
    cls_token = np.zeros((1, d_model))
    tokens = np.vstack([cls_token, patch_emb])   # (197, 768)

    # 3. أضف التضمينات الموضعية
    pos_emb = np.random.randn(tokens.shape[0], d_model) * 0.02
    z = tokens + pos_emb

    # 4. طبقات مرمِّز المحوِّل (مبسَّطة)
    for _ in range(n_layers):
        # انتباه ذاتي: كل رقعة تنتبه إلى كل رقعة
        z = layer_norm(z)
        z = z + multi_head_attention(z, z, z, n_heads)
        # MLP: «تفكير» لكل رقعة على حدة
        z = layer_norm(z)
        z = z + mlp(z)

    # 5. التصنيف: خذ رمز [CLS] ← رأس MLP
    cls_output = z[0]           # تمثيل [CLS]
    return classification_head(cls_output)

# هذا كل شيء. المحوِّل ذاته الذي يقرأ النصوص صار يقرأ الصور.
# الجزء الوحيد الخاص بالرؤية: تقسيم الصورة إلى رُقع.

النتائج: ViT في مواجهة أفضل الشبكات الالتفافية

عند التدريب المسبق على JFT-300M:

  • حقّق ViT-H/14 دقّة 88.55% (top-1) على ImageNet — رقم قياسي جديد، متفوّقاً على أفضل شبكة التفافية سابقة (Noisy Student EfficientNet عند 88.4%) مع استهلاك حوسبة أقلّ بأربع مرات في التدريب المسبق.
  • على CIFAR-100 بلغت الدقّة 94.55%.
  • على معيار VTAB المؤلَّف من 19 مهمة، تفوّق ViT في المهام الطبيعية والمتخصّصة، لكن المهام البنيوية (التي تتطلّب استدلالاً هندسياً) ظلّت أصعب.

والأهم هو قصة الكفاءة: ViT-H/14 استهلك نحو 2,500 يوم-نواة TPUv3 للتدريب المسبق، مقابل نحو 9,900 لـ BiT-L ‏(ResNet-152×4) — أي أرخص بنحو 4 مرات مع نتائج أفضل.

ما الذي فتحه ViT

  1. 2020

    محوِّل الرؤية (ViT)

    أثبت أن محوِّلاً صِرفاً يضاهي الشبكات الالتفافية في تصنيف الصور عند التدريب المسبق على نطاق واسع. لا حاجة لأي التفاف.

  2. 2021

    DeiT — محوِّلات الصور الكفوءة بالبيانات

    أظهرت أنّ ViT قادر على منافسة الشبكات الالتفافية باستخدام ImageNet وحدها (بلا JFT) بفضل تقطير المعرفة وتعزيز البيانات المكثّف. جعلت ViT عملياً ومتاحاً للجميع.

  3. 2021

    محوِّل Swin — النوافذ المنزاحة

    قدّم خرائط سمات هرمية وانتباهاً قائماً على النوافذ، ما جعل المحوِّلات تنافس في الكشف والتجزئة — مهام تحتاج سمات متعددة المقاييس.

  4. 2021

    CLIP — التدريب المسبق التقابلي للغة والصورة

    جمع بين مُرمِّز صور مبني على ViT ومُرمِّز نصوص، ودُرِّب على 400 مليون زوج صورة-نص. تعلّم مفاهيم بصرية من اللغة الطبيعية، ما أتاح التصنيف دون أمثلة مُسبقة.

  5. 2021

    DINO — ViT بتعلم ذاتي الإشراف

    درّب ViT بدون تسميات. خرائط الانتباه الناتجة قامت بتجزئة الأجسام تلقائياً — دليل على أنّ البنية تكتشف المعاني البصرية بنفسها.

  6. 2022

    BEiT وMAE — نمذجة الصورة المُقنَّعة

    طبّقت فكرة التقنيع من BERT على الصور: أخفِ بعض الرُّقع ثم تنبّأ بها. تدريب مسبق ذاتي الإشراف يعمل مع ViT مباشرة دون تعديل.

  7. 2023

    SAM — نموذج تجزئة أي شيء

    نموذج أساسي مبني على ViT للتجزئة، دُرِّب على مليار قناع. حدِّد له نقطة أو مربعاً أو نصاً — وسيُجزِّئ أي جسم في أي صورة.

الإسهام الأعمق لـ ViT ليس رقماً على لائحة نتائج، بل هو البرهان على أنّ المُحوِّل بنية لا تختصّ بمجال بعينه. لغة، صور، بروتينات، صوت، فيديو: البنية نفسها، وآلية الانتباه نفسها، و نفسها. هذا التوحيد هو السبب في أنّ نماذج الصف الأول اليوم تعالج النصوص والصور في تمريرة أمامية واحدة.

المرجعDosovitskiy, Beyer, Kolesnikov, Weissenborn, Zhai, Unterthiner, Dehghani, Minderer, Heigold, Gelly, Uszkoreit, Houlsby. An Image Is Worth 16×16 Words: Transformers for Image Recognition at Scale. ICLR, 2021.

مصطلحات هذه الورقة