واجهة Ultralytics Explorer API#
اعتبارًا من ultralytics>=8.3.12، أُزيل Ultralytics Explorer. لاستخدام Explorer، ثبّت pip install ultralytics==8.3.11. تتوفر ميزات مماثلة (وموسّعة) لاستكشاف مجموعات البيانات على منصة Ultralytics.
مقدمة#
واجهة Explorer API هي واجهة Python API لاستكشاف مجموعات بياناتك. وتدعم تصفية مجموعة بياناتك والبحث فيها باستخدام استعلامات SQL والبحث عن التشابه بين المتجهات والبحث الدلالي.
شاهد: نظرة عامة على Ultralytics Explorer API
التثبيت#
يعتمد Explorer على مكتبات خارجية لبعض وظائفه. تُثبَّت هذه المكتبات تلقائيًا عند استخدام Explorer. لتثبيت هذه التبعيات يدويًا، استخدم الأمر التالي:
pip install "ultralytics[explorer]==8.3.11"الاستخدام#
from ultralytics import Explorer
# إنشاء كائن Explorer
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
# إنشاء تضمينات لمجموعة بياناتك
explorer.create_embeddings_table()
# البحث عن صور مشابهة لصورة أو صور محددة
df = explorer.get_similar(img="path/to/image.jpg")
# أو البحث عن صور مشابهة لفهرس أو فهارس محددة
df = explorer.get_similar(idx=0)إذا أردت فرض تحديث جدول التضمينات، يمكنك تمرير force=True إلى الطريقة create_embeddings_table.
يمكنك الوصول مباشرةً إلى كائن جدول LanceDB لإجراء تحليلات متقدمة. تعرّف على المزيد في قسم العمل مع جدول التضمينات.
1. البحث عن التشابه#
البحث عن التشابه تقنية للعثور على صور مشابهة لصورة معينة. وتعتمد على فكرة أن الصور المتشابهة لها تضمينات متشابهة. بعد إنشاء جدول التضمينات، يمكنك إجراء البحث عن التشابه بإحدى الطرق التالية:
- باستخدام فهرس محدد أو قائمة فهارس في مجموعة البيانات:
exp.get_similar(idx=[1,10], limit=10) - باستخدام أي صورة أو قائمة صور غير موجودة في مجموعة البيانات:
exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)
عند استخدام مدخلات متعددة، يُستخدم مجموع تضميناتها.
تحصل على DataFrame من pandas تضم limit من أقرب نقاط البيانات إلى المدخل، بالإضافة إلى المسافة بينها في فضاء التضمينات. ويمكنك استخدام مجموعة البيانات هذه لإجراء مزيد من التصفية.
from ultralytics import Explorer
# إنشاء كائن Explorer
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
similar = exp.get_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
print(similar.head())
# البحث باستخدام صور متعددة
similar = exp.get_similar(
img=["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/bus.jpg"],
limit=10,
)
print(similar.head())رسم الصور المتشابهة#
يمكنك أيضًا رسم الصور المتشابهة باستخدام الطريقة plot_similar. وتقبل هذه الطريقة الوسيطات نفسها التي تقبلها الطريقة get_similar، ثم تعرض الصور المتشابهة ضمن شبكة.
from ultralytics import Explorer
# إنشاء كائن Explorer
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
plt = exp.plot_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
plt.show()2. اسأل الذكاء الاصطناعي (الاستعلام باللغة الطبيعية)#
تتيح لك هذه الميزة تصفية مجموعة بياناتك باستخدام اللغة الطبيعية، دون كتابة SQL. يحوّل مولّد الاستعلامات المدعوم بالذكاء الاصطناعي مطالبتك إلى استعلام ويعرض النتائج المطابقة. على سبيل المثال، يمكنك أن تطلب: "أرني 100 صورة فيها شخص واحد بالضبط وكلبان. ويمكن أن تظهر فيها كائنات أخرى أيضًا"، وسيُنشئ الاستعلام ويعرض لك تلك النتائج. ملاحظة: تستخدم هذه الميزة نماذج اللغة الكبيرة، لذا فإن النتائج احتمالية وقد تكون غير دقيقة.
from ultralytics.data.explorer import plot_query_result
from ultralytics import Explorer
# إنشاء كائن Explorer
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
df = exp.ask_ai("show me 100 images with exactly one person and 2 dogs. There can be other objects too")
print(df.head())
# رسم النتائج
plt = plot_query_result(df)
plt.show()3. تنفيذ استعلامات SQL#
يمكنك تشغيل استعلامات SQL على مجموعة بياناتك باستخدام الطريقة sql_query. تقبل هذه الطريقة استعلام SQL كمدخل، وتعيد DataFrame من pandas يتضمن النتائج.
from ultralytics import Explorer
# إنشاء كائن Explorer
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
df = exp.sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%'")
print(df.head())رسم نتائج استعلام SQL#
يمكنك أيضًا رسم نتائج استعلام SQL باستخدام الطريقة plot_sql_query. تقبل هذه الطريقة الوسيطات نفسها التي تقبلها الطريقة sql_query، ثم تعرض النتائج ضمن شبكة.
from ultralytics import Explorer
# إنشاء كائن Explorer
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
# رسم استعلام SQL
exp.plot_sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%' LIMIT 10")4. العمل مع جدول التضمينات#
يمكنك أيضًا التعامل مباشرةً مع جدول التضمينات. بعد إنشاء جدول التضمينات، يمكنك الوصول إليه باستخدام Explorer.table.
يستخدم Explorer جداول LanceDB داخليًا. يمكنك الوصول إلى هذا الجدول مباشرةً باستخدام الكائن Explorer.table وتشغيل الاستعلامات الأولية وتطبيق عوامل التصفية قبل المعالجة وبعدها، وغير ذلك.
from ultralytics import Explorer
exp = Explorer()
exp.create_embeddings_table()
table = exp.tableإليك بعض الأمثلة على ما يمكنك فعله باستخدام الجدول:
استخراج التضمينات الأولية#
from ultralytics import Explorer
exp = Explorer()
exp.create_embeddings_table()
table = exp.table
embeddings = table.to_pandas()["vector"]
print(embeddings)الاستعلام المتقدم باستخدام عوامل التصفية قبل المعالجة وبعدها#
from ultralytics import Explorer
exp = Explorer(model="yolo11n.pt")
exp.create_embeddings_table()
table = exp.table
# تضمين افتراضي
embedding = [i for i in range(256)]
rs = table.search(embedding).metric("cosine").where("").limit(10)إنشاء فهرس متجهات#
عند استخدام مجموعات بيانات كبيرة، يمكنك أيضًا إنشاء فهرس متجهات مخصص لتسريع الاستعلامات. ويتم ذلك باستخدام الطريقة create_index على جدول LanceDB.
table.create_index(num_partitions=..., num_sub_vectors=...)5. تطبيقات التضمينات#
يمكنك استخدام جدول التضمينات لإجراء مجموعة متنوعة من التحليلات الاستكشافية. إليك بعض الأمثلة:
مؤشر التشابه#
يتضمن Explorer عملية similarity_index:
- تحاول هذه العملية تقدير مدى تشابه كل نقطة بيانات مع بقية مجموعة البيانات.
- وتفعل ذلك من خلال حساب عدد تضمينات الصور التي تقع أقرب من
max_distإلى الصورة الحالية في فضاء التضمينات المُنشأ، مع مراعاةtop_kصورة مشابهة في كل مرة.
تعيد هذه العملية DataFrame من pandas يتضمن الأعمدة التالية:
idx: فهرس الصورة في مجموعة البياناتim_file: مسار ملف الصورةcount: عدد الصور في مجموعة البيانات التي تقع أقرب منmax_distإلى الصورة الحاليةsim_im_files: قائمة بمسارات الصور المشابهة وعددهاcount
بالنسبة إلى مجموعة بيانات ونموذج وmax_dist وtop_k محددة، يُعاد استخدام مؤشر التشابه بعد إنشائه. إذا تغيرت مجموعة بياناتك أو أردت ببساطة إعادة إنشاء مؤشر التشابه، يمكنك تمرير force=True.
from ultralytics import Explorer
exp = Explorer()
exp.create_embeddings_table()
sim_idx = exp.similarity_index()يمكنك استخدام مؤشر التشابه لإنشاء شروط مخصصة لتصفية مجموعة البيانات. على سبيل المثال، يمكنك استبعاد الصور التي لا تشبه أي صورة أخرى في مجموعة البيانات باستخدام الشيفرة التالية:
import numpy as np
sim_count = np.array(sim_idx["count"])
sim_idx["im_file"][sim_count > 30]تصور فضاء التضمينات#
يمكنك أيضًا تصور فضاء التضمينات باستخدام أداة الرسم التي تختارها. إليك مثالًا بسيطًا باستخدام Matplotlib:
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
# تقليل الأبعاد باستخدام PCA إلى 3 مكونات لتصورها ثلاثي الأبعاد
pca = PCA(n_components=3)
reduced_data = pca.fit_transform(embeddings)
# إنشاء مخطط مبعثر ثلاثي الأبعاد باستخدام Matplotlib Axes3D
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d")
# مخطط مبعثر
ax.scatter(reduced_data[:, 0], reduced_data[:, 1], reduced_data[:, 2], alpha=0.5)
ax.set_title("3D Scatter Plot of Reduced 256-Dimensional Data (PCA)")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
ax.set_zlabel("Component 3")
plt.show()ابدأ بإنشاء تقاريرك الخاصة لاستكشاف مجموعات بيانات الرؤية الحاسوبية باستخدام Explorer API. وللاستلهام، اطلع على مثال استكشاف VOC.
تطبيقات مبنية باستخدام Ultralytics Explorer#
جرّب العرض التوضيحي للواجهة الرسومية المعتمد على Explorer API
الأسئلة الشائعة#
صُممت واجهة برمجة تطبيقات Ultralytics Explorer لاستكشاف مجموعات البيانات بشكل شامل. وتتيح للمستخدمين تصفية مجموعات البيانات والبحث فيها باستخدام استعلامات SQL، والبحث عن تشابه المتجهات، والبحث الدلالي. ويمكن لواجهة Python القوية هذه التعامل مع مجموعات البيانات الكبيرة، مما يجعلها مثالية لمختلف مهام الرؤية الحاسوبية باستخدام نماذج Ultralytics.
لتثبيت واجهة برمجة تطبيقات Ultralytics Explorer مع تبعياتها، استخدم الأمر التالي:
pip install "ultralytics[explorer]==8.3.11"سيؤدي ذلك إلى تثبيت جميع المكتبات الخارجية اللازمة لوظائف Explorer API تلقائيًا. لمزيد من تفاصيل الإعداد، راجع قسم التثبيت في وثائقنا.
يمكنك استخدام واجهة برمجة تطبيقات Ultralytics Explorer لإجراء عمليات البحث عن التشابه من خلال إنشاء جدول للتضمينات والاستعلام فيه عن الصور المتشابهة. إليك مثالًا أساسيًا:
from ultralytics import Explorer # إنشاء كائن Explorer explorer = Explorer(data="coco128.yaml", model="yolo11n.pt") explorer.create_embeddings_table() # ابحث عن صور مشابهة لصورة معينة similar_images_df = explorer.get_similar(img="path/to/image.jpg") print(similar_images_df.head())لمزيد من التفاصيل، يُرجى زيارة قسم البحث عن التشابه.
يوفر LanceDB، الذي يستخدمه Ultralytics Explorer في الخلفية، جداول تضمينات قابلة للتوسع ومخزنة على القرص. ويضمن ذلك إمكانية إنشاء التضمينات وإعادة استخدامها مع مجموعات البيانات الكبيرة مثل COCO دون نفاد الذاكرة. ولا تُنشأ هذه الجداول إلا مرة واحدة، ويمكن إعادة استخدامها، مما يعزز كفاءة معالجة البيانات.
تتيح ميزة Ask AI للمستخدمين تصفية مجموعات البيانات باستخدام استعلامات باللغة الطبيعية. وتستفيد هذه الميزة من نماذج اللغة الكبيرة لتحويل هذه الاستعلامات إلى استعلامات SQL في الخلفية. إليك مثال:
from ultralytics import Explorer # إنشاء كائن Explorer explorer = Explorer(data="coco128.yaml", model="yolo11n.pt") explorer.create_embeddings_table() # استعلام بلغة طبيعية query_result = explorer.ask_ai("show me 100 images with exactly one person and 2 dogs. There can be other objects too") print(query_result.head())للاطلاع على مزيد من الأمثلة، راجع قسم Ask AI.