مثال على استكشاف المركبات العضوية المتطايرة¶
中文 | 한국어 | 日本語 | Русский | Deutsch | Français | Español | Português | हिन्दी | العربية
مرحبا بكم في Ultralytics مستكشف API دفتة! يعمل دفتر الملاحظات هذا كنقطة انطلاق لاستكشاف الموارد المختلفة المتاحة لمساعدتك على البدء في استخدام Ultralytics لاستكشاف مجموعات البيانات الخاصة بك باستخدام قوة البحث الدلالي. يمكنك الأدوات المساعدة خارج الصندوق التي تسمح لك بفحص أنواع معينة من التسميات باستخدام البحث المتجه أو حتى استعلامات SQL.
نأمل أن تساعدك الموارد الموجودة في دفتر الملاحظات هذا في تحقيق أقصى استفادة من Ultralytics. يرجى تصفح محرر مستندات Explorer للحصول على التفاصيل ، وإثارة مشكلة على GitHub للحصول على الدعم ، والانضمام إلى مجتمع Discord الخاص بنا للأسئلة والمناقشات!
حاول yolo explorer
مدعوم من واجهة برمجة تطبيقات Exlorer
بساطه pip install ultralytics
وتشغيل yolo explorer
في جهازك الطرفي لتشغيل استعلامات مخصصة والبحث الدلالي على مجموعات البيانات الخاصة بك داخل متصفحك مباشرة!
٪ تثبيت نقطة ultralytics[مستكشف] استيراد OpenAI ultralytics ultralytics.الشيكات()
من ultralyticsاستيراد إكسبلورر
بحث التشابه¶
استفد من قوة البحث عن تشابه المتجهات للعثور على نقاط البيانات المتشابهة في مجموعة البيانات الخاصة بك جنبا إلى جنب مع المسافة في مساحة التضمين. ما عليك سوى إنشاء جدول تضمين لزوج نموذج مجموعة البيانات المحدد. هناك حاجة إليها مرة واحدة فقط ويتم إعادة استخدامها تلقائيا.
exp = مستكشف ("VOC.yaml" ، نموذج ="yolov8n.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
إكسب.plot_similar (idx = 6500 ، الحد = 20) # exp.plot_similar (idx = [100,101] ، الحد = 10) # يمكن أيضا تمرير قائمة idxs أو imgs
إكسب.plot_similar(img="https://ultralytics.com / صور / bus.jpg" ، الحد = 10 ، التسميات = خطأ) # يمكن أيضا تمرير أي صور خارجية
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)
# مؤامرة من ultralyticsplot_query_result استيراد .data.explorer من استيراد PIL صورةplt = plot_query_result(exp. ask_ai("أرني 10 صور تحتوي على 2 أشخاص بالضبط"))صورة.فروم صفيف (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 استيراد مضمن numpy ك npمن sklearn.decomposition استيراد PCAاستيراد matplotlib.pyplot كما pltمن استيراد mpl_toolkits.mplot3d Axes3D # تقليل الأبعاد باستخدام PCA إلى 3 مكونات للتصور في3D PCA = PCA (n_ المكونات = 3) reduced_data = PCA.fit_transform (التضمين) # إنشاء مؤامرة مبعثرة ثلاثية الأبعاد باستخدام Axes3D من Matplotlibfig = plt.الشكل (حجم الشكل = (8 ، 6)) الفأس = التين.add_subplot(111، الإسقاط = '3d')# فأس مؤامرة مبعثرة.مبعثر (reduced_data [: ، 0] ، reduced_data [: ، 1] ، reduced_data [: ، 2] ، ألفا = 0.5) فأس.set_title ('مخطط مبعثر 3D لبيانات 256 الأبعاد المخفضة (PCA)')ax.set_xlabel ('المكون 1') الفأس.set_ylabel ('المكون 2') الفأس.set_zlabel ("المكون 3") plt.عرض()
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 ورسم صور مشابهة لها.
استيراد numpy ك npsim_count = np.صفيف (sim_idx ["عد"])sim_idx['im_file'] [sim_count > 30]
يجب أن ترى شيئا كهذا
إكسب.plot_similar(idx=[7146, 14035]) # استخدام متوسط تضمينات 2 صور