تخطي إلى المحتوى

Ultralytics واجهة برمجة تطبيقات المستكشف

مذكرة المجتمع ⚠️

اعتباراً من ultralytics>=8.3.10، Ultralytics مستكشف الدعم قد تم إهماله. ولكن لا تقلق! يمكنك الآن الوصول إلى وظائف مماثلة بل ومحسنة من خلال Ultralytics هبمنصتنا البديهية الخالية من التعليمات البرمجية والمصممة لتبسيط سير عملك. مع Ultralytics HUB، يمكنك مواصلة استكشاف بياناتك وتصورها وإدارتها دون عناء، كل ذلك دون كتابة سطر واحد من التعليمات البرمجية. تأكد من التحقق من ذلك والاستفادة من ميزاته القوية!

مقدمة

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



شاهد: Ultralytics نظرة عامة على واجهة برمجة تطبيقات المستكشف

التركيب

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

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 الطريقة.

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

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

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

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

يمكنك الحصول على إطار بيانات بانداس مع 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 طريقة. تأخذ هذه الطريقة نفس الوسيطات التي تأخذها طريقة 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 طريقة. يأخذ هذا الأسلوب استعلام SQL كمدخلات ويعيد إطار بيانات بانداس مع النتائج.

استعلام 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 طريقة. تأخذ هذه الطريقة نفس الوسيطات التي تأخذها طريقة 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

نصيحة

يعمل المستكشف على لانس دي بي الجداول داخليًا. يمكنك الوصول إلى هذا الجدول مباشرة، باستخدام 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 على جدول LanceDB.

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

اعثر على مزيد من التفاصيل حول مؤشرات متجهات النوع المتاحة والمعلمات هنا في المستقبل، سنضيف دعمًا لإنشاء مؤشرات متجهات مباشرةً من واجهة برمجة تطبيقات Explorer API.

5. تطبيقات التضمينات

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

مؤشر التشابه

يأتي المستكشف مزودًا بـ similarity_index العملية:

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

يُرجع إطار بيانات بانداس مع الأعمدة التالية:

  • 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. للإلهام، اطلع على

التطبيقات المبنية باستخدام Ultralytics إكسبلورر

جرب العرض التوضيحي لواجهة المستخدم الرسومية (GUI) القائم على واجهة برمجة التطبيقات (API) للمستكشف

قريباً

  • [] دمج تسميات محددة من مجموعات البيانات. مثال - استيراد الكل person ملصقات من COCO و car ملصقات من مناظر المدينة
  • [] إزالة الصور التي تحتوي على مؤشر تشابه أعلى من العتبة المحددة
  • [] استمرار مجموعات البيانات الجديدة تلقائيًا بعد دمج/إزالة الإدخالات
  • [] تصورات مجموعة البيانات المتقدمة

الأسئلة الشائعة

فيمَ تُستخدم واجهة برمجة التطبيقات Ultralytics Explorer API؟

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

كيف يمكنني تثبيت واجهة برمجة التطبيقات Ultralytics Explorer API؟

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

pip install 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())

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

ما هي فوائد استخدام LanceDB مع Ultralytics Explorer؟

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

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

تتيح ميزة Ask AI للمستخدمين تصفية مجموعات البيانات باستخدام استعلامات اللغة الطبيعية. تستفيد هذه الميزة من استعلامات اللغة الطبيعية لتحويل هذه الاستعلامات إلى استعلامات 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())

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

📅 تم الإنشاء منذ 11 شهرًا ✏️ تم التحديث منذ 1 شهر

التعليقات