ВСТУПЛЕНИЕ

С каждым днем ​​конкуренция на розничном рынке резко возрастает, поэтому резко возросла способность оптимизировать услуги и бизнес-процессы, пытаясь удовлетворить ожидания клиентов. Чтобы оставаться конкурентоспособными, крупные игроки розничной торговли по всему миру вообще применяют аналитику. этапы розничного процесса - отслеживание появляющихся и популярных продуктов, прогнозирование продаж и будущего спроса с помощью прогнозного моделирования, предложения с помощью теплового картографирования клиентов и многое другое. Даже несмотря на то, что розничные торговцы собирают огромные объемы данных из транзакционных систем, чтобы помочь в принятии решений, максимально использовать эти данные может быть непросто. В 2016 году розничные торговцы в США и Европе использовали лишь около 30–40 процентов всех доступных им бизнес-данных.

Здесь наше решение вступает в игру. Идентифицируя клиентов (на данный момент тех, кто выбрал членство в магазине) и оценивая их прошлые покупки, магазин может предложить определенные продукты, которые могут быть интересны покупателям, находя наиболее подходящий способ обращения с ними с помощью целевых маркетинговых стратегий (реальных -время предложений), а потом придумываю, что продавать дальше.

СТРАТЕГИЧЕСКАЯ СФЕРА РОЗНИЧНОЙ ТОРГОВЛИ

Хотя аналитика не так распространена, как в других вертикальных сегментах, она все же смогла показать себя полезной в розничной торговле, некоторые из которых включают:

  • Снижение оттока
  • Прогнозирование спроса
  • Эффективность скидки
  • Пояснительная аналитика
  • Прогнозирование тенденций
  • Прогноз производительности в будущем
  • Выявление клиентов
  • Оптимизация цен

ИДЕЯ

Идея вращается вокруг ограничения потока данных только одним источником, то есть камерами. Распознавание лиц будет использоваться для обнаружения покупателей внутри магазина и перекрестной проверки из базы данных магазина для подтверждения их статуса членства. Участникам, которые выбрали эту услугу, предоставляются скидки на товары, которые они недавно искали, например, пару синих джинсов Levi’s. Это достигается путем отслеживания перемещений участников и определения того, какой предмет одежды и бренд им интересны, с помощью функции распознавания объектов. Так что скидки можно давать «на лету».

ГЕКИНОВИЧ

Для большей части этого проекта, то есть обучения и тестирования, основным фактором, очевидно, были данные, нагрузки и нагрузки, которые в основном не были разделены на категории. Некоторые из этих данных были получены из комбинации наборов данных, чтобы получить тот набор данных, который я искал. Сюда входят, среди прочего, наборы данных Продажи одежды по типам магазинов и Розничные продажи по категориям. Для непосвященных это то, что подпадает под категорию интеллектуального анализа данных - вычислительный процесс обнаружения закономерностей в больших наборах данных с использованием количественных методов. Это включает в себя поиск скрытых закономерностей и взаимосвязей в больших базах данных и определение правил для прогнозирования будущего поведения с вероятностью их возникновения.

Каждая категория более продвинута с точки зрения сложности, уровня автоматизации, объема требуемых данных, сложности применения метода и ценности для бизнеса. Каждая категория также представляет собой снижение уровня человеческого участия, необходимого для принятия решений.

Описательная аналитика сообщает нам, что произошло, когда и где. Диагностическая аналитика говорит нам, почему. Прогнозная аналитика идет еще дальше, сообщая нам, что может произойти, и предписывающая аналитика, что мы можем сделать, чтобы сделать конкретный результат более вероятным. Наконец, когнитивная аналитика советует нам, что лучше всего предпринять.

РЕАЛИЗАЦИЯ

Чтобы создать этот PoC, я смешал и сопоставил множество различных комбинаций базовой машины, камер, программного обеспечения для логических выводов и оборудования для логических выводов, прежде чем завершить приведенную ниже настройку:

КАМЕРА

Камера (камера Logitech с качеством 4K Ultra HD) имела встроенные функции регулировки света и поле обзора 90 градусов, что позволило мне меньше беспокоиться о таких факторах, как минимизация фонового шума и визуальных помех. Более того, благодаря встроенным возможностям записи изображения / видео, а также возможности переключения между 3 различными полями обзора и качеством 4K, это была лучшая камера.

INTEL ® DEVCLOUD

Большую часть этого проекта я использовал сервис Intel IoT Edge on the Cloud.

Основной причиной этого был доступ к новейшему оборудованию Intel®, оптимизированным фреймворкам Intel®, новейшим инструментам компьютерного зрения и 50 ГБ файлового хранилища, что обеспечило мне возможность обучать свою модель и легко выполнять логический вывод со своего ноутбука, не беспокоясь о правильная конфигурация или проблемы с перегревом из-за длительного обучения.

OPENVINO ™ TOOLKIT И ASYNC API

Для целей логического вывода я использовал возможности инструментария Intel Open Visual Inference & Neural Network Optimization (OpenVINO ™), в частности следующие:

  • Вывод на основе глубокого обучения на основе сверточной нейронной сети (CNN)
  • Гетерогенное выполнение на ускорителях набора инструментов OpenVINO - ЦП и Intel® Movidius ™ Neural Compute Stick
  • Оптимизированные вызовы для стандартов CV, включая OpenCV *, OpenCL ™ и OpenVX.

