مثال على استكشاف المركبات العضوية المتطايرة¶
中文 | 한국어 | 日本語 | Русский | Deutsch | Français | Español | Português | Türkçe | Tiếng Việt | العربية
مرحبا بكم في Ultralytics مستكشف API دفتة! يعمل دفتر الملاحظات هذا كنقطة انطلاق لاستكشاف الموارد المختلفة المتاحة لمساعدتك على البدء في استخدام Ultralytics لاستكشاف مجموعات البيانات الخاصة بك باستخدام قوة البحث الدلالي. يمكنك الأدوات المساعدة خارج الصندوق التي تسمح لك بفحص أنواع معينة من التسميات باستخدام البحث المتجه أو حتى استعلامات SQL.
نأمل أن تساعدك الموارد الموجودة في دفتر الملاحظات هذا في تحقيق أقصى استفادة من Ultralytics. يرجى تصفح محرر مستندات Explorer للحصول على التفاصيل ، وإثارة مشكلة على GitHub للحصول على الدعم ، والانضمام إلى مجتمع Discord الخاص بنا للأسئلة والمناقشات!
حاول yolo explorer
مدعوم من واجهة برمجة تطبيقات Exlorer
بساطه pip install ultralytics
وتشغيل yolo explorer
في جهازك الطرفي لتشغيل استعلامات مخصصة والبحث الدلالي على مجموعات البيانات الخاصة بك داخل متصفحك مباشرة!
%pip install ultralytics[explorer] openai
import ultralytics
ultralytics.checks()
من ultralyticsاستيراد إكسبلورر
بحث التشابه¶
استفد من قوة البحث عن تشابه المتجهات للعثور على نقاط البيانات المتشابهة في مجموعة البيانات الخاصة بك جنبا إلى جنب مع المسافة في مساحة التضمين. ما عليك سوى إنشاء جدول تضمين لزوج نموذج مجموعة البيانات المحدد. هناك حاجة إليها مرة واحدة فقط ويتم إعادة استخدامها تلقائيا.
exp = Explorer("VOC.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
بعد إنشاء جدول التضمينات ، يمكنك تشغيل البحث الدلالي بأي من الطرق التالية:
- على فهرس معين / قائمة من المؤشرات في مجموعة البيانات مثل -
exp.get_similar(idx=[1,10], limit=10)
- على أي صورة / قائمة صور ليست في مجموعة البيانات -
exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)
في حالة المدخلات المتعددة ، يتم استخدام تجميع عمليات التضمين الخاصة بهم.
يمكنك الحصول على إطار بيانات الباندا مع limit
عدد نقاط البيانات الأكثر تشابها مع الإدخال ، جنبا إلى جنب مع المسافة في مساحة التضمين. يمكنك استخدام مجموعة البيانات هذه لإجراء مزيد من التصفية
مماثل = إكسب.get_similar (idx = 1 ، الحد = 10) متشابه.رأس ()
يمكنك أيضا رسم العينات المماثلة مباشرة باستخدام plot_similar
util
exp.plot_similar(idx=6500, limit=20)
# exp.plot_similar(idx=[100,101], limit=10) # Can also pass list of idxs or imgs
exp.plot_similar(
img="https://ultralytics.com/images/bus.jpg", limit=10, labels=False
) # Can also pass any external images
2. اسأل الذكاء الاصطناعي: البحث أو التصفية باستخدام اللغة الطبيعية¶
يمكنك مطالبة كائن Explorer بنوع نقاط البيانات التي تريد رؤيتها وسيحاول إرجاع إطار بيانات مع تلك. نظرا لأنه مدعوم من LLMs ، فإنه لا يحصل عليه دائما بشكل صحيح. في هذه الحالة ، سترجع بلا.
df = إكسب.ask_ai("أرني صورا تحتوي على أكثر من 10 كائنات مع 2 أشخاص على الأقل")df.رئيس(5)
لرسم هذه النتائج يمكنك استخدامها plot_query_result
util
مثل:
plt = plot_query_result(exp.ask_ai("show me 10 images containing exactly 2 persons"))
Image.fromarray(plt)
# plot
from PIL import Image
from ultralytics.data.explorer import plot_query_result
plt = plot_query_result(exp.ask_ai("show me 10 images containing exactly 2 persons"))
Image.fromarray(plt)
3. قم بتشغيل استعلامات SQL على مجموعة البيانات الخاصة بك! ¶
في بعض الأحيان قد ترغب في التحقيق في نوع معين من الإدخالات في مجموعة البيانات الخاصة بك. لهذا Explorer يسمح لك بتنفيذ استعلامات SQL. يقبل أيا من التنسيقات:
- ستحدد طلبات البحث التي تبدأ ب "WHERE" جميع الأعمدة تلقائيا. يمكن اعتبار هذا بمثابة استعلام مختصر
- يمكنك أيضا كتابة استعلامات كاملة حيث يمكنك تحديد الأعمدة التي تريد تحديدها
يمكن استخدام هذا للتحقق من أداء النموذج ونقاط بيانات محددة. على سبيل المثال:
- لنفترض أن نموذجك يكافح على الصور التي تحتوي على بشر. يمكنك كتابة استعلام مثل هذا لتحديد النقاط التي تحتوي على 2 أشخاص على الأقل واحد على الأقل.
يمكنك دمج استعلام SQL والبحث الدلالي للتصفية وصولا إلى نوع معين من النتائج
الجدول = exp.sql_query ("حيث التسميات مثل" ٪ شخص ، شخص٪ "وتسميات مثل" ٪د og٪ "حد 10") الجدول
تماما مثل البحث عن التشابه ، يمكنك أيضا الحصول على أداة لرسم استعلامات sql مباشرة باستخدام exp.plot_sql_query
إكسب.plot_sql_query("حيث التسميات مثل" ٪ شخص ، شخص٪ "وتسميات مثل" ٪d og٪ "LIMIT 10" ، التسميات = صحيح)
3. العمل مع جدول التضمين (متقدم) ¶
يعمل المستكشف على لانس دي بي الجداول داخليا. يمكنك الوصول إلى هذا الجدول مباشرة ، باستخدام Explorer.table
كائن وتشغيل الاستعلامات الأولية ، والضغط لأسفل على المرشحات السابقة واللاحقة ، وما إلى ذلك.
الجدول = exp.طاولة الجدول. مخطط
تشغيل الاستعلامات الأولية¶
البحث المتجه يبحث عن أقرب المتجهات من قاعدة البيانات. في نظام التوصية أو محرك البحث ، يمكنك العثور على منتجات مماثلة من تلك التي بحثت عنها. في LLM وتطبيقات الذكاء الاصطناعي الأخرى ، يمكن تقديم كل نقطة بيانات من خلال التضمينات التي تم إنشاؤها من بعض الطرز ، فهي ترجع الميزات الأكثر صلة.
البحث في الفضاء المتجه عالي الأبعاد ، هو العثور على K-Nearest-Neighbors (KNN) لمتجه الاستعلام.
متري في LanceDB ، المقياس هو الطريقة لوصف المسافة بين زوج من المتجهات. حاليا ، يدعم المقاييس التالية:
- L2
- جيب التمام
- نقطة يستخدم بحث التشابه في Explorer L2 افتراضيا. يمكنك تشغيل الاستعلامات على الجداول مباشرة ، أو استخدام تنسيق lance لإنشاء أدوات مساعدة مخصصة لإدارة مجموعات البيانات. مزيد من التفاصيل حول عمليات جدول LanceDB المتاحة في المستندات
dummy_img_embedding = [i ل i في النطاق (256)] الجدول.البحث (dummy_img_embedding).الحد(5).to_pandas()
التحويل البيني إلى تنسيقات البيانات الشائعة¶
df = الجدول.to_pandas()
pa_table = جدول.to_arrow()
العمل مع التضمينات¶
يمكنك الوصول إلى التضمين الخام من جدول lancedb وتحليله. يتم تخزين تضمينات الصور في عمود vector
استيراد numpy كتضمينات np = جدول.to_pandas()["ناقل"].tolist () التضمين = np.صفيف (تضمين)
مخطط مبعثر¶
تتمثل إحدى الخطوات الأولية في تحليل عمليات التضمين في رسمها في مساحة 2D عبر تقليل الأبعاد. لنجرب مثالا
!نقطة تثبيت SCIKIT-تعلم --Q
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
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's 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()
4. مؤشر التشابه¶
فيما يلي مثال بسيط لعملية مدعومة بجدول التضمين. إكسبلورر يأتي مع similarity_index
عملية-
- يحاول تقدير مدى تشابه كل نقطة بيانات مع بقية مجموعة البيانات.
- يقوم بذلك عن طريق حساب عدد عمليات تضمين الصور التي تقع أقرب من
max_dist
إلى الصورة الحالية في مساحة التضمين التي تم إنشاؤها ، مع الأخذ في الاعتبارtop_k
صور مماثلة في وقت واحد.
بالنسبة لمجموعة بيانات معينة ، نموذج ، max_dist
& top_k
سيتم إعادة استخدام مؤشر التشابه بمجرد إنشائه. في حالة تغيير مجموعة البيانات الخاصة بك ، أو تحتاج ببساطة إلى إعادة إنشاء مؤشر التشابه ، يمكنك المرور force=True
.
على غرار البحث المتجه و SQL ، يأتي هذا أيضا مع أداة لرسمه مباشرة. لنلق نظرة على المؤامرة أولا
إكسب.plot_similarity_index(max_dist=0.2، top_k=0.01)
الآن دعونا نلقي نظرة على إخراج العملية
استيراد numpy ك npsim_idx = exp.similarity_index (max_dist = 0.2 ، top_k = 0.01 ، القوة = خطأ)
sim_idx
دعنا ننشئ استعلاما لمعرفة نقاط البيانات التي لها عدد تشابه يزيد عن 30 ورسم صور مشابهة لها.
import numpy as np
sim_count = np.array(sim_idx["count"])
sim_idx["im_file"][sim_count > 30]
يجب أن ترى شيئا كهذا
exp.plot_similar(idx=[7146, 14035]) # Using avg embeddings of 2 images