استرجاع الصور بناءً على استعلام (نص أو صورة) ، باستخدام نموذج مقطع Open AI PretRained.
النص كاستعلام.
الصورة كاستعلام.
المقطع (صورة اللغة المتباينة قبل التدريب) هو شبكة عصبية مدربة على مجموعة متنوعة من أزواج (الصورة والنص). يمكنه تعيين الصور والنص على نفس المساحة الكامنة ، بحيث يمكن مقارنتها باستخدام مقياس التشابه.
تمديد العمل في هذا المستودع ، قمت بإنشاء محرك بحث بسيط عن الصور يمكنه التقاط النص والصور كاستعلام. يعمل محرك البحث على النحو التالي:
image_id: {"url": https://abc.com/xyz, "feature_vector": [0.1, 0.3, ..., 0.2]}
لقد استخدمت إصدار Lite من مجموعة بيانات Unsplash التي تحتوي على 25000 صورة. يتم تشغيل البحث الجار K-neary بواسطة خدمة Amazon Elasticsearch. لقد نشرت خدمة الاستعلام كدالة AWS Lambda ووضعت بوابة API أمامها. تم تطوير الواجهة الأمامية باستخدام STIPLELIT.
pip install -e . --no-cache-dir
python scripts/download_unsplash.py --image_width=480 --threads_count=32
سيؤدي ذلك إلى تنزيل واستخراج ملف مضغوط يحتوي على البيانات الوصفية حول الصور الموجودة في مجموعة البيانات. سيستخدم البرنامج النصي عناوين URL الخاصة بالصور لتنزيل الصور الفعلية unsplash-dataset/photos . قد يفشل التنزيل في بعض الصور (انظر هذه المشكلة). نظرًا لأن Clip سيقوم بإسقاط الصور إلى 224 × 224 على أي حال ، فقد ترغب في ضبط عرض الصور التي تم تنزيلها لتقليل مساحة التخزين. قد ترغب أيضًا في زيادة معلمة threads_count لتحقيق أداء أسرع.
python scripts/ingest_data.py
سيقوم البرنامج النصي بتنزيل نموذج المقطع المسبق ومعالجة الصور بواسطة الدفعة. سوف يستخدم GPU إذا كان هناك واحد.
بناء صورة Docker لـ AWS Lambda.
docker build --build-arg AWS_ACCESS_KEY_ID=YOUR_AWS_ACCESS_KEY_ID
--build-arg AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_ACCESS_KEY
--tag clip-image-search
--file server/Dockerfile .
قم بتشغيل صورة Docker كحاوية.
docker run -p 9000:8080 -it --rm clip-image-search
اختبر الحاوية مع طلب البريد.
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"query": "two dogs", "input_type": "text"}'
streamlit run streamlit_app.py