تخطي إلى المحتوى

البحث الدلالي عن الصور باستخدام OpenAI CLIP و Meta FAISS

مقدمة

يرشدك هذا الدليل إلى كيفية إنشاء محرك بحث دلالي للصور باستخدام OpenAI CLIP و Meta FAISS و Flask. من خلال الجمع بين التضمينات اللغوية المرئية القوية في CLIP مع البحث الفعال لأقرب جار في FAISS، يمكنك إنشاء واجهة ويب كاملة الوظائف حيث يمكنك استرداد الصور ذات الصلة باستخدام استعلامات اللغة الطبيعية.

المعاينة المرئية للبحث عن الصور الدلالية

صفحة ويب فلاسك مع نظرة عامة على نتائج البحث الدلالي

كيف تعمل

  • يستخدم CLIP مُشفِّر رؤية (على سبيل المثال، ResNet أو ViT) للصور ومُشفِّر نص (قائم على المحول) للغة لإسقاط كليهما في نفس مساحة التضمين متعدد الوسائط. يسمح ذلك بإجراء مقارنة مباشرة بين النص والصور باستخدام تشابه جيب التمام.
  • ينشئ FAISS (البحث عن التشابه بالذكاء الاصطناعي على فيسبوك) فهرسًا لتضمينات الصور ويتيح استرجاعًا سريعًا وقابلًا للتطوير لأقرب المتجهات إلى استعلام معين.
  • يوفر Flask واجهة ويب بسيطة لإرسال استعلامات اللغة الطبيعية وعرض الصور المتطابقة دلالياً من الفهرس.

تدعم هذه البنية البحث بدون لقطة، مما يعني أنك لا تحتاج إلى تصنيفات أو فئات، فقط بيانات الصورة وموجه جيد.

البحث الدلالي عن الصور باستخدام حزمة Ultralytics Python

تحذير مسار الصورة

إذا كنت تستخدم صورك الخاصة، تأكد من توفير مسار مطلق لدليل الصور. وإلا فقد لا تظهر الصور على صفحة الويب بسبب قيود عرض الملفات في Flask.

from ultralytics import solutions

app = solutions.SearchApp(
    # data = "path/to/img/directory" # Optional, build search engine with your own images
    device="cpu"  # configure the device for processing i.e "cpu" or "cuda"
)

app.run(debug=False)  # You can also use `debug=True` argument for testing

VisualAISearch الفئة

تقوم هذه الفئة بتنفيذ جميع عمليات الواجهة الخلفية:

  • تحميل أو إنشاء فهرس FAISS من الصور المحلية.
  • استخراج تضمينات الصور والنصوص باستخدام CLIP.
  • إجراء بحث عن التشابه باستخدام تشابه جيب التمام.

بحث الصور المماثلة

تحذير مسار الصورة

إذا كنت تستخدم صورك الخاصة، تأكد من توفير مسار مطلق لدليل الصور. وإلا فقد لا تظهر الصور على صفحة الويب بسبب قيود عرض الملفات في Flask.

from ultralytics import solutions

searcher = solutions.VisualAISearch(
    # data = "path/to/img/directory" # Optional, build search engine with your own images
    device="cuda"  # configure the device for processing i.e "cpu" or "cuda"
)

results = searcher("a dog sitting on a bench")

# Ranked Results:
#     - 000000546829.jpg | Similarity: 0.3269
#     - 000000549220.jpg | Similarity: 0.2899
#     - 000000517069.jpg | Similarity: 0.2761
#     - 000000029393.jpg | Similarity: 0.2742
#     - 000000534270.jpg | Similarity: 0.2680

VisualAISearch المعلمات

يوضح الجدول أدناه المعلمات المتاحة ل VisualAISearch:

