يطبق هذا المستودع محرك بحث الصور على الصور المحلية المدعومة بنموذج CLIP. إنه دقيق بشكل مدهش وقادر على العثور على الصور بناءً على استفسارات معقدة. لمزيد من المعلومات، راجع مدونة Medium هنا.
يتم تنفيذ الوظيفة المضافة لتصنيف الصور اعتمادًا على الأشخاص الذين تم تصويرهم من خلال مكتبة face_recognition
. تتوفر أيضًا العديد من المرشحات، مما يتيح لك العثور على صور مجموعتك ولقطات الشاشة وما إلى ذلك...
في بيئة Python 3.8+ الافتراضية، قم بالتثبيت إما من PIP أو من المصدر:
pip install image-searcher
pip install face_recognition # Optional to enable face features
pip install flask flask_cors # Optional to enable a flask api
pip install -r dev_requirements.txt
pip install face_recognition # Optional to enable face features
pip install flask flask_cors # Optional to enable a flask api
استكشاف الأخطاء وإصلاحها: إذا تمت مواجهة مشاكل في بناء عجلات dlib أثناء تثبيت Face_recognition، فتأكد من تثبيت حزمة python3.8-dev
(على التوالي python3.x-dev
) وإعادة إنشاء البيئة الافتراضية من البداية باستخدام الأمر المذكور أعلاه بمجرد تثبيتها.
حاليا، الاستخدام هو على النحو التالي. تقوم المكتبة أولاً بحساب تضمينات جميع الصور واحدة تلو الأخرى، وتخزنها في قاموس مختار لمزيد من الرجوع إليها. لحساب معلومات حول الأشخاص الموجودين في الصورة وتخزينها، قم بتمكين علامة include_faces
(لاحظ أنها تجعل عملية الفهرسة أبطأ بما يصل إلى 10x).
from image_searcher import Search
searcher = Search ( image_dir_path = "/home/manu/perso/ImageSearcher/data/" ,
traverse = True ,
include_faces = False )
بمجرد إجراء هذه العملية مرة واحدة، من خلال بايثون، يتم استخدام المكتبة على هذا النحو:
from image_searcher import Search
searcher = Search ( image_dir_path = "/home/manu/perso/ImageSearcher/data/" ,
traverse = True ,
include_faces = False )
# Option 1: Pythonic API
from PIL import Image
ranked_images = searcher . rank_images ( "A photo of a bird." , n = 5 )
for image in ranked_images :
Image . open ( image . image_path ). convert ( 'RGB' ). show ()
# Option 2: Launch Flask api from code
from image_searcher . api import run
run ( searcher = searcher )
ستؤدي إضافة علامات في نهاية الاستعلام (مثال: A bird singing #photo
) إلى تصفية البحث بناءً على قائمة العلامات. العلامات المدعومة في الوقت الحالي هي:
القادم هو الدعم ل:
بعد فهرسة الصور محل الاهتمام، يمكن استخدام Flask API لتحميل النماذج مرة واحدة ثم البحث بكفاءة.
image_dir_path : /home/manu/Downloads/facebook_logs/messages/inbox/
save_path : /home/manu/
traverse : true
include_faces : true
reindex : false
n : 42
port :
host :
debug :
threaded :
from image_searcher . api import run
# Option 1: Through a config file
run ( config_path = "path_to_config_file.yml" )
# Option 2: Through an instanciated Search object
from image_searcher import Search
run ( searcher = Search ( image_dir_path = "/home/manu/perso/ImageSearcher/data/" ,
traverse = True ,
include_faces = False ))
يمكن أيضًا إطلاق عملية gunicorn محليًا باستخدام:
gunicorn " api.run_flask_gunicorn:create_app('path_to_config_file.yml') "
--name image_searcher
--bind 0.0.0.0: ${GUNICORN_PORT :- 5000}
--worker-tmp-dir /dev/shm
--workers= ${GUNICORN_WORKERS :- 2}
--threads= ${GUNICORN_THREADS :- 4}
--worker-class=gthread
--log-level=info
--log-file ' - '
--timeout 30
ملحوظة: قم بتعديل معلمة المهلة (بالثواني) إذا كان يتم فهرسة الكثير من الصور الجديدة/
عن طريق فتح صفحة الويب في المتصفح باستخدام محرك البحث التجريبي search.html
.
من خلال نقطة نهاية API عبر الإنترنت: http://127.0.0.1:5000/get_best_images?q=a+photo+of+a+bird
في بايثون:
import requests
import json
import urllib . parse
query = "a photo of a bird"
r = requests . get ( f"http://127.0.0.1:5000/get_best_images?q= { urllib . parse . quote ( query ) } " )
print ( json . loads ( r . content )[ "results" ])
يؤدي استخدام هذه الأداة مع صور العطلات أو أرشيفات صور Messenger وWhatsApp إلى إعادة اكتشاف الصور القديمة وهو أمر مذهل في تحديد موقع الصور المفقودة منذ فترة طويلة.
قم بإجراء الاختبارات باستخدام
python -m unittest
والوبر مع:
pylint image_searcher
هذا الريبو هو عمل قيد التقدم وقد بدأ مؤخرًا. كما هو الحال، فهو يحسب حوالي 10 صور في الثانية أثناء مرحلة الفهرسة الأولية، ثم يتم بشكل فوري تقريبًا أثناء مرحلة الاستعلام.
نرحب بطلبات الميزات والمساهمات. التحسينات التي تم إدخالها على واجهة البحث على الويب ستكون موضع تقدير كبير أيضًا!
تبسيط وتعزيز مثيل فئة البحث:
سرعة:
سمات:
تضمين الملفات:
الواجهة الأمامية:
النشر: