وظیفه MediaPipe Image Classifier به شما امکان می دهد تا روی تصاویر طبقه بندی کنید. شما می توانید از این کار برای شناسایی آنچه که یک تصویر در بین مجموعه ای از دسته بندی های تعریف شده در زمان آموزش نشان می دهد استفاده کنید. این وظیفه بر روی داده های تصویری با مدل یادگیری ماشینی (ML) به عنوان داده ایستا یا یک جریان پیوسته عمل می کند و فهرستی از دسته بندی های بالقوه را که بر اساس امتیاز احتمال نزولی رتبه بندی شده اند، خروجی می دهد.
شروع کنید
استفاده از این کار را با دنبال کردن یکی از این راهنماهای پیاده سازی برای پلتفرم هدف خود شروع کنید. این راهنماهای مخصوص پلتفرم شما را با استفاده از یک مدل توصیهشده، پیادهسازی اولیه این کار را راهنمایی میکنند و نمونههایی از کد را با گزینههای پیکربندی توصیهشده ارائه میکنند:
- اندروید - نمونه کد - راهنما
- پایتون - نمونه کد - راهنما
- وب - نمونه کد - راهنما
- iOS - مثال کد - راهنما
جزئیات کار
این بخش قابلیت ها، ورودی ها، خروجی ها و گزینه های پیکربندی این کار را شرح می دهد.
امکانات
- پردازش تصویر ورودی - پردازش شامل چرخش تصویر، تغییر اندازه، عادی سازی و تبدیل فضای رنگی است.
- منطقه مورد علاقه - به جای کل تصویر، طبقه بندی را روی یک منطقه از تصویر انجام دهید.
- برچسب محلی نقشه - زبان مورد استفاده برای نام های نمایشی را تنظیم کنید.
- آستانه امتیاز - نتایج را بر اساس نمرات پیش بینی فیلتر کنید.
- طبقه بندی Top-k - تعداد نتایج طبقه بندی را محدود کنید.
- برچسب مجاز لیست و رد لیست - دسته های طبقه بندی شده را مشخص کنید.
ورودی های وظیفه | خروجی های وظیفه |
---|---|
ورودی می تواند یکی از انواع داده های زیر باشد:
| Image Classifier لیستی از دسته بندی ها را خروجی می دهد که شامل:
|
گزینه های پیکربندی
این کار دارای گزینه های پیکربندی زیر است:
نام گزینه | شرح | محدوده ارزش | مقدار پیش فرض |
---|---|---|---|
running_mode | حالت اجرا را برای کار تنظیم می کند. سه حالت وجود دارد: IMAGE: حالت برای ورودی های تک تصویر. VIDEO: حالت برای فریم های رمزگشایی شده یک ویدیو. LIVE_STREAM: حالت پخش زنده داده های ورودی، مانند دوربین. در این حالت، resultListener باید فراخوانی شود تا شنونده ای را برای دریافت نتایج به صورت ناهمزمان تنظیم کند. | { IMAGE, VIDEO, LIVE_STREAM } | IMAGE |
display_names_locale | زبان برچسبها را برای استفاده برای نامهای نمایشی ارائه شده در فراداده مدل کار، در صورت وجود، تنظیم میکند. پیش فرض برای انگلیسی en است. با استفاده از TensorFlow Lite Metadata Writer API میتوانید برچسبهای محلی را به ابرداده یک مدل سفارشی اضافه کنید. | کد محلی | en |
max_results | حداکثر تعداد اختیاری نتایج طبقه بندی با امتیاز بالا را برای بازگشت تنظیم می کند. اگر < 0 باشد، تمام نتایج موجود برگردانده خواهند شد. | هر عدد مثبت | -1 |
score_threshold | آستانه امتیاز پیشبینی را تنظیم میکند که بر آستانه ارائهشده در فراداده مدل (در صورت وجود) لغو میشود. نتایج زیر این مقدار رد می شوند. | هر شناور | تنظیم نشده |
category_allowlist | فهرست اختیاری نامهای دستهبندی مجاز را تنظیم میکند. در صورت خالی نبودن، نتایج طبقه بندی که نام دسته آنها در این مجموعه نیست فیلتر می شود. نامهای دستهبندی تکراری یا ناشناخته نادیده گرفته میشوند. این گزینه با category_denylist منحصر به فرد است و از هر دو نتیجه در یک خطا استفاده می کند. | هر رشته | تنظیم نشده |
category_denylist | فهرست اختیاری نامهای دستههایی را که مجاز نیستند را تنظیم میکند. در صورت خالی نبودن، نتایج طبقه بندی که نام دسته آنها در این مجموعه است فیلتر می شود. نامهای دستهبندی تکراری یا ناشناخته نادیده گرفته میشوند. این گزینه با category_allowlist منحصر به فرد است و از هر دو نتیجه در یک خطا استفاده می کند. | هر رشته | تنظیم نشده |
result_callback | شنونده نتیجه را طوری تنظیم میکند که وقتی طبقهبندی کننده تصویر در حالت پخش زنده است، نتایج طبقهبندی را به صورت ناهمزمان دریافت کند. فقط زمانی قابل استفاده است که حالت اجرا روی LIVE_STREAM تنظیم شده باشد | N/A | تنظیم نشده |
مدل ها
Image Classifier به یک مدل طبقه بندی تصویر نیاز دارد که دانلود و در فهرست پروژه شما ذخیره شود. هنگامی که شروع به توسعه با این کار می کنید، با مدل پیش فرض و توصیه شده برای پلتفرم هدف خود شروع کنید. سایر مدلهای موجود معمولاً بین عملکرد، دقت، وضوح و نیازهای منابع، معاوضه ایجاد میکنند و در برخی موارد، ویژگیهای اضافی را نیز شامل میشوند.
مدل EfficientNet-Lite0 (توصیه می شود)
مدل EfficientNet-Lite0 از معماری EfficientNet استفاده میکند و با استفاده از ImageNet برای تشخیص 1000 کلاس مانند درختان، حیوانات، غذا، وسایل نقلیه، افراد و غیره آموزش دیده است. فهرست کامل برچسبهای پشتیبانی شده را ببینید. EfficientNet-Lite0 به عنوان مدل int8 و float 32 موجود است. این مدل به دلیل ایجاد تعادل بین تاخیر و دقت توصیه می شود. هم دقیق است و هم برای بسیاری از موارد به اندازه کافی سبک وزن است.
نام مدل | شکل ورودی | نوع کوانتیزاسیون | نسخه ها |
---|---|---|---|
EfficientNet-Lite0 (int8) | 224 x 224 | int8 | آخرین |
EfficientNet-Lite0 (float 32) | 224 x 224 | هیچکدام (float32) | آخرین |
مدل EfficientNet-Lite2
مدل EfficientNet-Lite2 از معماری EfficientNet استفاده میکند و با استفاده از ImageNet برای تشخیص 1000 کلاس، مانند درختان، حیوانات، غذا، وسایل نقلیه، افراد و غیره آموزش دیده است. فهرست کامل برچسبهای پشتیبانی شده را ببینید. EfficientNet-Lite2 به عنوان مدل int8 و float 32 موجود است. این مدل به طور کلی دقیق تر از EfficientNet-Lite0 است، اما همچنین کندتر و حافظه فشرده تر است. این مدل برای مواردی که دقت در اولویت بالاتر از سرعت یا اندازه است مناسب است.
نام مدل | شکل ورودی | نوع کوانتیزاسیون | نسخه ها |
---|---|---|---|
EfficientNet-Lite2 (int8) | 224 x 224 | int8 | آخرین |
EfficientNet-Lite2 (float 32) | 224 x 224 | هیچکدام (float32) | آخرین |
معیارهای وظیفه
در اینجا معیارهای کار برای کل خط لوله بر اساس مدل های از پیش آموزش دیده بالا آمده است. نتیجه تأخیر، متوسط تأخیر پیکسل 6 با استفاده از CPU / GPU است.
نام مدل | تاخیر CPU | تاخیر GPU |
---|---|---|
EfficientNet-Lite0 (float 32) | 23.52 میلیثانیه | 18.90 میلیثانیه |
EfficientNet-Lite0 (int8) | 10.08 میلیثانیه | - |
EfficientNet-Lite2 (float 32) | 44.17 میلیثانیه | 22.20 میلیثانیه |
EfficientNet-Lite2 (int8) | 19.43 میلیثانیه | - |
مدل های سفارشی
اگر میخواهید قابلیتهای مدلهای ارائهشده را بهبود یا تغییر دهید، میتوانید از یک مدل ML سفارشیشده برای این کار استفاده کنید. می توانید از Model Maker برای اصلاح مدل های موجود استفاده کنید یا با استفاده از ابزارهایی مانند TensorFlow یک مدل بسازید. مدلهای سفارشی مورد استفاده با MediaPipe باید در قالب TensorFlow Lite باشند و باید شامل ابردادههای خاصی باشند که پارامترهای عملیاتی مدل را توصیف میکنند. قبل از اینکه مدل خود را بسازید، باید از Model Maker برای اصلاح مدل های ارائه شده برای این کار استفاده کنید.
اگر علاقه مند به ایجاد یک طبقه بندی کننده تصویر سفارشی با استفاده از مجموعه داده های خود هستید، با آموزش سفارشی سازی طبقه بندی کننده تصویر شروع کنید.