الجدال النوع افتراضي الوصف
data str images المسار إلى دليل الصور المستخدم للبحث عن التشابه.
الجدال النوع افتراضي الوصف
device str None يحدد جهاز الاستدلال (على سبيل المثال, cpu, cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين CPU ، أو جهاز GPU معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج.

مزايا البحث الدلالي عن الصور باستخدام CLIP و FAISS

يوفر بناء نظام البحث عن الصور الدلالي الخاص بك باستخدام CLIP و FAISS العديد من المزايا المقنعة:

  1. قدرات اللقطة الصفرية: لا تحتاج إلى تدريب النموذج على مجموعة بياناتك المحددة. تتيح لك خاصية التعلم بدون لقطة صفرية في CLIP إجراء استعلامات بحث على أي مجموعة بيانات للصور باستخدام لغة طبيعية حرة، مما يوفر الوقت والموارد.

  2. فهم شبيه بفهم الإنسان: على عكس محركات البحث المستندة إلى الكلمات المفتاحية، يفهم برنامج CLIP السياق الدلالي. ويمكنه استرداد الصور بناءً على استعلامات مجردة أو عاطفية أو علائقية مثل "طفل سعيد في الطبيعة" أو "أفق مدينة مستقبلية في الليل".

    سير عمل استرجاع الصور باستخدام OpenAI Clip Clip

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

  4. بحث مرن وقابل للتطوير: يمكّن FAISS من إجراء بحث سريع عن أقرب جار حتى مع مجموعات البيانات واسعة النطاق. فهو مُحسَّن للسرعة والذاكرة، مما يسمح بالاستجابة في الوقت الفعلي حتى مع آلاف (أو ملايين) التضمينات.

    سير عمل بناء ناقلات التضمين الفوقية FAISS

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

الأسئلة الشائعة

كيف يفهم CLIP كلاً من الصور والنصوص؟

CLIP (التدريب المسبق على الصور بلغة متباينة) هو نموذج تم تطويره بواسطة OpenAI يتعلم الربط بين المعلومات البصرية واللغوية. يتم تدريبه على مجموعة بيانات ضخمة من الصور المقترنة بتعليقات توضيحية باللغة الطبيعية. يسمح له هذا التدريب بتعيين كل من الصور والنص في مساحة تضمين مشتركة، بحيث يمكنك المقارنة بينهما مباشرةً باستخدام التشابه المتجه.

لماذا يعتبر CLIP قويًا جدًا لمهام الذكاء الاصطناعي؟

ما يميز CLIP هو قدرته على التعميم. فبدلاً من أن يتم تدريبه فقط على تسميات أو مهام محددة، فإنه يتعلم من اللغة الطبيعية نفسها. وهذا يسمح لها بالتعامل مع استعلامات مرنة مثل "رجل يركب دراجة مائية" أو "مشهد حلم سريالي"، مما يجعلها مفيدة لكل شيء بدءًا من التصنيف إلى البحث الدلالي الإبداعي، دون إعادة التدريب.

FAISS (بحث التشابه بالذكاء الاصطناعي على فيسبوك) هي مجموعة أدوات تساعدك على البحث في المتجهات عالية الأبعاد بكفاءة عالية. بمجرد أن يقوم CLIP بتحويل صورك إلى تضمينات، يجعل FAISS من السهل والسريع العثور على أقرب التطابقات لاستعلام نصي، وهو مثالي لاسترجاع الصور في الوقت الفعلي.

لماذا تستخدم Ultralytics Python إذا كانت حزمة CLIP و FAISS من OpenAI و Meta؟

بينما تم تطوير CLIP و FAISS من قبل OpenAI و Meta على التوالي، تعمل حزمةUltralytics Python على تبسيط عملية دمجهما في خط أنابيب بحث دلالي كامل للصور في سير عمل من سطرين يعمل فقط:

بحث الصور المماثلة

from ultralytics import solutions

searcher = solutions.VisualAISearch(
    # data = "path/to/img/directory" # Optional, build search engine with your own images
    device="cuda"  # configure the device for processing i.e "cpu" or "cuda"
)

results = searcher("a dog sitting on a bench")

# Ranked Results:
#     - 000000546829.jpg | Similarity: 0.3269
#     - 000000549220.jpg | Similarity: 0.2899
#     - 000000517069.jpg | Similarity: 0.2761
#     - 000000029393.jpg | Similarity: 0.2742
#     - 000000534270.jpg | Similarity: 0.2680

يعالج هذا التنفيذ عالي المستوى:

  • توليد الصور والنصوص المدمجة القائمة على CLIP.
  • إنشاء مؤشر FAISS وإدارته.
  • بحث دلالي فعال مع تشابه جيب التمام.
  • تحميل الصور وتصورها المستند إلى الدليل.

هل يمكنني تخصيص الواجهة الأمامية لهذا التطبيق؟

نعم، يمكنك ذلك بالتأكيد. يستخدم الإعداد الحالي Flask مع واجهة HTML أساسية، ولكن لك الحرية في تبديل HTML الخاص بك أو حتى بناء شيء أكثر ديناميكية باستخدام React أو Vue أو إطار عمل أمامي آخر. يمكن أن يعمل Flask بسهولة كواجهة برمجة تطبيقات خلفية لواجهتك المخصصة.

هل يمكن البحث من خلال مقاطع الفيديو بدلاً من الصور الثابتة؟

ليس بشكل مباشر - ولكن هناك حل بديل بسيط. يمكنك استخراج إطارات فردية من مقاطع الفيديو الخاصة بك (على سبيل المثال، إطار كل ثانية)، والتعامل معها كصور مستقلة، وإدخالها في النظام. بهذه الطريقة، يمكن لمحرك البحث أن يفهرس دلالياً اللحظات المرئية من مقاطع الفيديو الخاصة بك.



📅 تم إنشاؤه منذ 25 يومًا ✏️ تم التحديث منذ 23 يومًا

التعليقات