واجهة برمجة تطبيقات Ultralytics Explorer
ملاحظة من المجتمع ⚠️
اعتبارًا من ultralytics>=8.3.10
، تم إيقاف دعم Ultralytics Explorer. ولكن لا تقلق! يمكنك الآن الوصول إلى وظائف مماثلة وحتى محسّنة من خلال Ultralytics HUB، منصتنا سهلة الاستخدام بدون تعليمات برمجية والمصممة لتبسيط سير عملك. باستخدام Ultralytics HUB، يمكنك متابعة استكشاف بياناتك وتصورها وإدارتها بسهولة، كل ذلك دون كتابة سطر واحد من التعليمات البرمجية. تأكد من التحقق من ذلك والاستفادة من ميزاته القوية! 🚀
مقدمة
واجهة برمجة تطبيقات المستكشف (Explorer API) هي واجهة برمجة تطبيقات Python لاستكشاف مجموعات البيانات الخاصة بك. وهي تدعم تصفية مجموعات البيانات والبحث فيها باستخدام استعلامات SQL، والبحث عن طريق تشابه المتجهات، والبحث الدلالي.
شاهد: نظرة عامة على واجهة برمجة تطبيقات Ultralytics Explorer
التثبيت
يعتمد Explorer على مكتبات خارجية لبعض وظائفه. يتم تثبيت هذه تلقائيًا عند الاستخدام. لتثبيت هذه التبعيات يدويًا، استخدم الأمر التالي:
pip install ultralytics[explorer]
الاستخدام
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
dataframe = explorer.get_similar(img="path/to/image.jpg")
# Or search for similar images to a given index/indices
dataframe = explorer.get_similar(idx=0)
ملاحظة
يتم إنشاء جدول التضمينات لمجموعة بيانات معينة وزوج نموذج مرة واحدة فقط وإعادة استخدامه. تستخدم هذه LanceDB تحت الغطاء، والتي تتوسع على القرص، بحيث يمكنك إنشاء وإعادة استخدام التضمينات لمجموعات البيانات الكبيرة مثل COCO دون نفاد الذاكرة.
في حال كنت ترغب في فرض تحديث جدول التضمينات، يمكنك تمرير force=True
إلى create_embeddings_table
دالة (method).
يمكنك الوصول مباشرة إلى كائن جدول LanceDB لإجراء تحليل متقدم. تعرف على المزيد حول هذا الموضوع في قسم العمل مع جدول التضمينات
1. البحث عن التشابه
البحث عن الصور المتشابهة هو أسلوب للعثور على صور مماثلة لصورة معينة. وهو يعتمد على فكرة أن الصور المتشابهة سيكون لها تضمينات مماثلة. بمجرد إنشاء جدول التضمينات، يمكنك تشغيل البحث الدلالي بأي من الطرق التالية:
- في فهرس معين أو قائمة فهارس في مجموعة البيانات:
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())
from ultralytics import Explorer
# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
similar = exp.get_similar(idx=1, limit=10)
print(similar.head())
# Search using multiple indices
similar = exp.get_similar(idx=[1, 10], limit=10)
print(similar.head())
رسم صور مماثلة
يمكنك أيضًا رسم الصور المتشابهة باستخدام plot_similar
دالة (method). تأخذ هذه الدالة نفس وسيطات 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()
from ultralytics import Explorer
# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
plt = exp.plot_similar(idx=1, limit=10)
plt.show()
2. اسأل الذكاء الاصطناعي (الاستعلام باللغة الطبيعية)
يتيح لك هذا كتابة الطريقة التي تريد بها تصفية مجموعة البيانات الخاصة بك باستخدام اللغة الطبيعية. ليس عليك أن تكون ماهرًا في كتابة استعلامات SQL. سيقوم مولد الاستعلام المدعوم بالذكاء الاصطناعي الخاص بنا بذلك تلقائيًا تحت الغطاء. على سبيل المثال - يمكنك أن تقول - "أظهر لي 100 صورة لشخص واحد بالضبط وكلبين. يمكن أن تكون هناك كائنات أخرى أيضًا" وسيقوم داخليًا بإنشاء الاستعلام وعرض هذه النتائج لك. ملاحظة: يعمل هذا باستخدام LLMs تحت الغطاء، لذا فإن النتائج احتمالية وقد تخطئ في بعض الأحيان
اسأل الذكاء الاصطناعي
from ultralytics import Explorer
from ultralytics.data.explorer import plot_query_result
# 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()
3. الاستعلام عن SQL
يمكنك تشغيل استعلامات SQL على مجموعة البيانات الخاصة بك باستخدام sql_query
دالة (method). تأخذ هذه الدالة استعلام 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())
رسم نتائج استعلام SQL
يمكنك أيضًا رسم نتائج استعلام SQL باستخدام plot_sql_query
دالة (method). تأخذ هذه الدالة نفس وسيطات 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")
4. العمل مع جدول التضمينات
يمكنك أيضًا العمل مع جدول التضمينات مباشرة. بمجرد إنشاء جدول التضمينات، يمكنك الوصول إليه باستخدام Explorer.table
نصيحة
يعمل المستكشف على 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
# Dummy embedding
embedding = [i for i in range(256)]
rs = table.search(embedding).metric("cosine").where("").limit(10)
إنشاء فهرس متجه
عند استخدام مجموعات بيانات كبيرة، يمكنك أيضًا إنشاء فهرس متجه مخصص للاستعلام بشكل أسرع. يتم ذلك باستخدام create_index
دالة (method) على جدول LanceDB.
table.create_index(num_partitions=..., num_sub_vectors=...)
ابحث عن مزيد من التفاصيل حول أنواع فهرس المتجهات المتوفرة ومعلمات التكوين في وثائق فهرسة LanceDB. في المستقبل، نخطط لدعم إنشاء فهارس متجهة مباشرةً من خلال Explorer API.
5. تطبيقات التضمينات
يمكنك استخدام جدول التضمينات لإجراء مجموعة متنوعة من التحليلات الاستكشافية. فيما يلي بعض الأمثلة:
مؤشر التشابه
يأتي Explorer مع similarity_index
عملية:
- تحاول تقدير مدى تشابه كل نقطة بيانات مع بقية مجموعة البيانات.
- وهي تفعل ذلك عن طريق حساب عدد تضمينات الصور التي تقع أقرب من
max_dist
إلى الصورة الحالية في فضاء التضمين الذي تم إنشاؤه، مع الأخذ في الاعتبارtop_k
صور مماثلة في كل مرة.
إنه يُرجع جدول بيانات 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
# 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()
ابدأ في إنشاء تقارير استكشاف مجموعة بيانات الرؤية الحاسوبية الخاصة بك باستخدام Explorer API. للإلهام، تحقق من مثال استكشاف VOC.
تطبيقات تم إنشاؤها باستخدام Ultralytics Explorer
جرب عرض GUI التوضيحي الخاص بنا بناءً على Explorer API
قريبًا
- [ ] دمج تسميات محددة من مجموعات البيانات. مثال - استيراد الكل
person
ملصقات من COCO وcar
ملصقات من Cityscapes - [ ] إزالة الصور التي لها فهرس تشابه أعلى من الحد المحدد
- [ ] الاحتفاظ تلقائيًا بمجموعات البيانات الجديدة بعد دمج / إزالة الإدخالات
- [ ] تصورات متقدمة لمجموعة البيانات
الأسئلة الشائعة
فيما يستخدم Ultralytics Explorer API؟
تم تصميم Ultralytics Explorer API لاستكشاف شامل لمجموعة البيانات. يسمح للمستخدمين بتصفية مجموعات البيانات والبحث فيها باستخدام استعلامات SQL والبحث عن التشابه المتجه والبحث الدلالي. يمكن لواجهة برمجة تطبيقات python القوية هذه التعامل مع مجموعات البيانات الكبيرة، مما يجعلها مثالية لمهام رؤية الكمبيوتر المختلفة باستخدام نماذج Ultralytics.
كيف يمكنني تثبيت Ultralytics Explorer API؟
لتثبيت Ultralytics Explorer API مع تبعياته، استخدم الأمر التالي:
pip install ultralytics[explorer]
سيؤدي هذا تلقائيًا إلى تثبيت جميع المكتبات الخارجية الضرورية لوظائف Explorer API. للحصول على تفاصيل إعداد إضافية، راجع قسم التثبيت في وثائقنا.
كيف يمكنني استخدام واجهة برمجة التطبيقات Ultralytics Explorer للبحث عن التشابه؟
يمكنك استخدام Ultralytics Explorer API لإجراء عمليات بحث عن التشابه عن طريق إنشاء جدول تضمينات والاستعلام عنه للحصول على صور مماثلة. إليك مثال أساسي:
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())
لمزيد من التفاصيل، يرجى زيارة قسم البحث عن التشابه.
ما هي فوائد استخدام LanceDB مع Ultralytics Explorer؟
يوفر LanceDB، المستخدم ضمن Ultralytics Explorer، جداول تضمين قابلة للتطوير على القرص. يضمن ذلك إمكانية إنشاء وإعادة استخدام التضمينات لمجموعات البيانات الكبيرة مثل COCO دون نفاد الذاكرة. يتم إنشاء هذه الجداول مرة واحدة فقط ويمكن إعادة استخدامها، مما يعزز الكفاءة في معالجة البيانات.
كيف تعمل ميزة Ask AI في Ultralytics Explorer API؟
تتيح ميزة Ask AI للمستخدمين تصفية مجموعات البيانات باستخدام استعلامات اللغة الطبيعية. تستفيد هذه الميزة من نماذج اللغات الكبيرة (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())
لمزيد من الأمثلة، تحقق من قسم Ask AI.