Meet YOLO26: next-gen vision AI.

Link to this sectionواجهة برمجة تطبيقات Ultralytics Explorer#

ملاحظة للمجتمع ⚠️

بدءاً من الإصدار ultralytics>=8.3.12، تمت إزالة Ultralytics Explorer. لاستخدام Explorer، قم بالتثبيت عبر الأمر pip install ultralytics==8.3.11. تتوفر ميزات مماثلة (وموسعة) لاستكشاف مجموعات البيانات في منصة Ultralytics.

Link to this sectionمقدمة#

Open In Colab واجهة برمجة تطبيقات Explorer هي واجهة برمجة تطبيقات Python لاستكشاف مجموعات البيانات الخاصة بك. وهي تدعم تصفية والبحث في مجموعة البيانات الخاصة بك باستخدام استعلامات SQL، والبحث عن التشابه المتجهي، والبحث الدلالي.



Watch: Ultralytics Explorer API Overview

Link to this sectionالتثبيت#

يعتمد Explorer على مكتبات خارجية لبعض وظائفه. يتم تثبيت هذه المكتبات تلقائياً عند استخدام Explorer. لتثبيت هذه التبعيات يدوياً، استخدم الأمر التالي:

pip install ultralytics[explorer]

Link to this sectionالاستخدام#

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")

# Create embeddings for your dataset
explorer.create_embeddings_table()

# Search for similar images to a given image/images
df = explorer.get_similar(img="path/to/image.jpg")

# Or search for similar images to a given index/indices
df = explorer.get_similar(idx=0)
ملاحظة

يتم إنشاء جدول Embeddings لزوج مجموعة البيانات والنموذج المحدد مرة واحدة فقط ثم يُعاد استخدامه. تستخدم هذه الجداول LanceDB في الخلفية، والذي يتميز بالقدرة على التوسع على القرص، بحيث يمكنك إنشاء وإعادة استخدام التضمينات لمجموعات البيانات الكبيرة مثل COCO دون استنفاد الذاكرة.

في حال كنت ترغب في فرض تحديث جدول التضمينات، يمكنك تمرير force=True إلى أسلوب create_embeddings_table.

يمكنك الوصول مباشرة إلى كائن جدول LanceDB لإجراء تحليل متقدم. اعرف المزيد حول ذلك في قسم العمل مع جدول التضمينات

Link to this section1. البحث عن التشابه#

البحث عن التشابه هو تقنية للعثور على صور مشابهة لصورة معينة. يعتمد على فكرة أن الصور المتشابهة ستكون لها تضمينات متشابهة. بمجرد بناء جدول التضمينات، يمكنك تشغيل البحث الدلالي بأي من الطرق التالية:

  • بالنسبة لمؤشر معين أو قائمة مؤشرات في مجموعة البيانات: exp.get_similar(idx=[1,10], limit=10)
  • بالنسبة لأي صورة أو قائمة صور ليست في مجموعة البيانات: exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)

في حالة وجود مدخلات متعددة، يتم استخدام مجمع تضميناتها.

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

البحث الدلالي
from ultralytics import Explorer

# create an Explorer object
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())

# Search using multiple indices
similar = exp.get_similar(
    img=["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/bus.jpg"],
    limit=10,
)
print(similar.head())

Link to this sectionرسم الصور المتشابهة#

يمكنك أيضاً رسم الصور المتشابهة باستخدام أسلوب plot_similar. يأخذ هذا الأسلوب نفس وسيطات get_similar ويرسم الصور المتشابهة في شبكة.

رسم الصور المتشابهة
from ultralytics import Explorer

# create an Explorer object
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()

Link to this section2. اسأل الذكاء الاصطناعي (الاستعلام باللغة الطبيعية)#

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

اسأل الذكاء الاصطناعي
from ultralytics.data.explorer import plot_query_result

from ultralytics import Explorer

# create an Explorer object
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())

# plot the results
plt = plot_query_result(df)
plt.show()

Link to this section3. استعلام SQL#

يمكنك تشغيل استعلامات SQL على مجموعة البيانات الخاصة بك باستخدام أسلوب sql_query. يأخذ هذا الأسلوب استعلام SQL كمدخل ويعيد إطار بيانات pandas مع النتائج.

استعلام SQL
from ultralytics import Explorer

# create an Explorer object
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())

Link to this sectionرسم نتائج استعلام SQL#

يمكنك أيضاً رسم نتائج استعلام SQL باستخدام أسلوب plot_sql_query. يأخذ هذا الأسلوب نفس وسيطات sql_query ويرسم النتائج في شبكة.

رسم نتائج استعلام SQL
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()

# plot the SQL Query
exp.plot_sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%' LIMIT 10")

Link to this section4. العمل مع جدول التضمينات#

يمكنك أيضاً العمل مع جدول التضمينات مباشرة. بمجرد إنشاء جدول التضمينات، يمكنك الوصول إليه باستخدام Explorer.table

نصيحة

يعمل Explorer على جداول LanceDB داخلياً. يمكنك الوصول إلى هذا الجدول مباشرة، باستخدام كائن Explorer.table وتشغيل استعلامات أولية، وتطبيق فلاتر سابقة ولاحقة، وما إلى ذلك.

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

إليك بعض الأمثلة على ما يمكنك القيام به مع الجدول:

Link to this sectionالحصول على التضمينات الأولية#

مثال
from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

embeddings = table.to_pandas()["vector"]
print(embeddings)

Link to this sectionالاستعلام المتقدم مع فلاتر سابقة ولاحقة#

مثال
from ultralytics import Explorer

exp = Explorer(model="yolo11n.pt")
exp.create_embeddings_table()
table = exp.table

# Dummy embedding
embedding = [i for i in range(256)]
rs = table.search(embedding).metric("cosine").where("").limit(10)

