دليل مَهمّة رصد العناصر

قطة وكلب تم تمييزهما باستخدام مربّعات حدود تم تصنيفها بشكل صحيح

تتيح لك مهمة "كاشف الأجسام" من MediaPipe رصد توفّر فئات متعددة من الأجسام وموقعها الجغرافي في الصور أو الفيديوهات. على سبيل المثال، يمكن لميزة رصد الأجسام تحديد موقع الكلاب في الصورة. تعمل هذه المهمة على بيانات الصور باستخدام نموذج تعلُّم الآلة، حيث تقبل بيانات ثابتة أو بثًا متواصلًا للفيديو كمدخل وتُخرج قائمة بنتائج رصدها. تمثّل كل نتيجة رصد عنصرًا يظهر في الصورة أو الفيديو.

ننصحك بتجربة الميزة.

البدء

ابدأ استخدام هذه المهمة باتّباع أحد أدلة التنفيذ التالية ل المنصة التي تعمل عليها:

ترشدك هذه الأدلة الخاصة بالنظام الأساسي إلى تنفيذ أساسي لهذه ال tâche، بما في ذلك نموذج مقترَح ومثال على الرمز البرمجي مع خيارات الإعداد المقترَحة.

تفاصيل المهمة

يصف هذا القسم إمكانات هذه المهمة ومدخلاتها ومخارجها.

الميزات

  • معالجة الصور المُدخلة: تشمل المعالجة تدوير الصور وتغيير حجمها وتسويتها وتحويل مساحة الألوان.
  • لغة خريطة التصنيف: يمكنك ضبط اللغة المستخدَمة للأسماء المعروضة.
  • الحدّ الأدنى للنتيجة: فلترة النتائج استنادًا إلى نتائج التوقّعات
  • اكتشاف أهم k رقم: فلترة نتائج رصد الأرقام
  • تصنيف القائمة المسموح بها وقائمة الحظر: حدِّد الفئات التي تم رصدها.
مدخلات المهام نتائج المهام
تقبل واجهة برمجة التطبيقات Object Detector API إدخال أحد أنواع البيانات التالية:
  • الصور الثابتة
  • إطارات الفيديو التي تم فك ترميزها
  • خلاصة فيديو مباشر
تُخرج Object Detector API النتائج التالية للأجسام التي تم رصدها:
  • فئة العنصر
  • نتيجة الاحتمالية
  • إحداثيات مربّع الحدود

خيارات الإعدادات

تتضمّن هذه المهمة خيارات الضبط التالية:

اسم الخيار الوصف نطاق القيمة القيمة التلقائية
running_mode لضبط وضع التشغيل للمهمة هناك ثلاثة أوضاع:

IMAGE: وضع الإدخالات باستخدام صورة واحدة.

‫VIDEO: وضع الإطارات التي تم فك ترميزها في الفيديو

LIVE_STREAM: وضع البث المباشر لبيانات الإدخال ، مثل بيانات الكاميرا في هذا الوضع، يجب استدعاء resultListener لإعداد مستمع لتلقّي النتائج بشكل غير متزامن.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
display_names لضبط لغة التصنيفات لاستخدامها في الأسماء المعروضة المقدَّمة في البيانات الوصفية لنموذج المهمة، في حال توفّرها. القيمة التلقائية هي en لعبارة English. يمكنك إضافة تصنيفات مترجَمة إلى البيانات الوصفية لنموذج مخصّص باستخدام واجهة برمجة التطبيقات TensorFlow Lite Metadata Writer API. رمز اللغة en
max_results تُستخدَم لضبط الحد الأقصى الاختياري لعدد نتائج الكشف التي تحقّق أعلى الدرجات والتي تريد عرضها. أي أرقام موجبة -1 (يتم عرض جميع النتائج)
score_threshold تُستخدَم لضبط الحدّ الأدنى لنتيجة التوقّع الذي يتجاوز الحدّ الأدنى المقدَّم في البيانات الوصفية للنموذج (إن توفّرت). ويتم رفض النتائج التي تقلّ عن هذه القيمة. أيّ عائمة لم يتم الضبط
category_allowlist لضبط القائمة الاختيارية لأسماء الفئات المسموح بها. إذا لم تكن فارغة، سيتم فلترة نتائج الكشف التي لا يتضمّن اسم فئتها هذه المجموعة. ويتم تجاهل أسماء الفئات المكرّرة أو غير المعروفة. هذا الخيار غير متوافق مع الخيار category_denylist، ويؤدي استخدام كلا الخيارَين إلى حدوث خطأ. أي سلاسل لم يتم الضبط
category_denylist لضبط القائمة الاختيارية لأسماء الفئات غير المسموح بها. إذا كانت القيمة غير فارغة، سيتم فلترة نتائج الكشف التي يكون اسم فئتها في هذه المجموعة. ويتم تجاهل أسماء الفئات المكرّرة أو غير المعروفة. هذا الخيار متناقض مع الخيار category_allowlist، ويؤدي استخدام كليهما إلى حدوث خطأ. أي سلاسل لم يتم الضبط

