Ultralytics واجهة برمجة تطبيقات المستكشف
مذكرة المجتمع ⚠️
اعتباراً من ultralytics>=8.3.10
, Ultralytics explorer support has been deprecated. But don't worry! You can now access similar and even enhanced functionality through Ultralytics محور, our intuitive no-code platform designed to streamline your workflow. With Ultralytics HUB, you can continue exploring, visualizing, and managing your data effortlessly, all without writing a single line of code. Make sure to check it out and take advantage of its powerful features!🚀
مقدمة
واجهة برمجة تطبيقات Explorer هي Python واجهة برمجة التطبيقات لاستكشاف مجموعات البيانات الخاصة بك. وهو يدعم تصفية مجموعة البيانات الخاصة بك والبحث فيها باستخدام استعلامات SQL والبحث عن تشابه المتجهات والبحث الدلالي.
شاهد: 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)
ملاحظه
Embeddings table for a given dataset and model pair is only created once and reused. These use LanceDB under the hood, which scales on-disk, so you can create and reuse embeddings for large datasets like COCO without running out of memory.
في حالة رغبتك في فرض تحديث جدول التضمينات ، يمكنك المرور 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 صورة مع شخص واحد بالضبط و 2. يمكن أن يكون هناك كائنات أخرى أيضا" وسيقوم بإنشاء الاستعلام داخليا ويعرض لك هذه النتائج. ملاحظة: يعمل هذا باستخدام 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 مستكشف
جرب العرض التوضيحي لواجهة المستخدم الرسومية استنادا إلى واجهة برمجة تطبيقات Explorer
قريباً
- [] دمج تسميات محددة من مجموعات البيانات. مثال - استيراد الكل
person
تسميات من COCO وcar
تسميات من سيتي سكيب - [] قم بإزالة الصور التي تحتوي على مؤشر تشابه أعلى من الحد المحدد
- [] استمرار مجموعات البيانات الجديدة تلقائيا بعد دمج / إزالة الإدخالات
- [] تصورات مجموعة البيانات المتقدمة
الأسئلة المتداولة
فيمَ تُستخدم واجهة برمجة التطبيقات Ultralytics Explorer API؟
The Ultralytics Explorer API is designed for comprehensive dataset exploration. It allows users to filter and search datasets using SQL queries, vector similarity search, and semantic search. This powerful Python API can handle large datasets, making it ideal for various computer vision tasks using Ultralytics models.
كيف يمكنني تثبيت واجهة برمجة التطبيقات Ultralytics Explorer API؟
لتثبيت واجهة برمجة التطبيقات Ultralytics Explorer API مع تبعياتها، استخدم الأمر التالي:
This will automatically install all necessary external libraries for the Explorer API functionality. For additional setup details, refer to the installation section of our documentation.
كيف يمكنني استخدام واجهة برمجة تطبيقات 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())
For more details, please visit the Similarity Search section.
ما هي فوائد استخدام 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())
لمزيد من الأمثلة، راجع قسم اسأل الذكاء الاصطناعي.