Чтобы узнать больше об OpenVINO ™ Toolkit, его возможностях и этапах установки, вы можете перейти по ссылкам здесь и здесь.

После того, как установка была завершена, и модель была готова, все, что требовалось, - это протестировать ее. К счастью, этот инструментарий предоставляет отличный способ гарантировать, что модель, обученная с использованием таких фреймворков, как TensorFlow и Caffe, настроена для оптимального выполнения на конечных устройствах. Это можно сделать, перейдя в папку - ‹INSTALL_DIR› / deployment_tools / и запустив mo_tf.py и mo.py соответственно.

Использование асинхронного API может улучшить общую частоту кадров приложения, потому что вместо того, чтобы ждать завершения вывода, приложение может продолжать делать что-то на хосте, пока ускоритель занят. В частности, в этой демонстрации хранятся два параллельных запроса вывода, и пока обрабатывается текущий, захватывается входной кадр для следующего. Это по существу скрывает задержку захвата, так что общая частота кадров скорее определяется МАКСИМАЛЬНЫМ (время обнаружения, время захвата входных данных), а не СУММОМ (время обнаружения, время захвата входных данных).

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

СОБИРАЕМ ВСЕ ВМЕСТЕ - КОД

Теперь, когда мы рассмотрели все отдельные элементы, пришло время поговорить о клее, который их связывает. Код разбивает весь процесс на эти 3 потока:

  • Видео в качестве входных данных поддерживается с использованием OpenCV и подается в модель с помощью OpenCV, предоставляющего ограничивающие рамки, метки и другую информацию. Код видео, поддерживаемого для вывода, можно увидеть ниже:
videoHTML(‘IEI Tank + Myriad (Intel® Core + Movidius NCS 2)’,[‘results/myriad/inference_output_Video_0.mp4’, ‘results/myriad/inference_output_Video_1.mp4’,,’results/core/Statistics.mp4'], ‘results/myriad/stats.txt’)
  • Логический вывод выполняется на граничных вычислительных узлах с различными целевыми вычислительными устройствами. Код отправки на узел с Intel® Neural Compute Stick 2 выглядит следующим образом:
print(“Submitting a job to an edge compute node with Intel Movidius NCS 2…”)
#Submit job to the queue
job_id_myriad = !qsub shopper_detection_job.sh -l nodes=1:tank-870:i5–6500te:intel-ncs2 -F “results/myriad MYRIAD FP16 3” -N monitor_myriad
print(job_id_myriad[0])
corne#Progress indicators
if job_id_myriad:
progressIndicator(‘results/myriad’, ‘i_progress_’+job_id_myriad[0]+’.txt’, “Inference”, 0, 100)
  • Визуализация полученных ограничивающих рамок. Код визуализации узла с помощью Intel® Neural Compute Stick 2 выглядит следующим образом:
stats_list = []
stats_list.append((‘results/myriad/stats.txt’, ‘Intel\nNCS2’))
summaryPlot(stats_list, ‘Architecture’, ‘Time, seconds’, ‘Inference Engine Processing Time’, ‘time’)
summaryPlot(stats_list, ‘Architecture’, ‘Frames per second’, ‘Inference Engine FPS’, ‘fps’)

РЕЗУЛЬТАТ

Теперь, когда основная работа сделана, пришло время визуализировать производительность в различных архитектурах. Что касается времени обработки логического вывода, то Intel Xeon занял меньше всего времени, очевидно, за ним следуют процессор и графический процессор Intel Core i5.

Что касается количества кадров в секунду, то Intel Xeon достиг пика 155, за ним следуют процессор и графический процессор Intel Core i5 и 127 и 11 соответственно.

ЗАКЛЮЧЕНИЕ

PoC оказался намного лучше, чем ожидалось изначально, особенно благодаря OpenVINO ™ Toolkit вместе с возможностями Intel® DevCloud. Следует отметить, что хотя я ограничил объем этой статьи включением только тех компонентов, которые я использовал в окончательной версии PoC, можно также использовать следующие компоненты для того же - Intel AI Vision Kit , который поставляется с набором инструментов OpenVINO, предварительно установленным на плате UP Squared, и Intel® RealSense ™ Camera, который не только оценивает глубину, но также извлекает и записывает трехмерную информацию в формате .bag. , которыми можно управлять, используя инструкции здесь.

ЧТО ДАЛЬШЕ?

Теперь, когда у меня есть готовая PoC, пришло время сделать из нее работоспособное решение. Один из них - получать все больше и больше данных и способствовать онлайн-обучению, чтобы модель могла улучшить свои ошибки, а второй - связывать ее с базой данных для хранения и поиска данных.

Спасибо, что нашли время прочитать статью до этого момента. Проект опубликован на Intel DevMesh, и все соответствующие детали проекта можно найти там. Если вы хотите внести свой вклад в этот проект или любой из проектов, упомянутых в моей ленте, не стесняйтесь бросить письмо, если вам интересно.