تشخیص اشیا

با توجه به یک تصویر یا یک جریان ویدیویی، یک مدل تشخیص شی می تواند تشخیص دهد که کدام یک از مجموعه شناخته شده از اشیاء ممکن است وجود داشته باشد و اطلاعاتی در مورد موقعیت آنها در تصویر ارائه دهد.

به عنوان مثال، این اسکرین شات از برنامه مثال نشان می دهد که چگونه دو شیء شناسایی شده اند و موقعیت آنها حاشیه نویسی شده است:

اسکرین شات نمونه اندروید

شروع کنید

برای یادگیری نحوه استفاده از تشخیص اشیا در یک برنامه تلفن همراه، برنامه‌ها و راهنماهای مثال را کاوش کنید.

اگر از پلتفرمی غیر از Android یا iOS استفاده می‌کنید، یا اگر قبلاً با APIهای TensorFlow Lite آشنا هستید، می‌توانید مدل تشخیص شی شروع ما و برچسب‌های همراه آن را دانلود کنید.

دانلود مدل استارت با متادیتا

برای اطلاعات بیشتر در مورد فراداده و فیلدهای مرتبط (به عنوان مثال: labels.txt ) به خواندن فراداده از مدل ها مراجعه کنید.

اگر می‌خواهید یک مدل تشخیص سفارشی برای کار خود آموزش دهید، سفارشی‌سازی مدل را ببینید.

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

  • پیش بینی اینکه تصویر به احتمال زیاد نشان دهنده کدام برچسب است (به طبقه بندی تصویر مراجعه کنید)
  • پیش‌بینی ترکیب یک تصویر، برای مثال موضوع در مقابل پس‌زمینه (به بخش‌بندی مراجعه کنید)

نمونه برنامه ها و راهنماها

اگر با TensorFlow Lite تازه کار هستید و با Android یا iOS کار می کنید، توصیه می کنیم نمونه برنامه های زیر را بررسی کنید که می توانند به شما در شروع کار کمک کنند.

اندروید

می‌توانید از API خارج از جعبه از TensorFlow Lite Task Library استفاده کنید تا مدل‌های تشخیص شی را تنها در چند خط کد یکپارچه کنید. همچنین می توانید خط لوله استنتاج سفارشی خود را با استفاده از TensorFlow Lite Interpreter Java API ایجاد کنید.

مثال اندروید زیر اجرای هر دو روش را به ترتیب با استفاده از Task library و Interter API نشان می‌دهد.

مشاهده نمونه اندروید

iOS

می توانید مدل را با استفاده از TensorFlow Lite Interpreter Swift API ادغام کنید. مثال iOS را در زیر ببینید.

نمونه iOS را مشاهده کنید

توضیحات مدل

این بخش امضای مدل‌های آشکارساز تک شات تبدیل شده به TensorFlow Lite از API تشخیص شیء TensorFlow را شرح می‌دهد.

یک مدل تشخیص شی برای تشخیص حضور و مکان چندین کلاس از اشیا آموزش داده شده است. برای مثال، یک مدل ممکن است با تصاویری که حاوی تکه‌های میوه مختلف است، همراه با برچسبی که کلاس میوه‌ای را که نشان می‌دهند (مانند سیب، موز یا توت‌فرنگی) و داده‌هایی که مشخص می‌کند هر شی در کجا ظاهر می‌شود، آموزش داده شود. تصویر.

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

امضای ورودی

مدل یک تصویر را به عنوان ورودی می گیرد.

فرض کنید تصویر مورد انتظار 300x300 پیکسل است، با سه کانال (قرمز، آبی و سبز) در هر پیکسل. این باید به عنوان یک بافر مسطح با مقادیر 270000 بایت (300x300x3) به مدل داده شود. اگر مدل کوانتیزه شود، هر مقدار باید یک بایت باشد که مقداری بین 0 تا 255 را نشان می دهد.

برای درک نحوه انجام این پیش پردازش در اندروید، می توانید به کد برنامه مثال ما نگاهی بیندازید.

امضای خروجی

مدل خروجی چهار آرایه، نگاشت به شاخص 0-4. آرایه های 0، 1 و 2 N شی شناسایی شده را توصیف می کنند، با یک عنصر در هر آرایه مربوط به هر شی.