Link to this sectionإنشاء فهرس متجهي#

عند استخدام مجموعات بيانات كبيرة، يمكنك أيضاً إنشاء فهرس متجهي مخصص لاستعلام أسرع. يتم ذلك باستخدام أسلوب create_index على جدول LanceDB.

table.create_index(num_partitions=..., num_sub_vectors=...)

Link to this section5. تطبيقات التضمينات#

يمكنك استخدام جدول التضمينات لإجراء مجموعة متنوعة من التحليلات الاستكشافية. إليك بعض الأمثلة:

Link to this sectionفهرس التشابه#

يأتي Explorer مع عملية similarity_index:

  • تحاول هذه العملية تقدير مدى تشابه كل نقطة بيانات مع بقية مجموعة البيانات.
  • تقوم بذلك عن طريق حساب عدد تضمينات الصور التي تقع أقرب من max_dist إلى الصورة الحالية في فضاء التضمين المولد، مع مراعاة top_k من الصور المتشابهة في كل مرة.

تعيد إطار بيانات pandas مع الأعمدة التالية:

  • idx: مؤشر الصورة في مجموعة البيانات
  • im_file: مسار ملف الصورة
  • count: عدد الصور في مجموعة البيانات التي تقع أقرب من max_dist إلى الصورة الحالية
  • sim_im_files: قائمة مسارات الصور الـ count المتشابهة
نصيحة

For a given dataset, model, max_dist & top_k the similarity index once generated will be reused. In case, your dataset has changed, or you simply need to regenerate the similarity index, you can pass 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]

Link to this sectionتصور فضاء التضمين#

يمكنك أيضاً تصور فضاء التضمين باستخدام أداة الرسم التي تختارها. على سبيل المثال، إليك مثال بسيط باستخدام Matplotlib:

import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

# Reduce dimensions using PCA to 3 components for visualization in 3D
pca = PCA(n_components=3)
reduced_data = pca.fit_transform(embeddings)

# Create a 3D scatter plot using Matplotlib Axes3D
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d")

# Scatter plot
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()

ابدأ في إنشاء تقارير استكشاف مجموعة بيانات CV الخاصة بك باستخدام واجهة برمجة تطبيقات Explorer. للإلهام، تحقق من مثال استكشاف VOC.

Link to this sectionتطبيقات تم بناؤها باستخدام Ultralytics Explorer#

جرب عرض واجهة المستخدم الرسومية (GUI Demo) القائم على واجهة برمجة تطبيقات Explorer

Link to this sectionالأسئلة الشائعة#

Link to this sectionفي ماذا تُستخدم واجهة برمجة تطبيقات Ultralytics Explorer؟#

صُممت واجهة برمجة تطبيقات Ultralytics Explorer لاستكشاف شامل لمجموعات البيانات. وهي تتيح للمستخدمين تصفية والبحث في مجموعات البيانات باستخدام استعلامات SQL، والبحث عن التشابه المتجهي، والبحث الدلالي. يمكن لواجهة برمجة تطبيقات Python القوية هذه التعامل مع مجموعات البيانات الكبيرة، مما يجعلها مثالية لمهام رؤية الحاسوب المختلفة باستخدام نماذج Ultralytics.

Link to this sectionكيف أقوم بتثبيت واجهة برمجة تطبيقات Ultralytics Explorer؟#

لتثبيت واجهة برمجة تطبيقات Ultralytics Explorer مع تبعياتها، استخدم الأمر التالي:

pip install ultralytics[explorer]

سيؤدي هذا إلى تثبيت جميع المكتبات الخارجية اللازمة لوظائف واجهة برمجة تطبيقات Explorer تلقائياً. لمزيد من تفاصيل الإعداد، ارجع إلى قسم التثبيت في وثائقنا.

Link to this sectionكيف يمكنني استخدام واجهة برمجة تطبيقات Ultralytics Explorer للبحث عن التشابه؟#

يمكنك استخدام واجهة برمجة تطبيقات Ultralytics Explorer لإجراء عمليات بحث عن التشابه عن طريق إنشاء جدول تضمينات والاستعلام عنه للعثور على صور مشابهة. إليك مثال أساسي:

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
explorer.create_embeddings_table()

# Search for similar images to a given image
similar_images_df = explorer.get_similar(img="path/to/image.jpg")
print(similar_images_df.head())

لمزيد من التفاصيل، يرجى زيارة قسم البحث عن التشابه.

Link to this sectionما هي فوائد استخدام LanceDB مع Ultralytics Explorer؟#

يوفر LanceDB، الذي يُستخدم في الخلفية بواسطة Ultralytics Explorer، جداول تضمينات قابلة للتوسع على القرص. وهذا يضمن قدرتك على إنشاء وإعادة استخدام التضمينات لمجموعات البيانات الكبيرة مثل COCO دون استنفاد الذاكرة. يتم إنشاء هذه الجداول مرة واحدة فقط ويمكن إعادة استخدامها، مما يعزز الكفاءة في معالجة البيانات.

Link to this sectionكيف تعمل ميزة "اسأل الذكاء الاصطناعي" في واجهة برمجة تطبيقات Ultralytics Explorer؟#

تتيح ميزة "اسأل الذكاء الاصطناعي" للمستخدمين تصفية مجموعات البيانات باستخدام استعلامات اللغة الطبيعية. تستفيد هذه الميزة من النماذج اللغوية الكبيرة (LLMs) لتحويل هذه الاستعلامات إلى استعلامات SQL في الخلفية. إليك مثال:

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
explorer.create_embeddings_table()

# Query with natural language
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())

لمزيد من الأمثلة، تحقق من قسم اسأل الذكاء الاصطناعي.

التعليقات