راهنمای کار تشخیص اشیاء

وظیفه MediaPipe Object Detector به شما امکان می دهد حضور و مکان چندین کلاس از اشیاء را در تصاویر یا فیلم ها تشخیص دهید. به عنوان مثال، یک آشکارساز شی می تواند سگ ها را در یک تصویر پیدا کند. این کار بر روی داده های تصویری با مدل یادگیری ماشینی (ML) عمل می کند، داده های ثابت یا یک جریان ویدیویی پیوسته را به عنوان ورودی می پذیرد و لیستی از نتایج تشخیص را خروجی می دهد. هر نتیجه شناسایی نشان دهنده یک شی است که در تصویر یا ویدیو ظاهر می شود.

آن را امتحان کنید!

شروع کنید

با دنبال کردن یکی از این راهنماهای پیاده سازی برای پلتفرمی که روی آن کار می کنید، استفاده از این کار را شروع کنید:

این راهنماهای مخصوص پلتفرم شما را از طریق اجرای اساسی این کار، از جمله یک مدل توصیه شده و نمونه کد با گزینه های پیکربندی توصیه شده، راهنمایی می کنند.

جزئیات کار

این بخش قابلیت ها، ورودی ها و خروجی های این کار را شرح می دهد.

امکانات

  • پردازش تصویر ورودی - پردازش شامل چرخش تصویر، تغییر اندازه، عادی سازی و تبدیل فضای رنگی است.
  • برچسب محلی نقشه - زبان مورد استفاده برای نام های نمایشی را تنظیم کنید
  • آستانه امتیاز - نتایج را بر اساس نمرات پیش بینی فیلتر کنید.
  • تشخیص Top-k - نتایج تشخیص عدد را فیلتر کنید.
  • برچسب لیست مجاز و رد لیست - دسته های شناسایی شده را مشخص کنید.
ورودی های وظیفه خروجی های وظیفه
Object Detector API ورودی یکی از انواع داده های زیر را می پذیرد:
  • تصاویر ثابت
  • فریم های ویدئویی رمزگشایی شده
  • فید ویدیوی زنده
Object Detector API نتایج زیر را برای اشیاء شناسایی شده خروجی می دهد:
  • دسته بندی شی
  • امتیاز احتمال
  • مختصات جعبه مرزی

گزینه های پیکربندی

این کار دارای گزینه های پیکربندی زیر است:

نام گزینه شرح محدوده ارزش مقدار پیش فرض
running_mode حالت اجرا را برای کار تنظیم می کند. سه حالت وجود دارد:

IMAGE: حالت برای ورودی های تک تصویر.

VIDEO: حالت برای فریم های رمزگشایی شده یک ویدیو.

LIVE_STREAM: حالت پخش زنده داده های ورودی، مانند دوربین. در این حالت، resultListener باید فراخوانی شود تا شنونده ای را برای دریافت نتایج به صورت ناهمزمان تنظیم کند.
{ IMAGE, VIDEO, LIVE_STREAM } IMAGE
display_names زبان برچسب‌ها را برای استفاده برای نام‌های نمایشی ارائه شده در فراداده مدل کار، در صورت وجود، تنظیم می‌کند. پیش فرض برای انگلیسی en است. با استفاده از 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 شناور 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 x 448 int8 آخرین
EfficientDet-Lite2 (float 16) 448 x 448 شناور 16 آخرین
EfficientDet-Lite2 (float 32) 448 x 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 (float 32) 256×256 هیچکدام (float32) آخرین

الزامات مدل و فراداده

اگر تصمیم به ساخت مدلی برای استفاده در این کار دارید، این بخش الزامات مدل های سفارشی را شرح می دهد. مدل‌های سفارشی باید در قالب TensorFlow Lite باشند و باید شامل ابرداده‌هایی باشند که پارامترهای عملیاتی مدل را توصیف می‌کنند.

الزامات طراحی

ورودی شکل شرح
تصویر ورودی تانسور شکل Float32[1، ارتفاع، عرض، 3] تصویر ورودی نرمال شده
خروجی شکل شرح
detection_boxes تانسور شکل Float32 [1, num_boxes, 4] مکان جعبه هر شی شناسایی شده
detection_classes تانسور شکل Float32 [1، num_boxes] شاخص های نام کلاس برای هر شی شناسایی شده.
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 تعداد جعبه های شناسایی شده

معیارهای وظیفه

در اینجا معیارهای کار برای مدل های از پیش آموزش دیده فوق آمده است. نتیجه تأخیر، متوسط ​​تأخیر پیکسل 6 با استفاده از CPU / GPU است.

نام مدل تاخیر 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 میلی‌ثانیه