OpenAI’s CLIP (التعلم التبايني للغة والصورة) هو نموذج يتعلم ربط الصور بأوصافها النصية. من خلال تحليل كيفية عمله وتنفيذه، ستحصل على فهم كامل لـ OpenAI CLIP.
مقدمة
في يناير 2021، قدمت OpenAI نموذج CLIP (التعلم التبايني للغة والصورة)، وهو مصنف ذو طلقة صفرية يستخدم فهمه للغة الإنجليزية لتصنيف الصور دون الحاجة إلى التدريب على مجموعة بيانات محددة. يطبق هذا النموذج التطورات الحديثة في المحولات واسعة النطاق، المشابهة لـ GPT-3، على مجال الرؤية.
النتائج مبهرة بشكل ملحوظ. لقد أعددنا دليلاً تعليمياً لـ CLIP ودفتر Colab لـ CLIP لتجربة النموذج على صورك الخاصة.
ما هو OpenAI CLIP
CLIP، الذي يرمز إلى التعلم التبايني للغة والصورة، هو طريقة فعالة للتعلم من الإشراف اللغوي الطبيعي. تم تقديمه في عام 2021 في ورقة بحثية بعنوان “Learning Transferable Visual Models From Natural Language Supervision”، وهو نموذج تضمين مشترك للصور والنصوص.
تم تدريب CLIP على 400 مليون زوج من الصور والنصوص بطريقة ذاتية الإشراف، حيث يقوم بتعيين كل من النصوص والصور إلى نفس فضاء التضمين. على سبيل المثال، صورة لكلب والجملة “صورة لكلب” سيكون لهما تضمينات متشابهة جداً وقريبة من بعضهما في الفضاء المتجه. هذه القدرة مهمة لأنها تتيح إنشاء تطبيقات متنوعة، مثل البحث في قاعدة بيانات الصور باستخدام وصف أو العكس.
أداء CLIP
كفاءة التدريب: CLIP هو أحد أكثر النماذج كفاءة، حيث يحقق دقة 41٪ مع 400 مليون صورة. إنه يتفوق على النماذج الأخرى، مثل التنبؤ بحقيبة الكلمات (27٪) ونموذج اللغة المحول (16٪)، بنفس عدد الصور. يشير هذا إلى أن CLIP يتدرب بشكل أسرع بكثير من النماذج الأخرى في مجاله.

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

كيف يعمل CLIP
البنية
يتكون نموذج CLIP من مكونين رئيسيين: مشفر نصوص ومشفر صور. يستخدم مشفر النصوص محولًا (Transformer)، وهي بنية أحدثت ثورة في معالجة اللغة الطبيعية منذ عام 2017، مما يجعل تضمينها غير مفاجئ. للحصول على شرح مرئي ممتاز، راجع المدونة التالية.
بالنسبة لمشفر الصور، جرب المؤلفون نموذجين مختلفين: ResNet-50 وVision Transformer (ViT). يعتمد ResNet-50 على الشبكات العصبية التلافيفية (CNNs)، وكان البنية الأحدث آنذاك لتصنيف الصور. ViT هو تكيف أحدث للمحول للصور، حيث يقسم كل صورة إلى سلسلة من الرقع، ويعاملها مثل سلسلة من الرموز. وجد المؤلفون أن ViT يتدرب بشكل أسرع.
استغرق أكبر نموذج ResNet، RN50x64، 18 يومًا للتدريب على 592 من وحدات معالجة الرسوم V100 بينما استغرق أكبر Vision Transformer 12 يومًا على 256 من وحدات معالجة الرسوم V100.
تم تدريب كل من مشفر النصوص ومشفر الصور من الصفر.
نقوم بتدريب CLIP من الصفر دون تهيئة مشفر الصور بأوزان ImageNet أو مشفر النصوص بأوزان مدربة مسبقًا.
التدريب
حاول المؤلفون في البداية تدريب نموذج لوصف الصور يتوقع التسمية التوضيحية أو الوصف الدقيق لصورة معينة.
نهجنا الأولي، المشابه لـ VirTex، قام بتدريب شبكة CNN للصور ومحول نصوص من الصفر معًا للتنبؤ بتسمية الصورة. ومع ذلك، واجهنا صعوبات في توسيع نطاق هذه الطريقة بكفاءة.
لكنهم وجدوا أن تدريب نموذج وصف الصور على 400 مليون زوج (صورة، نص) لم يكن قابلاً للتوسع. بدلاً من ذلك، اختاروا نهج التعلم التمثيلي التبايني. الهدف من هذا النهج هو تعلم فضاء تضمين حيث تكون أزواج العينات المتشابهة قريبة من بعضها، بينما تكون العينات المختلفة بعيدة عن بعضها.
في إعداد التعلم التبايني النموذجي، يُعطى النموذج أمثلة في شكل (مرساة، إيجابي، سلبي). هنا، المرساة هي صورة من فئة واحدة، مثل كلب، والإيجابي هو صورة أخرى من نفس الفئة (كلب آخر)، والسلبي هو صورة من فئة مختلفة، مثل طائر. يتم تضمين الصور، ويتم تدريب النموذج لتقليل المسافة بين تضمينات نفس الفئة (المسافة(مرساة، إيجابي)) وزيادة المسافة بين تضمينات الفئات المختلفة (المسافة(مرساة، سلبي)). يشجع هذا النموذج على إنتاج تضمينات متشابهة جدًا لنفس الأشياء وتضمينات مميزة لأشياء مختلفة.

