Link to this sectionواجهة برمجة تطبيقات Ultralytics Explorer#
بدءاً من الإصدار ultralytics>=8.3.12، تمت إزالة Ultralytics Explorer. لاستخدام Explorer، قم بالتثبيت عبر الأمر pip install ultralytics==8.3.11. تتوفر ميزات مماثلة (وموسعة) لاستكشاف مجموعات البيانات في منصة Ultralytics.
Link to this sectionمقدمة#
واجهة برمجة تطبيقات 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 مع النتائج.
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 ويرسم النتائج في شبكة.
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())لمزيد من الأمثلة، تحقق من قسم اسأل الذكاء الاصطناعي.