فهرست مطالب نام شرح
0 مکان ها آرایه چند بعدی [N][4] دارای مقادیر ممیز شناور بین 0 و 1 است، آرایه‌های داخلی جعبه‌های مرزی را به شکل [بالا، چپ، پایین، راست] نشان می‌دهند.
1 کلاس ها آرایه ای از N عدد صحیح (خروجی به عنوان مقادیر ممیز شناور) که هر کدام نمایه یک برچسب کلاس را از فایل labels نشان می دهد.
2 امتیازات آرایه ای از N مقادیر ممیز شناور بین 0 و 1 نشان دهنده احتمال تشخیص یک کلاس است
3 تعداد شناسایی ها مقدار صحیح N

برای مثال، تصور کنید مدلی برای تشخیص سیب، موز و توت فرنگی آموزش دیده است. هنگامی که یک تصویر ارائه می شود، تعداد مجموعه ای از نتایج تشخیص را خروجی می دهد - در این مثال، 5.

کلاس نمره محل
سیب 0.92 [18، 21، 57، 63]
موز 0.88 [100، 30، 180، 150]
توت فرنگی 0.87 [7، 82، 89، 163]
موز 0.23 [42، 66، 57، 83]
سیب 0.11 [6، 42، 31، 58]

امتیاز اعتماد به نفس

برای تفسیر این نتایج، می‌توانیم به امتیاز و مکان هر شی شناسایی شده نگاه کنیم. امتیاز عددی بین 0 و 1 است که نشان دهنده اطمینان از اینکه شی واقعاً شناسایی شده است. هر چه عدد به 1 نزدیکتر باشد، مدل مطمئن تر است.

بسته به درخواست خود، می‌توانید آستانه‌ای تعیین کنید که در زیر آن نتایج تشخیص را نادیده بگیرید. برای مثال فعلی، یک برش معقول نمره 0.5 است (به معنی احتمال 50٪ که تشخیص معتبر است). در این صورت، دو شیء آخر در آرایه نادیده گرفته می‌شوند، زیرا این امتیازات اطمینان زیر 0.5 هستند:

کلاس نمره محل
سیب 0.92 [18، 21، 57، 63]
موز 0.88 [100، 30، 180، 150]
توت فرنگی 0.87 [7، 82، 89، 163]
موز 0.23 [42، 66، 57، 83]
سیب 0.11 [6، 42، 31، 58]

برش مورد استفاده شما باید بر اساس این باشد که آیا شما با موارد مثبت کاذب راحت تر هستید (اشیایی که به اشتباه شناسایی می شوند، یا مناطقی از تصویر که به اشتباه به عنوان اشیاء شناسایی می شوند در حالی که نیستند) یا منفی های کاذب (اشیاء واقعی که هستند). از دست دادند زیرا اعتماد به نفس آنها پایین بود).

به عنوان مثال، در تصویر زیر، گلابی (که شیئی نیست که مدل برای تشخیص آن آموزش دیده باشد) به اشتباه به عنوان "شخص" شناسایی شده است. این نمونه ای از مثبت کاذب است که با انتخاب یک برش مناسب می توان آن را نادیده گرفت. در این مورد، یک برش 0.6 (یا 60٪) به راحتی مثبت کاذب را حذف می کند.

اسکرین شات مثال اندروید که مثبت کاذب را نشان می دهد

محل

برای هر شی شناسایی شده، مدل آرایه ای از چهار عدد را نشان می دهد که مستطیل مرزی است که موقعیت آن را احاطه کرده است. برای مدل استارت ارائه شده، اعداد به شرح زیر است:

[ بالا، ترک کرد، پایین، درست ]

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

معیارهای عملکرد

اعداد معیار عملکرد برای مدل استارت ما با ابزاری که در اینجا توضیح داده شده است، تولید می‌شوند.

نام مدل اندازه مدل دستگاه پردازنده گرافیکی CPU
COCO SSD MobileNet نسخه 1 27 مگابایت پیکسل 3 (اندروید 10) 22 میلی‌ثانیه 46 میلی‌ثانیه*
پیکسل 4 (اندروید 10) 20 میلی‌ثانیه 29 میلی‌ثانیه*
آیفون XS (iOS 12.4.1) 7.6 میلی‌ثانیه 11 میلی ثانیه**

* 4 نخ استفاده شده است.