النماذج

تتطلّب واجهة برمجة التطبيقات Object Detector API تنزيل نموذج رصد الأجسام و حفظه في دليل مشروعك. إذا لم يكن لديك نموذج، ابدأ باستخدام النموذج التلقائي المقترَح. تُجري النماذج الأخرى المعروضة في هذا القسم مفاضلات بين وقت الاستجابة والدقة.

يستخدم نموذج EfficientDet-Lite0 العمود الفقري EfficientNet-Lite0 بحجم إدخال 320x320 وشبكة ميزات BiFPN. تم تدريب النموذج باستخدام مجموعة بيانات COCO، وهي مجموعة بيانات واسعة النطاق لرصد الأجسام تحتوي على 1.5 مليون مثيل لكائنات و80 تصنيفًا لها. اطّلِع على القائمة الكاملة للتصنيفات المتوافقة. يتوفّر EfficientDet-Lite0 بتنسيق int8 أو float16 أو float32. وننصحك باستخدام هذا النموذج لأنّه يوازن بين وقت الاستجابة والدقة. وهي دقيقة وخفيفة الوزن بما يكفي لاستخدامها في العديد من حالات الاستخدام.

اسم الطراز شكل الإدخال نوع التقريب الإصدارات
‫EfficientDet-Lite0 (int8) ‎320 x 320 int8 الأحدث
‫EfficientDet-Lite0 (float 16) ‎320 x 320 ‫float 16 الأحدث
‫EfficientDet-Lite0 (float 32) ‎320 x 320 لا شيء (float32) الأحدث

نموذج EfficientDet-Lite2

يستخدم نموذج EfficientDet-Lite2 العمود الفقري EfficientNet-Lite2 بحجم إدخال 448x448 وشبكة ميزات BiFPN. تم تدريب النموذج باستخدام مجموعة بيانات COCO، وهي مجموعة بيانات واسعة النطاق لرصد الأجسام تحتوي على 1.5 مليون مثيل لكائنات و80 تصنيفًا لها. اطّلِع على القائمة الكاملة للتصنيفات المتوافقة. يتوفّر EfficientDet-Lite2 كنموذج int8 أو float16 أو float32. هذا النموذج أكثر دقة بشكل عام من EfficientDet-Lite0، ولكنه أيضًا أبطأ ويستهلك ذاكرة أكثر. يناسب هذا النموذج استخدام الحالات التي تكون فيها الدقة ذات أولوية أكبر من السرعة والحجم.

اسم الطراز شكل الإدخال نوع التقريب الإصدارات
‫EfficientDet-Lite2 (int8) ‫448 × 448 int8 الأحدث
‫EfficientDet-Lite2 (float 16) ‎448 × 448 ‫float 16 الأحدث
‫EfficientDet-Lite2 (float 32) ‎448 × 448 لا شيء (float32) الأحدث

نموذج SSD MobileNetV2

