انتقل إلى المحتوى

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

مقدمة

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



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

تركيب

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

pip install ultralytics[explorer]

استخدام

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolov8n.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="yolov8n.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="yolov8n.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="yolov8n.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="yolov8n.pt")
exp.create_embeddings_table()

plt = exp.plot_similar(idx=1, limit=10)
plt.show()

2. اسأل الذكاء الاصطناعي (الاستعلام باللغة الطبيعية)

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

اسأل الذكاء الاصطناعي

from ultralytics import Explorer
from ultralytics.data.explorer import plot_query_result

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.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="yolov8n.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="yolov8n.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="yolov8n.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 مستكشف

جرب العرض التوضيحي لواجهة المستخدم الرسومية استنادا إلى واجهة برمجة تطبيقات Explorer

قريباً

  • [] دمج تسميات محددة من مجموعات البيانات. مثال - استيراد الكل 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="yolov8n.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="yolov8n.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())

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



تم الإنشاء 2024-01-07-2024، تم التحديث 2024-07-04
المؤلفون: جلين-جوتشر (12)، 0xSynapse (1)، RizwanMunawar (2)، AyushExel (2)

التعليقات