Создайте систему управления запасами в реальном времени за 6 часов с помощью Streamlit и YOLOv5
Краткая статья, объясняющая, как эффективно обучить алгоритм обнаружения объектов YOLOv5 на собственном пользовательском наборе данных и использовать его для создания веб-приложения , которое можно использовать в режиме реального времени.
Необходимость делиться открытиями специалистов по данным возросла из-за растущего использования Python в качестве их предпочтительного языка программирования, кросс-платформенный подход с адекватным взаимодействием — это использование веб-приложений. Однако типичное программирование требует от пользователей Python достаточного опыта работы с довольно сложными веб-фреймворками, такими как Flask и Django. Даже если изучение этих фреймворков не представляет особой сложности для любого умеренного пользователя Python, специалистам по данным может быть сложно продемонстрировать свою работу по науке о данных.
стримлит
Таким образом, фреймворк Streamlit предоставляет сегодня специалистам по данным лучший выбор. Он быстро и легко преобразует простые скрипты Python в полезные, интерактивные и общедоступные веб-приложения. Из-за того, что он ориентирован на демонстрацию решений для науки о данных, он поставляется со встроенной поддержкой моделей данных и графиков, которые создаются с использованием популярных библиотек для обработки данных, таких как pandas и matplotlib. Поэтому, если вы уже знакомы с Python, изучение Streamlit будет относительно легким.

Задача
В этой статье я хочу сделать еще один шаг вперед, показав, как опубликовать ваше веб-приложение, чтобы другие могли просматривать ваши модели ИИ в режиме реального времени. Более того, я покажу, как создать систему управления запасами, которая управляет холодными напитками в режиме реального времени. В нашем проекте мы будем использовать Streamlit для создания нашего веб-приложения и SQLite в качестве базы данных.
Я буду использовать набор данных SKU-110K для создания собственного набора данных для идентификации холодных напитков, таких как Coca-Cola, Sprite, Pepsi, Mountain Dew, 7UP и Fanta. В SKU-110K много некачественных фотографий, поэтому пришлось их отфильтровать, выбрать лучшие и аннотировать библиотекой labelImg . который помогает вам аннотировать изображения во многих форматах хранения, включая YOLO и CreateML, а также формат PASCAL VOC. Это полезный инструмент для аннотирования данных для обнаружения объектов.
Подготовка
После того, как аннотации будут сделаны, мы обучим их, используя yolov5, которая представляет собой модель обнаружения и классификации объектов. Теперь мы кратко рассмотрим архитектуру YOLOv5.
Поскольку YOLOv5 является одноступенчатым детектором объектов, он, как и любой другой одноступенчатый детектор объектов, состоит из трех важных частей.
Базовая модель модели
Основная функция Model Backbone — определить ключевые особенности входного изображения.
Для извлечения ценных и полезных характеристик из входного изображения в YOLO v5 в качестве основы используется CSPDarkNet (CSP — Cross Stage Partial Networks). Он использует метод CSPNet, который делит карту объектов базового слоя на две части, а затем объединяет их с помощью иерархии между этапами.
Даркнет быстрый и очень точный, что является ключевым требованием для семейства YOLO.
Шея модели
PANet (сеть агрегации путей) используется в качестве шеи в YOLO v5 для получения пирамид функций. Пирамиды признаков являются основным компонентом систем распознавания для обнаружения объектов в различных масштабах.
Роль шеи модели состоит в том, чтобы собирать детали с разных стадий. Шейка состоит из нескольких путей сверху вниз и нескольких путей снизу вверх. PANet использует функции всех слоев и решает, какие из них полезны.
Голова модели
Он использует якорные блоки для построения окончательных выходных векторов с вероятностями классов, показателями объектности и ограничивающими рамками.
Голова отвечает за:
оценку объектности (вероятность того, что объект находится в пределах якоря)
класс (число, т.е. 1, которое соответствует классу, например, человек)
достоверность класса (вероятность того, что указанный выше класс верен)
ограничение координаты блока, т.е. [x, y, w, h] [120, 300, 200, 400]
Входные данные сначала передаются в CSPDarknet для извлечения функций, а затем передаются в PANet для слияния функций (пирамида функций). Наконец, Yolo Layer выводит результаты обнаружения (класс, оценка, местоположение, размер).

Рабочий процесс

На целевой странице у вас есть два варианта: вы можете перейти к персоналу или администратору.
Используя streamlit_webrtc , который облегчает связь в реальном времени, мы сможем обнаруживать изображения в реальном времени, выполняя обнаружение кадров, захваченных из видео в реальном времени в бэкэнде.

Вы также можете использовать перетаскивание или загрузку изображений для обнаружения изображений, как показано ниже.

Используя три поля — «Дата», «Название напитка» и «Количество» — мы сохраняем результаты в нашей базе данных sqlite, что помогает конечному пользователю ежедневно поддерживать запасы и проверять количество. как показано ниже

Вывод
В этом посте я рассказал о том, как построить систему управления запасами с использованием модели обнаружения объектов Yolov5 в пользовательском наборе данных .
Если вы хотите поэкспериментировать с пользовательским набором данных самостоятельно, вы можете загрузить аннотированные данные на Kaggle и код на Github , веб-приложение развернуто здесь .
Спасибо за чтение. Я буду производить дополнительные посты для начинающих в будущем. Чтобы узнать о них больше, подписывайтесь на меня на Medium . Я всегда открыт для предложений и конструктивной критики, и мой аккаунт в Твиттере — @FaseehAhmed2606.