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