Ultralytics واجهة برمجة تطبيقات المستكشف
مذكرة المجتمع ⚠️
اعتباراً من ultralytics>=8.3.10
، Ultralytics مستكشف الدعم قد تم إهماله. ولكن لا تقلق! يمكنك الآن الوصول إلى وظائف مماثلة بل ومحسنة من خلال Ultralytics هبمنصتنا البديهية الخالية من التعليمات البرمجية والمصممة لتبسيط سير عملك. مع Ultralytics HUB، يمكنك مواصلة استكشاف بياناتك وتصورها وإدارتها دون عناء، كل ذلك دون كتابة سطر واحد من التعليمات البرمجية. تأكد من التحقق من ذلك والاستفادة من ميزاته القوية!
مقدمة
واجهة برمجة تطبيقات Explorer هي واجهة برمجة تطبيقات Python لاستكشاف مجموعات بياناتك. وهي تدعم تصفية مجموعة بياناتك والبحث فيها باستخدام استعلامات SQL، والبحث عن التشابه المتجه والبحث الدلالي.
شاهد: Ultralytics نظرة عامة على واجهة برمجة تطبيقات المستكشف
التركيب
يعتمد المستكشف على مكتبات خارجية لبعض وظائفه. يتم تثبيتها تلقائيًا عند الاستخدام. لتثبيت هذه التبعيات يدويًا، استخدم الأمر التالي:
الاستخدام
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 لإجراء تحليل متقدم. تعرف على المزيد حول ذلك في قسم العمل مع جدول التضمينات
1. البحث عن التشابه
البحث عن التشابه هو تقنية للعثور على صور مشابهة لصورة معينة. يعتمد على فكرة أن الصور المتشابهة سيكون لها تضمينات متشابهة. بمجرد إنشاء جدول التضمينات، يمكنك الحصول على تشغيل البحث الدلالي بأي من الطرق التالية:
- على فهرس معين أو قائمة مؤشرات معينة في مجموعة البيانات:
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
ورسم الصور المتشابهة في شبكة.
تخطيط الصور المتشابهة
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
تخطيط نتائج استعلام SQL
يمكنك أيضًا رسم نتائج استعلام SQL باستخدام الأداة plot_sql_query
طريقة. تأخذ هذه الطريقة نفس الوسيطات التي تأخذها طريقة sql_query
ورسم النتائج في شبكة.
تخطيط نتائج استعلام SQL
4. العمل مع جدول التضمينات
يمكنك أيضًا العمل مع جدول التضمينات مباشرةً. وبمجرد إنشاء جدول التضمينات، يمكنك الوصول إليه باستخدام Explorer.table
نصيحة
يعمل المستكشف على لانس دي بي الجداول داخليًا. يمكنك الوصول إلى هذا الجدول مباشرة، باستخدام Explorer.table
كائن وتشغيل استعلامات أولية، ودفع المرشحات المسبقة واللاحقة، إلخ.
فيما يلي بعض الأمثلة على ما يمكنك فعله بالجدول:
الحصول على تضمينات خام
مثال على ذلك
استعلام متقدم مع مرشحات قبلية وبعدية
مثال على ذلك
إنشاء فهرس المتجهات
عند استخدام مجموعات بيانات كبيرة، يمكنك أيضًا إنشاء فهرس متجه مخصص للاستعلام بشكل أسرع. يتم ذلك باستخدام create_index
على جدول LanceDB.
اعثر على مزيد من التفاصيل حول مؤشرات متجهات النوع المتاحة والمعلمات هنا في المستقبل، سنضيف دعمًا لإنشاء مؤشرات متجهات مباشرةً من واجهة برمجة تطبيقات 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
.
مؤشر التشابه
يمكنك استخدام مؤشر التشابه لإنشاء شروط مخصصة لتصفية مجموعة البيانات. على سبيل المثال، يمكنك تصفية الصور التي لا تتشابه مع أي صورة أخرى في مجموعة البيانات باستخدام الكود التالي:
تصور مساحة التضمين
يمكنك أيضًا تصور مساحة التضمين باستخدام أداة الرسم البياني التي تختارها. على سبيل المثال هنا مثال بسيط باستخدام 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 مع تبعياتها، استخدم الأمر التالي:
سيؤدي ذلك تلقائيًا إلى تثبيت جميع المكتبات الخارجية الضرورية لوظيفة واجهة برمجة التطبيقات الخاصة بالمستكشف. لمزيد من تفاصيل الإعداد الإضافية، راجع قسم التثبيت في وثائقنا.
كيف يمكنني استخدام واجهة برمجة تطبيقات 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())
لمزيد من الأمثلة، راجع قسم اسأل الذكاء الاصطناعي.