Решение:
Вызов
Крупные розничные торговцы и специализированные компании должны собирать данные о ценах конкурентов, чтобы иметь возможность предлагать своим покупателям лучшую цену. Чтобы ускорить и автоматизировать процесс сбора цен и улучшить качество данных, можно сделать снимок полки продуктового магазина с необходимыми предметами. Затем, с использованием технологии компьютерного зрения, система распознает предметы и определяет их названия и цены.
Сложность этого процесса связана с:
- Большой выбор входных данных;
- Сложные бизнес-процессы клиентов, например, наличие очень похожих товаров от разных производителей или добавление / удаление новых SKU из области мониторинга;
- Предметы, которые имеют похожий внешний вид, но могут отличаться;
- Разные объемы упаковки в одном и том же товаре;
- Разные названия одного и того же товара в разных магазинах.
Решение
После того, как фотография сделана, мобильное приложение отправляет изображение в хранилище S3. Затем, используя адрес изображения на S3, мобильное приложение отправляет на сервер запрос распознавания. Затем сервер создает задачу для идентификации в базе данных и ставит в очередь адрес изображения. С другой стороны очереди находятся «работники идентификации», которые загружают изображение из хранилища данных и идентифицируют его.
Результаты хранятся в базе данных, из которой мобильное приложение получает результаты. После этого сотрудник проверяет выявленные должности. В случае ошибки сотрудник может ввести данные вручную. Скорректированные данные можно использовать позже для дальнейшего обучения моделей.
Конвейер идентификации работает следующим образом:
Изображения идентифицируются детектором, который определяет местонахождение и ценники товаров. Расположение позиций отправляется для классификации продуктов, а ценники отправляются для считывания цен. Идентифицированные предметы и ценники дополнительно сравниваются друг с другом, используя их пространственное расположение на изображении.
Найденные пары продукт-цена в дальнейшем используются при классификации объема упаковки. Здесь теория состоит в том, что предмет с меньшей емкостью стоит меньше, чем предмет с большей емкостью. Наконец, идентифицированный продукт и его цена возвращаются клиенту.
Используемые технологии:
- Языки программирования: Python, GO
- Фреймворки глубокого обучения: Pytorch, Tensorflow
- База данных: Postgres DB
- Очередь: RabbitMQ