تتيح لك مهمة MediaPipe Object Detector اكتشاف وجود فئات متعددة من الكائنات وموقعها داخل الصور أو مقاطع الفيديو. على سبيل المثال، يمكن لأداة الكشف عن الأجسام تحديد موقع الكلاب في الصورة. تعمل هذه المهمة على بيانات الصور باستخدام نموذج تعلُّم الآلة (ML)، ما يقبل البيانات الثابتة أو بث فيديو مستمر كمدخلات وإخراج قائمة بنتائج الرصد. وتمثل كل نتيجة اكتشاف كائنًا يظهر داخل الصورة أو الفيديو.
البدء
ابدأ في استخدام هذه المهمة باتباع أحد أدلة التنفيذ هذه للمنصة التي تعمل عليها:
- Android - مثال على الرمز البرمجي - Guide
- Python - مثال على الرمز البرمجي - Guide
- الويب - مثال على الرمز - Guide
- iOS - مثال على الرمز البرمجي - Guide
ترشدك هذه الأدلة الخاصة بنظام التشغيل خلال التنفيذ الأساسي لهذه المهمة، بما في ذلك النموذج المُقترح ومثال الرمز البرمجي مع خيارات الضبط المُقترَحة.
تفاصيل المهمة
يصف هذا القسم إمكانات هذه المهمة ومدخلاتها ومخرجاتها.
الميزات
- معالجة إدخال الصور: تشمل المعالجة تدوير الصور وتغيير حجمها وتسويتها وتحويل مساحة اللون.
- لغة خريطة التصنيف - ضبط اللغة المستخدمة للأسماء المعروضة
- الحد الأدنى للنتيجة - فلترة النتائج استنادًا إلى نتائج التوقعات.
- رصد أهم الرسائل: يمكنك فلترة نتائج رصد الرقم.
- قائمة التصنيفات المسموح بها وقائمة الحظر: حدِّد الفئات التي تم رصدها.
إدخالات المهام | نتائج المهام |
---|---|
تقبل واجهة برمجة التطبيقات 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 (يُنصح به)
يستخدم نموذج 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 ملي ثانية |