** 2 رشته مورد استفاده در آیفون برای بهترین نتیجه عملکرد.

سفارشی سازی مدل

مدل های از قبل آموزش دیده

مدل‌های تشخیص بهینه‌شده برای موبایل با انواع ویژگی‌های تأخیر و دقت را می‌توان در Detection Zoo پیدا کرد. هر یک از آنها از امضاهای ورودی و خروجی که در بخش های بعدی توضیح داده شده است پیروی می کند.

اکثر فایل های فشرده دانلود شامل یک فایل model.tflite هستند. اگر موردی وجود نداشته باشد، می‌توان بافر مسطح TensorFlow Lite را با استفاده از این دستورالعمل‌ها ایجاد کرد. مدل های SSD از باغ وحش تشخیص اشیاء TF2 را نیز می توان با استفاده از دستورالعمل های اینجا به TensorFlow Lite تبدیل کرد. توجه به این نکته مهم است که مدل‌های تشخیص را نمی‌توان مستقیماً با استفاده از مبدل TensorFlow Lite تبدیل کرد، زیرا به یک مرحله میانی برای تولید یک مدل منبع سازگار با موبایل نیاز دارند. اسکریپت های لینک شده در بالا این مرحله را انجام می دهند.

هر دو اسکریپت صادرکننده TF1 و TF2 دارای پارامترهایی هستند که می توانند تعداد بیشتری از اشیاء خروجی یا پردازش پست کندتر و دقیق تر را فعال کنند. لطفاً از --help با اسکریپت ها استفاده کنید تا لیست کاملی از آرگومان های پشتیبانی شده را ببینید.

در حال حاضر استنتاج روی دستگاه تنها با مدل های SSD بهینه شده است. پشتیبانی بهتر از معماری های دیگر مانند CenterNet و EfficientDet در حال بررسی است.

چگونه یک مدل برای سفارشی سازی انتخاب کنیم؟

هر مدل با دقت خاص خود (که با مقدار mAP تعیین می شود) و ویژگی های تأخیر ارائه می شود. شما باید مدلی را انتخاب کنید که برای مورد استفاده و سخت افزار مورد نظر شما بهترین کارایی را داشته باشد. به عنوان مثال، مدل‌های Edge TPU برای استنباط بر روی Edge TPU گوگل در پیکسل 4 ایده‌آل هستند.

می توانید از ابزار معیار ما برای ارزیابی مدل ها و انتخاب کارآمدترین گزینه موجود استفاده کنید.

تنظیم دقیق مدل ها بر روی داده های سفارشی

مدل های از پیش آموزش دیده ای که ارائه می کنیم برای تشخیص 90 کلاس از اشیا آموزش دیده اند. برای فهرست کامل کلاس‌ها، فایل برچسب‌ها را در فراداده مدل ببینید.

می‌توانید از تکنیکی به نام یادگیری انتقالی برای آموزش مجدد یک مدل برای تشخیص کلاس‌هایی که در مجموعه اصلی نیستند استفاده کنید. به عنوان مثال، با وجود وجود تنها یک سبزی در داده‌های آموزشی اصلی، می‌توانید مدل را دوباره آموزش دهید تا چندین نوع سبزیجات را شناسایی کند. برای انجام این کار، به مجموعه ای از تصاویر آموزشی برای هر یک از برچسب های جدیدی که می خواهید آموزش دهید، نیاز دارید. روش توصیه شده استفاده از کتابخانه TensorFlow Lite Model Maker است که فرآیند آموزش یک مدل TensorFlow Lite را با استفاده از مجموعه داده های سفارشی، با چند خط کد ساده می کند. از یادگیری انتقالی برای کاهش داده های آموزشی و زمان مورد نیاز استفاده می کند. همچنین می توانید از Few-shot detection Colab به عنوان نمونه ای از تنظیم دقیق یک مدل از پیش آموزش دیده با چند نمونه یاد بگیرید.

برای تنظیم دقیق با مجموعه داده های بزرگتر، به این راهنماها برای آموزش مدل های خود با API تشخیص اشیاء TensorFlow: TF1 ، TF2 نگاهی بیندازید. پس از آموزش، می‌توان آن‌ها را با دستورالعمل‌های اینجا به فرمت مناسب TFLite تبدیل کرد: TF1 ، TF2