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

تتيح لك مهمة MediaPipe Object Detector اكتشاف وجود فئات متعددة من الكائنات وموقعها داخل الصور أو مقاطع الفيديو. على سبيل المثال، يمكن لأداة الكشف عن الأجسام تحديد موقع الكلاب في الصورة. تعمل هذه المهمة على بيانات الصور باستخدام نموذج تعلُّم الآلة (ML)، ما يقبل البيانات الثابتة أو بث فيديو مستمر كمدخلات وإخراج قائمة بنتائج الرصد. وتمثل كل نتيجة اكتشاف كائنًا يظهر داخل الصورة أو الفيديو.

تجربة الميزة

البدء

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

ترشدك هذه الأدلة الخاصة بنظام التشغيل خلال التنفيذ الأساسي لهذه المهمة، بما في ذلك النموذج المُقترح ومثال الرمز البرمجي مع خيارات الضبط المُقترَحة.

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

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

الميزات

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

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

تتضمن هذه المهمة خيارات الإعداد التالية:

اسم الخيار الوصف نطاق القيمة القيمة التلقائية
running_mode تحدِّد هذه السياسة وضع التشغيل للمهمة. هناك ثلاثة أوضاع:

IMAGE: وضع إدخالات الصورة الفردية.

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

البث المباشر: وضع بث مباشر لبيانات الإدخال، مثل الكاميرا. في هذا الوضع، يجب استدعاء resultsListener لإعداد أداة معالجة الصوت لكي تتلقى النتائج بشكل غير متزامن.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
display_names تحدِّد هذه السياسة لغة التصنيفات التي سيتم استخدامها للأسماء المعروضة في البيانات الوصفية لنموذج المهمة، إذا كان ذلك متاحًا. الإعداد التلقائي هو en للغة الإنجليزية. يمكنك إضافة تصنيفات مترجَمة إلى البيانات الوصفية لنموذج مخصّص باستخدام TensorFlow Lite Metadata Scriptr 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 (العدد العشري 16) 320 x 320 العدد العائم 16 الأحدث
EfficientDet-Lite0 (العدد العشري 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 (العدد العشري 16) 448 × 448 العدد العائم 16 الأحدث
EfficientDet-Lite2 (العدد العشري 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 × 256 int8 الأحدث
SSDMobileNet-V2 (عدد عائم 32) 256 × 256 لا شيء (float32) الأحدث

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

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

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

إدخال شكل الوصف
صورة الإدخال عائم 32 مشد الشكل[1، ارتفاع، عرض، 3] صورة الإدخال التي تمت تسويتها
الناتج شكل الوصف
detection_boxes عائمة 32 مشد الشكل [1، عدد_الصناديق، 4] الموقع الجغرافي للصندوق لكل عنصر تم رصده
detection_classes عائم 32 مشد الشكل [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)/وحدة معالجة الرسومات.

اسم النموذج وقت استجابة وحدة المعالجة المركزية (CPU) وقت استجابة وحدة معالجة الرسومات
النموذج float32 EfficientDet-Lite0 61.30 ملي ثانية 27.83 ملي ثانية
نموذج EfficientDet-Lite0 float16 53.97 ملي ثانية 27.97 ملي ثانية
نموذج EfficientDet-Lite0 int8 29.31 ملي ثانية -
النموذج float32 EfficientDet-Lite2 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 ملي ثانية