تصور للتعلم التبايني. المصدر: https://www.v7labs.com/blog/contrastive-learning-guide
يمكن تطبيق نفس النهج على النصوص، وكذلك على مجموعات من النصوص والصور. على سبيل المثال، في CLIP، يمكن أن يتكون مثال تدريب واحد من مرساة (صورة كلب)، وإيجابي (التسمية التوضيحية “صورة لكلب”)، وسلبي (التسمية التوضيحية “صورة لطائر”).
يقوم CLIP بتعميم هذا النهج بشكل أكبر باستخدام خسارة متعددة الفئات N-pair، وهو امتداد للطريقة القياسية التي تتضمن عدة سلبيات وإيجابيات لكل مرساة. كما هو موضح في الورقة:
بالنظر إلى دفعة من N زوج (صورة، نص)، يتم تدريب CLIP للتنبؤ بأي من N × N من الأزواج الممكنة (صورة، نص) عبر الدفعة حدثت بالفعل. للقيام بذلك، يتعلم CLIP فضاء تضمين متعدد الوسائط من خلال تدريب مشفر صور ومشفر نصوص معًا لتعظيم تشابه جيب التمام لتضمينات الصور والنصوص للأزواج N الحقيقية في الدفعة مع تقليل تشابه جيب التمام لتضمينات N² − N من الأزواج غير الصحيحة. يقوم بتحسين خسارة إنتروبيا متقاطعة متماثلة على درجات التشابه هذه.
هندسة المطالبات والتجميع
مع ظهور نماذج اللغة، أصبحت هندسة المطالبات ممارسة شائعة لتحقيق مخرجات جيدة من النماذج التوليدية. نظرًا لأن مشفر النصوص في CLIP هو نموذج محول، وجد المؤلفون أن هندسة المطالبات كانت حاسمة لتحقيق أداء جيد للطلقة الصفرية. لاحظوا أنه في مجموعة بيانات ما قبل التدريب الخاصة بهم، كان من النادر نسبيًا أن يكون النص المقترن بالصورة كلمة واحدة، مثل “كلب” تمثل تسمية فئة. في أغلب الأحيان، كان النص جملة كاملة، مثل تسمية توضيحية أو وصف للصورة. نتيجة لذلك، وجد المؤلفون أن المطالبة “a photo of a {object}” كانت افتراضية جيدة، على الرغم من أن المطالبات الأكثر تخصصًا عملت بشكل أفضل في حالات معينة. على سبيل المثال، بالنسبة لصور الأقمار الصناعية، كانت المطالبة “a satellite photo of a {object}” أكثر فعالية.
جرب المؤلفون أيضًا تجميع النماذج، وهي تقنية يتم فيها دمج تنبؤات نماذج متعددة لإنتاج المخرجات النهائية. يُستخدم هذا النهج بشكل شائع في التعلم الآلي لمعالجة مشكلات التباين العالي والانحياز المنخفض (فرط التخصيص). بالنسبة لـ CLIP، تم بناء المجموعة باستخدام العديد من المطالبات المختلفة لإنشاء مصنفات.
أدت كل من هندسة المطالبات والتجميع إلى تحسين الأداء بشكل كبير على ImageNet.
على ImageNet، قمنا بتجميع 80 مطالبة سياقية مختلفة وهذا يحسن الأداء بنسبة 3.5٪ إضافية عن المطالبة الافتراضية المفردة التي تمت مناقشتها أعلاه. عند النظر إليهما معًا، تعمل هندسة المطالبات والتجميع على تحسين دقة ImageNet بنسبة 5٪ تقريبًا.
تطبيقات OpenAI CLIP
لدى OpenAI CLIP مجموعة واسعة من التطبيقات وحالات الاستخدام في تحليل الصور والنصوص. تتضمن بعض التطبيقات وحالات الاستخدام الرئيسية لـ CLIP ما يلي:
- تصنيف الصور: يمكن لـ CLIP تصنيف الصور إلى فئات أو مجموعات مختلفة بناءً على محتواها. يمكنه التنبؤ بتسمية الفئة الأكثر صلة بصورة معينة.
- استرجاع الصور: يمكن لـ CLIP استرجاع الصور ذات الصلة بناءً على استعلام نصي معين. يمكنه العثور على صور متشابهة دلاليًا مع النص المدخل.
- الإشراف على المحتوى: يمكن استخدام CLIP للكشف تلقائيًا والإشراف على المحتوى غير اللائق أو المرفوض في الصور والنصوص.
- وصف الصور: يمكن لـ CLIP إنشاء تسميات توضيحية أو أوصاف للصور بناءً على محتواها.
- الإجابة على الأسئلة البصرية: يمكن لـ CLIP الإجابة على أسئلة حول الصور بناءً على محتواها.
تنفيذ OpenAI CLIP باستخدام محولات Huggingface
يمكنك استخدام CLIP على جهازك المحلي ببضعة أسطر من التعليمات البرمجية باستخدام مكتبة HuggingFace Transformers! ابدأ باستيراد المكتبة وتحميل النموذج المدرب مسبقًا.
import transformers
model = transformers.CLIPModel.from_pretrained(“openai/clip-vit-base-patch32”)
processor = transformers.CLIPProcessor.from_pretrained(“openai/clip-vit-base-patch32”)
بعد ذلك، قم بإنشاء قائمتين: واحدة تحتوي على تسميات توضيحية أو أوصاف، والأخرى تحتوي على صور. يمكن تمثيل الصور إما كعناوين URL أو صور PIL.
import PIL.Image
images = [PIL.Image(“for_example_a_dog_image.jpeg”)]
possible_classes = [“an image of a bird”, “an image of a dog”, “an image of a cat”]
قم باستدعاء المعالج (processor)، الذي يقوم بتقسيم النصوص والصور إلى رموز وإعدادها للإدخال في النموذج. تشبه هذه العملية استدعاء أداة التقسيم (tokenizer) في حالة استخدام النصوص فقط القياسية. بالنظر إلى دفعة من الأوصاف، يتم تطبيق الحشو (padding) لضمان أن تكون جميعها بنفس الطول لتخزين الموتر، ويتم استخدام الاقتطاع (truncation) لتحديد أي جمل طويلة إلى أقصى طول للتسلسل (وهو 76، كما ذكرنا سابقًا). أخيرًا، مرر المدخلات المرمزة إلى النموذج، والذي يقوم بعد ذلك بإدخالها عبر مشفرات النصوص والصور.
with torch.no_grad():
inputs = processor(text=descriptions, images=images, return_tensors=“pt”, padding=True, truncation=True)
outputs = model(**inputs)
الآن، يمكننا الحصول على مصفوفة حاصل الضرب النقطي باستخدام وظيفتين مختلفتين. استخدم `logits_per_image` للحصول على مصفوفة حاصل الضرب النقطي بالشكل [num_of_images, num_of_text]، و `logits_per_text` للحصول على المصفوفة بالشكل [num_of_text, num_of_images].
dot_products_per_image = outputs.logits_per_image
dot_products_per_text = outputs.logits_per_text
أخيرًا، إذا رغبت، يمكننا تطبيق دالة softmax على هذه المصفوفات للحصول على توزيع احتمالي لكل صورة.
probabilities = dot_products_per_image.softmax(dim=1)
قيود استخدام OpenAI CLIP
بينما تتناول الورقة العديد من التجارب والنتائج، من المهم الاعتراف بأن CLIP له عدة قيود.
أولاً، بسبب قرار التصميم المذكور سابقًا، فإن CLIP ليس نموذجًا توليديًا ولا يمكنه أداء مهام مثل وصف الصور. ومع ذلك، يمكن للذكاء الاصطناعي التوليدي الآخر أداء عمل أكثر مما يفعله OpenAI CLIP. على سبيل المثال:

