تشخیص اشیا، تشخیص اشیا

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

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

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

شروع کنید

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

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

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

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

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

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

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

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

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

اندروید

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

مثال اندروید زیر اجرای هر دو روش را به ترتیب lib_task_api و lib_interpreter نشان می دهد.

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

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 میلی‌ثانیه*
iPhone 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