|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago | |
single-board-computer-count-stock.md | 4 weeks ago | |
single-board-computer-object-detector.md | 4 weeks ago | |
wio-terminal-count-stock.md | 4 weeks ago | |
wio-terminal-object-detector.md | 4 weeks ago |
README.md
Перевірка запасів за допомогою IoT-пристрою
Скетчнот від Nitya Narasimhan. Натисніть на зображення для перегляду у більшому розмірі.
Тест перед лекцією
Вступ
У попередньому уроці ви дізналися про різні способи використання розпізнавання об'єктів у роздрібній торгівлі. Ви також навчилися тренувати детектор об'єктів для ідентифікації запасів. У цьому уроці ви дізнаєтеся, як використовувати ваш детектор об'єктів з IoT-пристрою для підрахунку запасів.
У цьому уроці ми розглянемо:
- Підрахунок запасів
- Виклик детектора об'єктів з IoT-пристрою
- Границеві рамки
- Перенавчання моделі
- Підрахунок запасів
🗑 Це останній урок у цьому проєкті, тому після завершення уроку та виконання завдання не забудьте очистити ваші хмарні сервіси. Вам знадобляться ці сервіси для виконання завдання, тому спочатку переконайтеся, що завдання виконано.
За потреби зверніться до посібника з очищення проєкту для отримання інструкцій.
Підрахунок запасів
Детектори об'єктів можуть використовуватися для перевірки запасів, як для підрахунку, так і для забезпечення того, що запаси знаходяться на своєму місці. IoT-пристрої з камерами можуть бути розміщені по всьому магазину для моніторингу запасів, починаючи з ключових зон, де важливо мати товари в наявності, наприклад, зони з невеликою кількістю товарів високої вартості.
Наприклад, якщо камера спрямована на полицю, яка може вмістити 8 банок томатної пасти, а детектор об'єктів виявляє лише 7 банок, то одна банка відсутня і потребує поповнення.
На зображенні вище детектор об'єктів виявив 7 банок томатної пасти на полиці, яка може вмістити 8 банок. IoT-пристрій може не лише надіслати повідомлення про необхідність поповнення, але й надати інформацію про місцезнаходження відсутнього товару, що є важливим, якщо ви використовуєте роботів для поповнення полиць.
💁 Залежно від магазину та популярності товару, поповнення, ймовірно, не відбудеться, якщо відсутня лише одна банка. Вам потрібно буде створити алгоритм, який визначає, коли поповнювати запаси, враховуючи ваші товари, клієнтів та інші критерії.
✅ У яких інших сценаріях можна поєднати розпізнавання об'єктів і роботів?
Іноді на полицях може опинитися неправильний товар. Це може бути людська помилка під час поповнення запасів або клієнти, які передумали купувати товар і поставили його на перше доступне місце. Якщо це непсувний товар, наприклад консерви, це просто незручність. Якщо це псувний товар, наприклад заморожені або охолоджені продукти, це може означати, що товар більше не можна продавати, оскільки неможливо визначити, як довго він був поза морозильною камерою.
Розпізнавання об'єктів може використовуватися для виявлення несподіваних товарів, знову ж таки, сповіщаючи людину або робота про необхідність повернення товару, як тільки він буде виявлений.
На зображенні вище банка дитячої кукурудзи була поставлена на полицю поруч із томатною пастою. Детектор об'єктів виявив це, дозволяючи IoT-пристрою сповістити людину або робота про необхідність повернення банки на її правильне місце.
Виклик детектора об'єктів з IoT-пристрою
Детектор об'єктів, який ви тренували в попередньому уроці, можна викликати з вашого IoT-пристрою.
Завдання - опублікувати ітерацію вашого детектора об'єктів
Ітерації публікуються через портал Custom Vision.
-
Запустіть портал Custom Vision за адресою CustomVision.ai і увійдіть, якщо ви ще цього не зробили. Потім відкрийте ваш проєкт
stock-detector
. -
Виберіть вкладку Performance у верхньому меню.
-
Виберіть останню ітерацію зі списку Iterations на бічній панелі.
-
Натисніть кнопку Publish для цієї ітерації.
-
У діалоговому вікні Publish Model встановіть Prediction resource на ресурс
stock-detector-prediction
, який ви створили в попередньому уроці. Залиште назву якIteration2
і натисніть кнопку Publish. -
Після публікації натисніть кнопку Prediction URL. Це покаже деталі API прогнозування, які вам знадобляться для виклику моделі з вашого IoT-пристрою. Нижня секція позначена If you have an image file, і це ті деталі, які вам потрібні. Скопіюйте URL, який виглядає приблизно так:
https://<location>.api.cognitive.microsoft.com/customvision/v3.0/Prediction/<id>/detect/iterations/Iteration2/image
Де
<location>
— це місце, яке ви використовували при створенні ресурсу Custom Vision, а<id>
— це довгий ідентифікатор, що складається з літер і цифр.Також скопіюйте значення Prediction-Key. Це захищений ключ, який потрібно передати при виклику моделі. Тільки додатки, які передають цей ключ, можуть використовувати модель, всі інші додатки будуть відхилені.
✅ Коли нова ітерація публікується, вона матиме іншу назву. Як ви думаєте, як можна змінити ітерацію, яку використовує IoT-пристрій?
Завдання - викликати детектор об'єктів з IoT-пристрою
Скористайтеся відповідним посібником нижче, щоб використовувати детектор об'єктів з вашого IoT-пристрою:
Границеві рамки
Коли ви використовуєте детектор об'єктів, ви отримуєте не лише виявлені об'єкти з їхніми тегами та ймовірностями, але й границеві рамки об'єктів. Вони визначають, де детектор об'єктів виявив об'єкт із заданою ймовірністю.
💁 Границева рамка — це рамка, яка визначає область, що містить виявлений об'єкт, рамка, яка визначає межі об'єкта.
Результати прогнозу у вкладці Predictions в Custom Vision мають границеві рамки, накладені на зображення, яке було надіслано для прогнозу.
На зображенні вище було виявлено 4 банки томатної пасти. У результатах червоний квадрат накладений на кожен об'єкт, який був виявлений на зображенні, вказуючи на границеву рамку для зображення.
✅ Відкрийте прогнози в Custom Vision і перегляньте границеві рамки.
Границеві рамки визначаються за допомогою 4 значень — верх, ліво, висота і ширина. Ці значення знаходяться в діапазоні від 0 до 1, представляючи позиції як відсоток від розміру зображення. Початок координат (позиція 0,0) знаходиться у верхньому лівому куті зображення, тому значення "верх" — це відстань від верху, а нижня межа рамки — це верх плюс висота.
Зображення вище має ширину 600 пікселів і висоту 800 пікселів. Границева рамка починається на 320 пікселів вниз, що дає координату "верх" 0.4 (800 x 0.4 = 320). Зліва рамка починається на 240 пікселів, що дає координату "ліво" 0.4 (600 x 0.4 = 240). Висота рамки становить 240 пікселів, що дає значення висоти 0.3 (800 x 0.3 = 240). Ширина рамки становить 120 пікселів, що дає значення ширини 0.2 (600 x 0.2 = 120).
Координата | Значення |
---|---|
Верх | 0.4 |
Ліво | 0.4 |
Висота | 0.3 |
Ширина | 0.2 |
Використання значень у відсотках від 0 до 1 означає, що незалежно від того, до якого розміру масштабовано зображення, границева рамка починається на 0.4 від шляху вниз і вбік, і має висоту 0.3 та ширину 0.2.
Ви можете використовувати границеві рамки у поєднанні з ймовірностями для оцінки точності виявлення. Наприклад, детектор об'єктів може виявити кілька об'єктів, які перекриваються, наприклад, виявляючи одну банку всередині іншої. Ваш код може перевірити границеві рамки, зрозуміти, що це неможливо, і ігнорувати будь-які об'єкти, які значно перекриваються з іншими.
У прикладі вище одна границева рамка вказує на передбачену банку томатної пасти з ймовірністю 78.3%. Друга границева рамка трохи менша і знаходиться всередині першої рамки з ймовірністю 64.3%. Ваш код може перевірити границеві рамки, побачити, що вони повністю перекриваються, і ігнорувати нижчу ймовірність, оскільки неможливо, щоб одна банка була всередині іншої.
✅ Чи можете ви придумати ситуацію, коли є сенс виявляти один об'єкт всередині іншого?
Перенавчання моделі
Як і у випадку з класифікатором зображень, ви можете перенавчати вашу модель, використовуючи дані, отримані вашим IoT-пристроєм. Використання цих реальних даних забезпечить ефективну роботу моделі при використанні з IoT-пристроєм.
На відміну від класифікатора зображень, ви не можете просто позначити зображення. Натомість вам потрібно переглянути кожну границеву рамку, виявлену моделлю. Якщо рамка охоплює неправильний об'єкт, її потрібно видалити, якщо вона знаходиться в неправильному місці — її потрібно скоригувати.
Завдання - перенавчання моделі
-
Переконайтеся, що ви отримали різноманітні зображення за допомогою вашого IoT-пристрою.
-
У вкладці Predictions виберіть зображення. Ви побачите червоні рамки, що вказують на границеві рамки виявлених об'єктів.
-
Перегляньте кожну границеву рамку. Спочатку виберіть її, і ви побачите спливаюче вікно з тегом. Використовуйте ручки на кутах рамки, щоб скоригувати її розмір, якщо це необхідно. Якщо тег неправильний, видаліть його за допомогою кнопки X і додайте правильний тег. Якщо рамка не містить об'єкта, видаліть її за допомогою кнопки з іконкою смітника.
-
Закрийте редактор після завершення, і зображення переміститься з вкладки Predictions до вкладки Training Images. Повторіть процес для всіх прогнозів.
-
Використовуйте кнопку Train, щоб перенавчити вашу модель. Після завершення навчання опублікуйте ітерацію та оновіть ваш IoT-пристрій для використання URL нової ітерації.
-
Повторно розгорніть ваш код і протестуйте ваш IoT-пристрій.
Підрахунок запасів
Використовуючи комбінацію кількості виявлених об'єктів і границевих рамок, ви можете підрахувати запаси на полиці.
Завдання - підрахунок запасів
Скористайтеся відповідним посібником нижче, щоб підрахувати запаси, використовуючи результати детектора об'єктів з вашого IoT-пристрою:
🚀 Виклик
Чи можете ви виявити неправильні запаси? Навчіть вашу модель на кількох об'єктах, а потім оновіть ваш додаток, щоб він сповіщав вас, якщо виявлено неправильний товар.
Можливо, навіть підіть далі і виявляйте товари поруч на одній полиці, перевіряючи, чи щось було поставлено не на своє місце, визначаючи межі границевих рамок.
Тест після лекції
Огляд і самостійне навчання
- Дізнайтеся більше про те, як спроєктувати систему виявлення запасів від початку до кінця, з посібника з шаблону виявлення відсутніх запасів на краю на Microsoft Docs
- Дізнайтеся про інші способи створення роздрібних рішень від початку до кінця, комбінуючи різноманітні IoT та хмарні сервіси, переглянувши відео "Behind the scenes of a retail solution - Hands On!" на YouTube.
Завдання
Використовуйте ваш детектор об'єктів на краю
Відмова від відповідальності:
Цей документ був перекладений за допомогою сервісу автоматичного перекладу Co-op Translator. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.