novita.ai LLM performs image captioning
يمكن للذكاء الاصطناعي التوليدي الآخر مثل novita.ai تعويض نقائص CLIP من خلال تطبيق واجهات برمجة التطبيقات المناسبة.
يلاحظ المؤلفون أن CLIP لا يزال بعيدًا عن أن يكون الأحدث ولا يقارن إلا بـ ResNet مع طبقة خطية فوقه. إنه يعمم بشكل سيئ في مهام معينة؛ على سبيل المثال، يحقق دقة 88٪ فقط على مجموعة بيانات التعرف على الأرقام المكتوبة بخط اليد MNIST السهلة، ربما لأنه لا توجد صور مماثلة في بيانات التدريب الخاصة به ولا يفعل CLIP الكثير لمعالجة هذه المشكلة.
يتم تدريب CLIP على أزواج الصور والنصوص غير المفلترة وغير المنظمة من الإنترنت، مما يؤدي إلى تعلم النموذج للعديد من التحيزات الاجتماعية. هذه المخاوف مشابهة لتلك الخاصة بنماذج اللغات الكبيرة (LLMs) حاليًا، والتي تحاول تقنيات مثل RLFHF (إطار القرصنة القوي منخفض التردد) وتحسين التفضيل المباشر التخفيف منها.
بالإضافة إلى ذلك، في التطبيق الأصلي، كان الحد الأقصى لطول التسلسل لمشفر نصوص المحول محددًا بـ 76. ينشأ هذا القيد لأن مجموعة البيانات تتكون في الغالب من صور وتسميات توضيحية قصيرة. لذلك، قد لا يعمل استخدام نموذج ما قبل التدريب الجاهز بشكل جيد مع النصوص الأطول، حيث سيتم اقتطاعها بعد 76 رمزًا، نظرًا لأن النموذج تم تدريبه بنصوص قصيرة.
الاتجاهات المستقبلية في تحليل الصور والنصوص باستخدام CLIP
لقد فتح نجاح OpenAI CLIP إمكانيات جديدة لمستقبل تحليل الصور والنصوص. يستكشف الباحثون والمطورون باستمرار تطبيقات مبتكرة وتطورات في هذا المجال.
أحد الاتجاهات المستقبلية هو دمج CLIP مع طرائق أخرى، مثل الصوت والفيديو، لتمكين التحليل متعدد الوسائط. سيسمح هذا لـ CLIP بفهم وتحليل بيانات الوسائط المتعددة المعقدة، مما يؤدي إلى نتائج أكثر شمولاً ودقة.
بالإضافة إلى ذلك، يمكن للتطورات في التعلم الذاتي الإشراف والتعلم التمثيلي غير الخاضع للإشراف أن تعزز بشكل أكبر أداء CLIP وقدراته على التعميم. يمكن لهذه التطورات أن تفتح إمكانيات جديدة لـ CLIP في مجالات مختلفة، بما في ذلك الرعاية الصحية والروبوتات وتحليل محتوى الوسائط المتعددة.
مستقبل تحليل الصور والنصوص باستخدام CLIP واعد، وستستمر الأبحاث والتطوير في دفع حدود هذا المجال المثير.
الخاتمة
يمثل CLIP من OpenAI قفزة كبيرة في تحليل الصور والنصوص، باستخدام المحولات واسعة النطاق والتعلم التبايني لتصنيف الصور بناءً على أوصاف اللغة الطبيعية. يتيح تعدد استخداماته العديد من التطبيقات المبتكرة، على الرغم من أنه يواجه قيودًا مثل الصعوبات في المهام خارج مجال تدريبه، وطول تسلسل محدد للنصوص، والتحيزات الاجتماعية الموروثة من بيانات التدريب غير المفلترة.
أدت تقنيات مثل هندسة المطالبات والتجميع إلى تحسين أدائه، وتحمل التطورات المستقبلية في دمج طرائق أخرى، مثل الصوت والفيديو، إلى جانب التعلم الذاتي الإشراف وغير الخاضع للإشراف، وعدًا لتعزيز قدرات CLIP بشكل أكبر. تشير الأبحاث والتطوير المستمرة في هذا المجال إلى مستقبل مشرق لتحليل الوسائط المتعددة بشكل أكثر شمولاً ودقة.
novita.ai، المنصة الشاملة للإبداع اللامحدود التي تمنحك الوصول إلى أكثر من 100 واجهة برمجة تطبيقات. من توليد الصور ومعالجة اللغة إلى تحسين الصوت ومعالجة الفيديو، بنظام الدفع حسب الاستخدام الرخيص، يحررك من متاعب صيانة وحدة معالجة الرسوميات أثناء بناء منتجاتك الخاصة. جربه مجانًا.
قراءة موصى بها
محرك استدلال LLM من Novita AI: أكبر إنتاجية وأرخص استدلال متاح