يستخدم نموذج SSD MobileNetV2 العمود الفقري MobileNetV2 بحجم إدخال 256x256 وشبكة ميزات SSD. تم تدريب النموذج باستخدام مجموعة بيانات COCO، وهي مجموعة بيانات واسعة النطاق لرصد الأجسام تحتوي على 1.5 مليون مثيل لكائنات و80 تصنيفًا لها. اطّلِع على القائمة الكاملة للتصنيفات المتوافقة. يتوفّر SSD MobileNetV2 كنموذج int8 وfloat 32. هذا النموذج أسرع وأقل حجمًا من EfficientDet-Lite0، ولكنه أيضًا أقل دقة بشكل عام. هذا النموذج مناسب لحالات الاستخدام التي تتطلّب نموذجًا سريعًا وخفيفًا يتخلّى عن بعض الدقة.

اسم الطراز شكل الإدخال نوع التقريب الإصدارات
SSDMobileNet-V2 (int8) ‫256 x ‏256 int8 الأحدث
SSDMobileNet-V2 (float 32) ‫256 x ‏256 لا شيء (float32) الأحدث

متطلبات النماذج والبيانات الوصفية

يصف هذا القسم متطلبات النماذج المخصّصة إذا قرّرت إنشاء نموذج لاستخدامه مع هذه المهمة. يجب أن تكون النماذج المخصّصة بتنسيق TensorFlow Lite ويجب أن تتضمّن metadata تصف مَعلمات تشغيل النموذج.

متطلبات التصميم

الإدخال شكل الوصف
الصورة المُدخلة مصفوفة Float32 ذات الشكل [1، الارتفاع، العرض، 3] صورة الإدخال التي تمت تسويتها
الناتج شكل الوصف
detection_boxes مصفوفة Float32 ذات الشكل [1, عدد_المربّعات, 4] الموقع الجغرافي لكل جسم تم رصده
detection_classes مصفوفة Float32 ذات الشكل [1، عدد_المربّعات] فهرس أسماء الفئات لكل جسم تم رصده
detection_scores مصفوفة float32 ذات الشكل [1, num_boxes] نتائج التوقّعات لكل جسم تم رصده
num_boxes مصفوفة Float32 ذات حجم 1 عدد المربّعات التي تم رصدها

متطلبات البيانات الوصفية

المَعلمة الوصف الوصف
input_norm_mean متوسّط القيمة المستخدَم في تسويّة مصفوفة السواء للدخل صورة الإدخال التي تمت تسويتها
input_norm_std معيار الحقل المستخدَم في تسوية مصفوفة السواء للدخل الموقع الجغرافي لكل جسم تم رصده
label_file_paths المسارات المؤدية إلى ملفات تصنيفات مصفوفة الفئات إذا لم يتضمّن النموذج أي ملفات تصنيفات، أرسِل قائمة فارغة. فهرس أسماء الفئات لكل جسم تم رصده
score_calibration_md معلومات عن عملية معايرة النتيجة في مصفوفة التصنيف هذه المَعلمة غير مطلوبة إذا كان النموذج لا يستخدم عملية معايرة النقاط
.
نتائج التوقّعات لكل جسم تم رصده
num_boxes مصفوفة Float32 ذات حجم 1 عدد المربّعات التي تم رصدها

مقاييس أداء المهام

في ما يلي مقاييس الأداء للمهام الخاصة بالنماذج المدربة مسبقًا أعلاه. نتيجة وقت الاستجابة هي متوسط وقت الاستجابة على هاتف Pixel 6 باستخدام وحدة المعالجة المركزية (CPU) أو وحدة معالجة الرسومات (GPU).

اسم النموذج وقت استجابة وحدة المعالجة المركزية وقت استجابة وحدة معالجة الرسومات
نموذج EfficientDet-Lite0 float32 61.30 ملي ثانية 27.83 ملي ثانية
نموذج EfficientDet-Lite0 float16 53.97 ملي ثانية 27.97 ملي ثانية
نموذج EfficientDet-Lite0 int8 29.31 ملي ثانية -
نموذج EfficientDet-Lite2 بتنسيق float32 197.98 ملي ثانية 41.15 ملي ثانية
نموذج EfficientDet-Lite2 float16 198.77 ملي ثانية 47.31 ملي ثانية
نموذج EfficientDet-Lite2 int8 70.91 ملي ثانية -
نموذج SSD MobileNetV2 float32 36.30 ملي ثانية 24.01 ملي ثانية
نموذج SSD MobileNetV2 float16 37.35 ملي ثانية 28.16 ملي ثانية