RU2785327C1 - Computer vision system in retail - Google Patents

Computer vision system in retail Download PDF

Info

Publication number
RU2785327C1
RU2785327C1 RU2022129307A RU2022129307A RU2785327C1 RU 2785327 C1 RU2785327 C1 RU 2785327C1 RU 2022129307 A RU2022129307 A RU 2022129307A RU 2022129307 A RU2022129307 A RU 2022129307A RU 2785327 C1 RU2785327 C1 RU 2785327C1
Authority
RU
Russia
Prior art keywords
block
stream
frame
queue
frames
Prior art date
Application number
RU2022129307A
Other languages
Russian (ru)
Inventor
Екатерина Юрьевна Латышева
Руслан Михайлович Воробьёв
Кирилл Николаевич Золотько
Сергей Николаевич Терехов
Original Assignee
Общество С Ограниченной Ответственностью "Цера Маркетинг"
Filing date
Publication date
Application filed by Общество С Ограниченной Ответственностью "Цера Маркетинг" filed Critical Общество С Ограниченной Ответственностью "Цера Маркетинг"
Application granted granted Critical
Publication of RU2785327C1 publication Critical patent/RU2785327C1/en

Links

Images

Abstract

FIELD: computer technology.
SUBSTANCE: invention relates to the field of computer technology. A computer vision system in retail contains a set of video cameras for capturing images connected by a single network with a server. The block for capturing the stream from cameras is located on the server and is configured to independently read frames from the stream of a set of video cameras using a queuing mechanism that buffers the frames necessary for processing, and the block captures each current frame from the stream, arriving at a frequency pre-set on the camera, and if the difference between the two fixed time characteristics exceeds or equals the threshold value, the frame is decoded and buffered into the queue variable, and if the queue variable is overflowing, the frame is skipped. The detector block is an artificial neural network that receives frames from the queue formed by the camera stream capture block and returns the coordinates of the contours of predetermined objects to be detected. Analyzer block configured to compare the detected objects detected by the detector unit with the reference states stored in the database and classify the types of inconsistencies. The block for sending notifications and visualization is configured to send the results of the identified inconsistencies of the analyzer block to the graphical user interface.
EFFECT: technical result is to improve the accuracy of detection of small and closely spaced objects.
3 cl, 8 dwg

Description

ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY

[001] Данное техническое решение в общем относится к области вычислительной техники, а в частности к способам и системам компьютерного зрения в ритейле. Изобретение предназначено для интеллектуального сбора и анализа информации с камер наблюдения торговых сетей розничной торговли, например, в кассовой зоне и/или зоне присутствия товара.[001] This technical solution generally relates to the field of computing, and in particular to methods and systems of computer vision in retail. The invention is intended for the intelligent collection and analysis of information from surveillance cameras of retail chains, for example, in the cash register area and/or the product presence area.

УРОВЕНЬ ТЕХНИКИBACKGROUND OF THE INVENTION

[002] В сфере FMCG высокий товарооборот является основой получения хорошей прибыли. Автоматизация процессов продаж - основной показатель повышения эффективности.[002] In the FMCG industry, high turnover is the basis for making good profits. Automation of sales processes is the main indicator of efficiency improvement.

[003] Известны различные электронные системы для обслуживания продажи товаров, во многом автоматизирующие процесс продажи товаров, позволяя его учитывать, вести базы данных, при продаже считывать графическую маркировку на товаре, соотносить ее с базой данных, определять по ней товар и автоматически формировать чек для покупки товара. При этом недостаточная степень автоматизации процесса продажи весовых товаров в узлах расчета супермаркетов обусловлена невозможностью автоматически определять товары, не имеющие специальной графической маркировки (штрих-код) для автоматического формирования чека на оплату.[003] There are various electronic systems for servicing the sale of goods, largely automating the process of selling goods, allowing it to be taken into account, maintain databases, read the graphic markings on the product during the sale, correlate it with the database, determine the product from it and automatically generate a receipt for purchase of goods. At the same time, the insufficient degree of automation of the process of selling weighted goods in supermarkets is due to the inability to automatically identify goods that do not have a special graphic marking (barcode) for automatically generating a receipt for payment.

[004] Также большой проблемой современных супер- и гипермаркетов являются многочисленные очереди на кассах в «часы пик» массового захода покупателя.[004] Also a big problem of modern super- and hypermarkets are the numerous queues at the checkouts during the "peak hours" of the mass call of the buyer.

[005] Так известна из уровня техники электронная система для обслуживания продажи товаров, включающая в себя по меньшей мере одну видеокамеру, соединенную посредством объединенной сети с сервером, включающим соединенные друг с другом блок приема, входящий информации с видеокамеры, вычислительный модуль, блок хранения базы данных товаров, см. патент на полезную модель РФ №94739, опубликованный 27.05.2010 г.[005] So known from the prior art is an electronic system for servicing the sale of goods, including at least one video camera connected via a unified network to a server, including a receiving unit connected to each other, incoming information from the video camera, a computing module, a base storage unit of these goods, see utility model patent of the Russian Federation No. 94739, published on May 27, 2010.

[006] Данная система для обслуживания продажи товаров является наиболее близкой по технической сути и достигаемому техническому результату и выбрана за прототип предлагаемого изобретения.[006] This system for servicing the sale of goods is the closest in technical essence and achieved technical result and is selected as a prototype of the present invention.

[007] Недостатком этого прототипа является недостаточная степень автоматизации процесса продажи товаров за счет невозможности автоматически определять товары, не имеющие специальной графической маркировки (штрихкод или QR-кода), автоматически формировать чек для оплаты и производить расчет, а также регистрировать покупателей и их действия для исключения недобросовестных действий со стороны покупателей (воровства товаров).[007] The disadvantage of this prototype is the insufficient degree of automation of the process of selling goods due to the inability to automatically detect goods that do not have a special graphic marking (barcode or QR code), automatically generate a check for payment and make a calculation, as well as register buyers and their actions for exclusion of dishonest actions on the part of buyers (theft of goods).

СУЩНОСТЬ ТЕХНИЧЕСКОГО РЕШЕНИЯESSENCE OF THE TECHNICAL SOLUTION

[008] Технической задачей или технической проблемой, решаемой в данном техническом решении, является осуществление системы компьютерного зрения в ритейле.[008] The technical challenge or technical problem to be solved in this technical solution is the implementation of a computer vision system in retail.

[009] Полезный технический эффект в системе достигается за счет повышения точности детектирования мелких и близкорасположенных объектов, например, товаров, а также точности определения возникновения события очереди, что подтверждают тестовые замеры в проведенных пилотных проектах с конкурентами в данной области технических решений.[009] A useful technical effect in the system is achieved by improving the accuracy of detecting small and nearby objects, for example, goods, as well as the accuracy of determining the occurrence of a queue event, which is confirmed by test measurements in pilot projects conducted with competitors in this field of technical solutions.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

[0010] Признаки и преимущества настоящего технического решения станут очевидными из приведенного ниже подробного описания и прилагаемых чертежей, на которых:[0010] The features and advantages of the present technical solution will become apparent from the following detailed description and the accompanying drawings, in which:

[0011] На Фиг. 1 показан пример реализации работы системы компьютерного зрения в ритейле.[0011] In FIG. 1 shows an example of the implementation of the computer vision system in retail.

[0012] На Фиг. 2 показан пример реализации корректного монтажа камер с размеченными кассовыми зонами.[0012] In FIG. Figure 2 shows an example of the correct installation of cameras with marked checkout areas.

[0013] На Фиг. 3 показан рабочий процесс модуля очередей.[0013] In FIG. Figure 3 shows the workflow of the queue module.

[0014] На Фиг. 4 показан вариант реализации "боксов" детекций голов людей.[0014] In FIG. 4 shows a variant of the implementation of "boxes" for detecting people's heads.

[0015] На Фиг. 5 показан пример реализации уведомлений об очереди в мессенджер.[0015] In FIG. 5 shows an example of the implementation of notifications about the queue in the messenger.

[0016] На Фиг. 6 показан скриншот с камеры модуля полок.[0016] In FIG. 6 shows a screenshot from the shelf module camera.

[0017] На Фиг. 7 показан рабочий процесс модуля полок.[0017] In FIG. 7 shows the workflow of the shelf module.

[0018] На Фиг. 8 показана визуализация процессов в блоке предварительной обработки слева-направо: кадр со скорректированной дисторсией, нарезанные и выпрямленные полки после применения томографии, нарезанные полки отправляются к детектору.[0018] In FIG. Figure 8 shows the visualization of the processes in the pre-processing block from left to right: a frame with corrected distortion, cut and straightened shelves after applying tomography, cut shelves are sent to the detector.

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF THE INVENTION

[0019] Ниже будут подробно рассмотрены термины и их определения, используемые в описании технического решения.[0019] Below will be discussed in detail the terms and their definitions used in the description of the technical solution.

[0020] В данном изобретении под системой подразумевается компьютерная система, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность операций (действий, инструкций), централизованные и распределенные базы данных, смарт-контракты.[0020] In this invention, the system refers to a computer system, a computer (electronic computer), CNC (numerical control), PLC (programmable logic controller), computerized control systems and any other devices capable of performing a given, well-defined sequence of operations (actions, instructions), centralized and distributed databases, smart contracts.

[0021] Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы), смарт-контракт, виртуальная машина Ethereum (EVM) или подобное. Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных. В роли устройства хранения данных могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, ПЗУ (постоянное запоминающее устройство), твердотельные накопители (SSD), оптические приводы.[0021] A command processing device refers to an electronic unit or an integrated circuit (microprocessor) executing machine instructions (programs), a smart contract, an Ethereum virtual machine (EVM), or the like. An instruction processing device reads and executes machine instructions (programs) from one or more data storage devices. The role of a storage device can be, but not limited to, hard disk drives (HDD), flash memory, ROM (read only memory), solid state drives (SSD), optical drives.

[0022] Программа - последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины или устройством обработки команд.[0022] A program is a sequence of instructions intended to be executed by a computer control device or command processing device.

[0023] Изобретение относится к электронно-вычислительным системам для обслуживания продаж в сфере FMCG и может быть использовано в торговых сетях.[0023] The invention relates to electronic computing systems for servicing sales in the field of FMCG and can be used in retail chains.

[0024] FMCG - (от англ. Fast Moving Consumer Goods) - общее название для товаров повседневного потребления широким кругом покупателей, которые стоят относительно дешево и быстро продаются;[0024] FMCG - (From the English. Fast Moving Consumer Goods) - the general name for goods of daily consumption by a wide range of buyers, which are relatively cheap and quickly sold;

[0025] PLU-код - (от англ. Price-LookUp (PLU)) - система для точной идентификации товаров.[0025] PLU-code - (from the English Price-LookUp (PLU)) - a system for accurate identification of goods.

[0026] Датасет - (от англ. Data set) - набор данных.[0026] Dataset - (from the English. Data set) - a set of data.

[0027] POS-терминал (от англ. Point Of Sale - точка продажи) - программно-аппаратный комплекс, который установлен на рабочем месте кассира.[0027] POS-terminal (from the English. Point Of Sale - point of sale) - a software and hardware system that is installed at the cashier's workplace.

[0028] ЦОД - центр обработки данных.[0028] DPC - data processing center.

[0029] Сервер (англ. server) - электронное устройство, выполняющий сервисные функции по запросу клиента, предоставляя ему доступ к определенным ресурсам. В целях настоящего описания рассматривается сервер, имеющий постоянное подключение к объединенной сети, которая может передавать данные на сервер с клиентских устройств. Сервер может обрабатывать эти данные и передавать результат обработки обратно на клиентское устройство.[0029] Server (English server) - an electronic device that performs service functions at the request of the client, providing him with access to certain resources. For the purposes of this description, a server is considered that has a permanent connection to an internetwork that can transmit data to the server from client devices. The server can process this data and send the result of processing back to the client device.

[0030] Объединенная сеть, а также все соединения между всеми модулями и блоками включают в себя различные топологии, конфигурации и компоновки компонентов межсетевого соединения, выполненные с возможностью соединять между собой корпоративные, глобальные и локальные вычислительные сети, и включает в себя, без ограничения, традиционные проводные, беспроводные, спутниковые, оптические и эквивалентные сетевые технологии.[0030] The internetwork, as well as all connections between all modules and blocks, includes various topologies, configurations and layouts of interconnection components, made with the ability to interconnect corporate, global and local computer networks, and includes, without limitation, traditional wired, wireless, satellite, optical and equivalent network technologies.

[0031] Блок ввода изображений или прочих данных - это блок сервера, который может представлять приемник входящих сигналов, и преобразователь их для последующей обработки.[0031] An image or other data input block is a server block that can represent a receiver of incoming signals and a converter for further processing.

[0032] Вычислительный блок - это блок сервера, который представляет собой микропроцессор, специально приспособленный для обработки сигналов.[0032] A computing unit is a server unit, which is a microprocessor specially adapted for signal processing.

[0033] База данных или блок хранения базы данных - это блок сервера, в котором хранятся данные, соответствующие данному модулю данных, который может быть выполнен как накопитель на жестком магнитном диске, или как флэш-память (flash memory), которая относится к полупроводникам электрически перепрограммируемой памяти. При этом некоторые модули могут быть объединены в отдельных реализациях. Например, разные базы данных могут храниться в одном модуле памяти.[0033] A database or database storage unit is a server unit that stores data corresponding to a given data unit, which can be implemented as a hard disk drive, or as flash memory, which refers to semiconductors electrically reprogrammable memory. However, some modules can be combined in separate implementations. For example, different databases can be stored in the same memory module.

[0034] Клиентское устройство покупателя - любая форма вычислительной платформы, подключаемая к сети, такой как объединенная сеть, и допускающая взаимодействие с прикладными программами. Типичные примеры отдельных клиентских устройств включают в себя, без ограничения, стационарные и переносные персональные вычислительные машины, "интеллектуальные" сотовые телефоны, (на английском - смартфон), переносные компьютеры, включая планшетные, облегченные клиенты, рабочие станции, "неинтеллектуальные" терминалы, соединенные с сервером приложений, а также различные их компоновки и конфигурации, то есть как физические устройства для осуществления взаимодействия в системах коммуникационного взаимодействия, так и виртуальные устройства, реализуемые на программируемых компьютерных устройствах, и имеющие программный интерфейс для осуществления функций коммуникации.[0034] A customer's client device is any form of computing platform connected to a network, such as a internetwork, and capable of interacting with application programs. Typical examples of individual client devices include, but are not limited to, desktop and portable personal computers, "intelligent" cellular phones, (in English - smartphone), portable computers, including tablets, lightweight clients, workstations, "dumb" terminals, connected with the application server, as well as their various layouts and configurations, that is, both physical devices for interacting in communication interaction systems, and virtual devices implemented on programmable computer devices and having a software interface for implementing communication functions.

[0035] Нейросеть - (искусственная нейронная сеть) - математическая модель, а также ее программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей - сетей нервных клеток живого организма. Нейронные сети не программируются, а обучаются, когда производится нахождение коэффициентов связей между нейронами. В случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или «зашумленных», частично искаженных данных. [0036] Near field communication, NFC («коммуникация ближнего поля», «ближняя бесконтактная связь») - технология беспроводной высокочастотной связи малого радиуса действия, которая дает возможность обмена данными между устройствами, находящимися на расстоянии около 10 сантиметров.[0035] Neural network - (artificial neural network) - a mathematical model, as well as its software or hardware implementation, built on the principle of organization and functioning of biological neural networks - networks of nerve cells of a living organism. Neural networks are not programmed, but are trained when the coefficients of connections between neurons are found. In case of successful training, the network will be able to return the correct result based on the data that was missing in the training sample, as well as incomplete and / or “noisy”, partially distorted data. [0036] Near field communication, NFC (“near field communication”, “near contactless communication”) is a short-range wireless high-frequency communication technology that allows the exchange of data between devices located at a distance of about 10 centimeters.

[0037] QR-код (с англ. "quick response" означает "быстрый отклик") или баркод, матричный код (двумерный штрихкод), который кодирует любую информацию, будь-то обычный текст или ссылка на сайт.[0037] A QR code (from the English "quick response" means "quick response") or a barcode, a matrix code (two-dimensional barcode) that encodes any information, be it plain text or a link to a website.

[0038] Как показано на Фиг. 1, система может включать следующие примеры реализации: модуль очередей, модуль полок и ценников.[0038] As shown in FIG. 1, the system may include the following implementation examples: queue module, shelf and price tag module.

[0039] Стоит отметить, что заявленное техническое решение может осуществляться как, например, модуль очередей или как модуль полок и ценников, или включать реализации сразу двух указанных и более модулей. Это прикладное применение заявленной системы компьютерного зрения.[0039] It is worth noting that the claimed technical solution can be implemented as, for example, a queue module or as a shelf and price tag module, or include implementations of two or more of these modules at once. This is an application application of the claimed computer vision system.

[0040] Каждый модуль выполняет свои задачи, имеет свой источник информации, результаты двух модулей могут аккумулироваться в общем графическом интерфейсе пользователя (GUI), чтобы сотрудник магазина или алгоритм искусственного интеллекта в любой момент мог получить визуальную и информацию об общем статусе магазина в разрезе событий у касс и у полок или применяться обособленно.[0040] Each module performs its tasks, has its own source of information, the results of the two modules can be accumulated in a common graphical user interface (GUI) so that a store employee or an artificial intelligence algorithm can at any time receive visual and information about the general status of the store in the context of events at cash registers and shelves or used separately.

[0041] Модули очередей и полок технически организованы в виде docker-контейнеров, связь между контейнерами осуществляется с помощью POST-запросов. В специально отведенном контейнере под вычисления на GPU (графический процессор) реализованы нейронные сети, есть контейнер для вычислительных задач на CPU (центральный процессор) и взаимодействия с базой данных, а также есть контейнер, в котором содержится frontend часть системы.[0041] The modules of queues and shelves are technically organized as docker containers, communication between containers is carried out using POST requests. In a specially designated container for computing on the GPU (graphic processor), neural networks are implemented, there is a container for computing tasks on the CPU (central processing unit) and interaction with the database, and there is also a container that contains the frontend part of the system.

[0042] Рассмотрим каждый модуль в отдельности.[0042] Consider each module separately.

[0043] Модуль очередей предназначен для подсчета людей в кассовой зоне магазина и отправки уведомлений об очередях с компьютера в телеграмм-чат, на почту директору магазина или в виде звукового сигнала в магазине. Есть ограничения на количество рекомендуемых камер на один сервер, они зависят от характеристик используемой видеокарты. Например, для видеокарты GTX 1060 максимальное число камер 30, если камер будет больше, не будет соблюден режим реального времени при обработке, что повлечет за собой появление ложных не срабатываний модуля. Ограничений по выбору моделей камер нет. Для корректной работы модуля очередей необходимо соблюдение условий монтажа камер. При корректном монтаже в поле зрения каждой камеры будет находиться одна кассовая зона, голова каждого человека в зоне будет крайне редко пересекаться с другими головами или препятствиями, то есть люди не будут друг друга загораживать на видео с камеры, а также не будут скрываться за препятствиями. На Фиг. 2 представлены примеры корректного монтажа.[0043] The queuing module is designed to count people in the checkout area of the store and send notifications about the queues from the computer to the telegram chat, to the mail of the store director or in the form of a sound signal in the store. There are restrictions on the number of recommended cameras per server, they depend on the characteristics of the video card used. For example, for the GTX 1060 video card, the maximum number of cameras is 30, if there are more cameras, the real-time mode will not be observed during processing, which will lead to the appearance of false positives of the module. There are no restrictions on the choice of camera models. For the correct operation of the queue module, it is necessary to comply with the conditions for mounting the cameras. With correct installation, each camera will have one checkout zone in the field of view, the head of each person in the zone will very rarely intersect with other heads or obstacles, that is, people will not block each other on the video from the camera, and will not hide behind obstacles. On FIG. 2 shows examples of correct installation.

[0044] Кассовая зона включает в себя два региона, размечаемые вручную администратором системы заранее (Фиг. 3): рабочее место кассира и область покупателей - область нахождения порогового количества людей, при котором будут формироваться оповещение персонала магазина о наличии очереди и рекомендации к открытию касс. Пороговое количество людей может быть любым, устанавливается в настройках модуля (по умолчанию - 5). Информация с камер захватывается с частотой один кадр/с в блоке захвата потока. Данная частота является оптимальной для осуществления режима реального времени при большом числе камер в магазине (более 10) и при скорости обработки одной камеры 30 кадров/с (на NVIDiA 1060, на NVIDIA 1080ti 60 кадров/с), частоту нельзя изменить. В общем виде рабочий процесс представлен на Фиг. 3.[0044] The checkout area includes two regions that are marked manually by the system administrator in advance (Fig. 3): the cashier's workplace and the area of customers - the area where the threshold number of people is located, at which the store staff will be alerted about the presence of a queue and recommendations for opening cash desks . The threshold number of people can be any, set in the module settings (default - 5). Information from the cameras is captured at a rate of one frame/s in the stream capture block. This frequency is optimal for implementing real-time mode with a large number of cameras in the store (more than 10) and at a single camera processing speed of 30 fps (on NVIDiA 1060, on NVIDIA 1080ti 60 fps), the frequency cannot be changed. The general workflow is shown in Fig. 3.

[0045] Блок захвата потока с камер использует библиотеку ffmpeg для захвата потока. Для независимого чтения кадров из потока (с целью избежать зависания самого потока) используется механизм очередей, который выполняет буферизацию необходимых для обработки кадров. Процесс разбивается на два дочерних:[0045] The camera stream capture block uses the ffmpeg library to capture the stream. For independent reading of frames from a stream (in order to avoid hanging the stream itself), a queuing mechanism is used, which buffers the frames necessary for processing. The process is split into two child processes:

1) чтение кадров (писатель);1) reading frames (writer);

2) обработка кадров (читатель).2) frame processing (reader).

[0046] Писатель захватывает каждый доступный кадр (текущий кадр из потока, поступающий с частотой fps, выставленной на камере; на камере должна быть выставлена частота более 1 кадра/с), и, если разница между двумя фиксируемыми временными характеристиками (например, unix-времена t1 = 1654607278, t2 = 1654607279, разница = 1 с) превышает или равно пороговому значению (с целью фиксации определенного количества кадров в единицу времени, в нашем случае - кадр в секунду), происходит декодирование кадра с помощью алгоритмов библиотеки ffmpeg и его буферизация в переменную очереди, туда же складываются характеристика целостности кадра ("битый" или "не битый" кадр, значение характеристики 0 или 1, соответственно) и время, в которое данный кадр был получен). Если переменная очереди переполнена (по умолчанию размер очереди 10 кадров) - кадр пропускается, то есть кадр не добавляется в переменную очереди, а ожидается, когда в ней освободится место (когда читатель осуществит чтение).[0046] The writer captures every available frame (the current frame from the stream, arriving at the fps rate set on the camera; the camera must be set to more than 1 frame / s), and if the difference between the two fixed timings (for example, unix- times t1 = 1654607278, t2 = 1654607279, difference = 1 s) exceeds or equals the threshold value (in order to fix a certain number of frames per unit of time, in our case - frame per second), the frame is decoded using the ffmpeg library algorithms and buffered into the queue variable, the frame integrity characteristic ("broken" or "not broken" frame, characteristic value 0 or 1, respectively) and the time at which this frame was received are also added there. If the queue variable is full (by default, the queue size is 10 frames) - the frame is skipped, that is, the frame is not added to the queue variable, but is expected when space is freed in it (when the reader reads).

[0047] Существует механизм проверки потока на неисправность: если последовательно были получены 30 кадров, которые были «нечитабельными» (битыми), происходит перезапуск функции, считывающей поток.[0047] There is a mechanism for checking the stream for a malfunction: if 30 frames were received in succession that were “unreadable” (broken), the function that reads the stream is restarted.

[0048] Читатель работает в режиме ожидания. Когда данные в очереди появляются, читатель читает кадр и отправляет его на обработку (блок детектора и т.д.). После того как кадр считан читателем и отправлен на обработку, процесс снова переходит в режим ожидания до появления новых данных.[0048] The reader is in standby mode. When data appears in the queue, the reader reads the frame and sends it for processing (detector block, etc.). After the frame is read by the reader and sent for processing, the process again goes into standby mode until new data appears.

[0049] Блок детектора представляет собой нейронную сеть Scaled YOLO v4, которая возвращает координаты "боксов" (прямоугольники, стороны которых параллельны сторонам изображения - Фиг. 4) детектируемых объектов.[0049] The detector block is a Scaled YOLO v4 neural network that returns the coordinates of "boxes" (rectangles whose sides are parallel to the sides of the image - Fig. 4) of detected objects.

[0050] В модуле очередей детектируемыми объектами являются головы людей. Данная архитектура выгодно отличается от конкурентов (SSD, Faster R-CNN, EfficientDet) сочетанием высокой скорости обработки за счет того, что является одностадийным (one-stage, однопроходным) детектором, эффективнее других одностадийных сетей использует разрешение сети. Высокая скорость обработки необходима при большом числе камер и требовании режима реального времени и точности. Обучение нейронной сети происходит в точном соответствии с рекомендациями, описанными разработчиками данной сети. Важным этапом является подбор размеров anchor boxes ("якорей"), они подбираются с помощью алгоритма кластеризации k-means, всего подбирается 9 "якорей" (базовых боксов), которые необходимо распределять по трем уровням пирамиды масштабов сети. "Базовый вариант" - это по три на каждый масштаб, ранжированные так, чтобы на большом масштабе были маленькие размеры якорей, а на маленьком - большие. В процессе обучения первых 5 эпох принимается решение об успешности распределения якорей по уровням (критерий - процент измененных боксов обучающей выборки, rewriten boxes, если их более 1% - якоря неудачно распределены), в случае неуспеха, меняется распределение якорей по уровням.[0050] In the queue module, the objects to be detected are human heads. This architecture compares favorably with competitors (SSD, Faster R-CNN, EfficientDet) due to the combination of high processing speed due to the fact that it is a single-stage (one-stage, single-pass) detector, it uses network resolution more efficiently than other single-stage networks. High processing speed is necessary when there are a large number of cameras and real-time mode and accuracy are required. The training of the neural network takes place in strict accordance with the recommendations described by the developers of this network. An important step is the selection of the sizes of anchor boxes ("anchors"), they are selected using the k-means clustering algorithm, in total 9 "anchors" (basic boxes) are selected, which must be distributed over three levels of the network scale pyramid. The "basic option" is three for each scale, ranked so that on the large scale there are small anchor sizes, and on the small scale there are large ones. In the process of learning the first 5 epochs, a decision is made about the success of the distribution of anchors by levels (the criterion is the percentage of changed boxes of the training sample, rewritten boxes, if more than 1% of them - the anchors are unsuccessfully distributed), in case of failure, the distribution of anchors by levels changes.

[0051] В блоке аналитики фильтруются детекции, относящиеся только к зоне нахождения покупателей (отбираются только те боксы голов, центры которых расположены в зоне), принимается решение о возникновении очереди, определяется ее длительность, а также происходит при необходимости "склеивание" двух очередей в одну по условию непревышения порога по времени между двумя очередями.[0051] In the analytics block, detections related only to the area where buyers are located are filtered (only those boxes of goals whose centers are located in the area are selected), a decision is made about the occurrence of a queue, its duration is determined, and, if necessary, "gluing" two queues in one by the condition of not exceeding the threshold in time between two queues.

[0052] Алгоритм определения очереди в блоке аналитики работает следующим образом: используется скользящее окно шириной в 20 секунд, в котором считается число кадров с количеством людей, превышающим некий порог, заданный пользователем (по умолчанию 5 человек), если число таких кадров превышает половину окна, то считаем, что очередь началась, иначе считаем, что очередь закончилась. Окно движется с шагом 5 секунд, временем начала очереди считаем момент первого кадра с числом людей, превышающим порог. Аналогично определяем момент окончания очереди (первый кадр с числом людей меньше или равно пороговому значению). Очередь продлевается, если в следующем окне она также существует (момент окончания очереди переносится). Очереди "склеиваются", если между двумя очередями прошло менее 40 секунд (порог подобран эмпирически, можно менять в настройках). Отправка уведомления о наличии очереди происходит по двум пороговым таймингам времени существования очереди (5 минут по умолчанию для первого уведомления, 7 минут - для второго).[0052] The algorithm for determining the queue in the analytics block works as follows: a sliding window of 20 seconds is used, in which the number of frames with the number of people exceeding a certain threshold set by the user (5 people by default) is counted if the number of such frames exceeds half the window , then we consider that the queue has started, otherwise we consider that the queue has ended. The window moves in increments of 5 seconds, the start time of the queue is considered the moment of the first frame with the number of people exceeding the threshold. Similarly, we determine the end of the queue (the first frame with the number of people less than or equal to the threshold value). The queue is extended if it also exists in the next window (the end of the queue is carried forward). Queues are "glued together" if less than 40 seconds have passed between two queues (the threshold is selected empirically, you can change it in the settings). Sending a notification about the existence of a queue occurs according to two threshold timings of the queue lifetime (5 minutes by default for the first notification, 7 minutes for the second).

[0053] В GUI (графический интерфейс пользователя) можно просматривать ленту уведомлений, также можно настроить отправку уведомлений в Telegram (Фиг. 5), на почту, либо в виде звукового сигнала в магазине. Уведомления содержат различную информацию в зависимости от режима оценки активных касс. Возможны три режима:[0053] In the GUI (graphical user interface), you can view the notification feed, you can also configure notifications to be sent to Telegram (Fig. 5), by mail, or as a sound signal in the store. Notifications contain different information depending on the evaluation mode of active cash registers. Three modes are possible:

1) "стандартный": касса считается активной, если в зоне нахождения покупателей данной кассы обнаружен хотя бы один человек;1) "standard": the cash desk is considered active if at least one person is found in the area where the customers of this cash desk are located;

2) "детектор кассира": касса считается активной, если в зоне кассира есть хотя бы один человек в течение времени наблюдения очереди, алгоритм определения кассира аналогичен алгоритму определения очереди (логика скользящего окна);2) "cashier detector": the cash desk is considered active if there is at least one person in the cashier's area during the queue observation time, the cashier detection algorithm is similar to the queue detection algorithm (sliding window logic);

3) "кассовый сервер" (при наличии кассовых событий): определяем состояние кассы по соответствующему сигналу от кассового сервера.3) "cash server" (in the presence of cash events): determine the state of the cash register by the corresponding signal from the cash server.

[0054] Стандартное уведомление содержит кадр момента начала очереди кассы, на которой была сформирована тревога, число человек в очереди всех касс в момент отправки уведомления, а также информацию в зависимости от предварительных настроек.[0054] The standard notification contains a frame of the start of the checkout queue at which the alarm was generated, the number of people in the queue of all checkouts at the time the notification was sent, and information depending on the presets.

[0055] Модуль полок предназначен для анализа расположения товаров и ценников на полках стеллажей торгового зала, соотнесения реального расположения (далее - реалограмма) с планограммой. Планограмма - запланированное расположение (выкладка) товаров на стеллажах магазина. Планограмма обновляется обычно каждый месяц на магазине, у различных торговых сетей она может быть представлена в различном виде: xls-таблицы, pdf-файла и тд. Примеры планограмм приведены на Фиг. 6. Реалограмма - фактическое расположение товаров на стеллажах. Для корректной работы модуля полок необходимы камеры с разрешением не менее 8 мгпкс, а также соблюдение условий монтажа камер. При корректном монтаже в поле зрения каждой камеры будет находиться не более двух стеллажей с товарами на полках в полный "рост" (Фиг. 6).[0055] The shelf module is designed to analyze the location of goods and price tags on the shelves of the sales floor racks, correlating the actual location (hereinafter referred to as the realogram) with the planogram. Planogram - the planned arrangement (layout) of goods on store shelves. The planogram is usually updated every month at the store; it can be presented in various retail chains in various forms: xls-tables, pdf-files, etc. Examples of planograms are shown in Fig. 6. Realogram - the actual location of goods on the shelves. For correct operation of the shelf module, cameras with a resolution of at least 8 megapixels are required, as well as compliance with the camera installation conditions. With correct installation, in the field of view of each camera there will be no more than two racks with goods on the shelves in full "length" (Fig. 6).

[0056] Перед запуском модуля полок в работу проводится предварительная настройка каждой камеры. Алгоритм предварительной настройки:[0056] Before launching the shelf module into operation, a preliminary configuration of each camera is carried out. Preset Algorithm:

1) автоматически в настройках камеры выставляется разрешение 3840×2160, максимальный битрейт;1) the camera settings automatically set the resolution to 3840×2160, the maximum bitrate;

2) запускается алгоритм коррекции радиальной дисторсии из библиотеки opencv, чтобы убрать "рыбий глаз"; необходимые коэффициенты были получены в результате калибровки произвольно взятой камеры 8 мгпкс конкретной модели с выставленным разрешением на ней 3840×2160 в соответствии с рекомендациями в документации opencv по проведению калибровки камеры с помощью шахматной доски (если меняется модель камеры, необходима новая калибровка);2) the algorithm for correcting radial distortion from the opencv library is launched to remove the "fisheye"; the required coefficients were obtained as a result of calibrating an arbitrary 8 megapixel camera of a specific model with a resolution of 3840 × 2160 set on it in accordance with the recommendations in the opencv documentation for calibrating the camera using a checkerboard (if the camera model changes, a new calibration is required);

3) проводится разметка полок полигоном из четырех точек, которые проставляются строго в углы "физических" полок стеллажа (стеллаж может быть длинным и состоять из нескольких стандартных полок обычно длиной 125 см); разметка полок дает нам возможность выровнять перспективу полки, а также контролировать ширину полки, подаваемой затем детектору товаров, так мы обеспечиваем более стабильную детекцию и последующее распознавание товаров;3) the shelves are marked with a polygon of four points, which are placed strictly in the corners of the "physical" shelves of the rack (the rack can be long and consist of several standard shelves, usually 125 cm long); shelf layout allows us to align the perspective of the shelf, as well as control the width of the shelf that is then fed to the product detector, so we provide more stable detection and subsequent recognition of products;

4) формируются матрицы томографии для каждой полки камеры по четырем размеченным точкам, матрицы записываются в базу для дальнейшего использования при работе модуля.4) tomography matrices are formed for each chamber shelf at four marked points, the matrices are written to the database for further use during module operation.

[0057] Процесс работы модуля полок представлен на Фиг. 7.[0057] The operation of the shelf module is shown in FIG. 7.

[0058] Блок захвата кадра использует библиотеку ffmpeg для захвата кадра, кадры захватываются раз в две минуты и на котором пишутся на диск сервера, последующие блоки обработки в соответствии со схемой на Фиг. 7 запускаются с периодичностью, выставленной в настройках (по умолчанию раз в час).[0058] The frame capture block uses the ffmpeg library to capture a frame, frames are captured every two minutes and written to the server disk, subsequent processing blocks in accordance with the diagram in FIG. 7 run at the frequency set in the settings (once per hour by default).

[0059] Блок предварительной обработки кадров работает следующим образом, последовательно для кадра каждой камеры:[0059] The frame pre-processing block works as follows, sequentially for the frame of each camera:

1) происходит корректировка дисторсии как описано в алгоритме предварительной настройки;1) distortion is corrected as described in the presetting algorithm;

2) происходит нарезка полок и применение соответствующей матрицы томографии к каждой полке;2) shelves are cut and an appropriate tomography matrix is applied to each shelf;

3) масштабирование изображения каждой полки к размеру сети детектора.3) scaling the image of each shelf to the size of the detector network.

[0060] Блок детектора представляет собой нейронную сеть Scaled YOLO v4, которая возвращает координаты "боксов" товаров, ценников и области цены товара, написанной на ценнике. Преимущество использования данной архитектуры в быстродействии и точности, а также в эффективности детекции маленьких, близко расположенных объектов (это актуально при детекции творожков, баночек детского питания, области цен на ценниках).[0060] The detector block is a Scaled YOLO v4 neural network that returns the coordinates of product "boxes", price tags, and the product price area written on the price tag. The advantage of using this architecture is in speed and accuracy, as well as in the efficiency of detecting small, closely spaced objects (this is important when detecting curds, jars of baby food, and the price area on price tags).

[0061] Блок классификатора получает на вход вырезанные области изображения товаров в соответствии с координатами, полученными от блока детектора. Цель блока классификатора - распознать товар в вырезанной области. Блок классификатора содержит нейронную сеть семейства трансформеров - swin. Нейронная сеть обучается как классификатор (используется кросс-энтропийная лосс-функция с softmax, оптимизация алгоритмом Adam со стандартными настройками, размер батча 16, аугментации: изменение контраста, сглаживание, оптическая дисторсия, изменение перспективы, cutout, нормализация с параметрами датасета imgenet, используются предобученные веса на imagnet), затем удаляется последний классификационный слой, и далее используются эмбеддинги для оценки схожести товаров на изображениях. Таким образом система сможет распознавать новый товар лишь при добавлении в базу через GUI шаблона на данный товар и не будет требоваться при этом переобучать сеть.[0061] The classifier block receives cut out areas of the product image as input in accordance with the coordinates received from the detector block. The purpose of the classifier block is to recognize the product in the cut out area. The classifier block contains a neural network of the transformer family - swin. The neural network is trained as a classifier (a cross-entropy loss function with softmax is used, optimization by the Adam algorithm with standard settings, batch size 16, augmentations: contrast change, smoothing, optical distortion, perspective change, cutout, normalization with imgenet dataset parameters, pretrained weight on imagnet), then the last classification layer is removed, and then embeddings are used to assess the similarity of products in the images. Thus, the system will be able to recognize a new product only when a template for this product is added to the database via the GUI and it will not be required to retrain the network.

[0062] Шаблоны товаров создаются при добавлении их пользователем в GUI, это происходит в несколько этапов:[0062] Product templates are created when the user adds them to the GUI, this happens in several stages:

1) загрузка изображения с выбранной камеры с выделенными графически "боксами" товаров (последовательное применение к кадру блоков предобработки кадра и детектора);1) loading an image from the selected camera with graphically selected "boxes" of goods (successive application of the frame preprocessing and detector blocks to the frame);

2) наведение курсора мыши на интересующий товар, выбор номера plu для него (код товара или его класс) из предложенного списка (возможен поиск по списку по наименованию/коду);2) hovering the mouse cursor over the product of interest, selecting the plu number for it (product code or class) from the list provided (it is possible to search the list by name/code);

3) нажатие кнопки сохранения шаблона в базу;3) pressing the button to save the template to the database;

4) после добавления шаблона каждого кода товара запускается процедура кластеризации, где все шаблоны данного кода кластеризуются на несколько групп по косинусному расстоянию, усредненный шаблон по каждой группе записывается в базу и затем используется при работе блока классификатора.4) after adding the template of each product code, the clustering procedure is started, where all templates of this code are clustered into several groups by cosine distance, the averaged template for each group is written to the database and then used when the classifier block is working.

[0063] При запуске блока классификатора изображения товаров (вырезанные "боксы" товаров из изображения полки) обрабатываются нейронной сетью, описанной выше, обработка происходит пачками (батчами), в батчи объединяются боксы товаров со всех полок всех камер, размер батча задается в зависимости от вычислительных мощностей сервера, на котором происходит обсчет. По умолчанию размер батча 64, что означает, что за один прямой проход нейронная сеть обработает 64 изображения. Полученные векторы товаров затем сравниваются по косинусному расстоянию с усредненными векторами кластеров каждого товара в базе и выдаются метки кодов plu целевому товару по ближайшему усредненному вектору к целевому вектору. Целевой товар - товар, код plu которого мы хотим узнать. Код плу - это числовой идентификатор товара на магазине, например, 56789123. Чем больше косинусное расстояние (ближе к 1), тем ближе вектора, то есть "похоже" изображения, поэтому после подсчета расстояний до векторов базы данных выбирается вектор, дающий максимально близкое к 1 значение расстояния, его код plu присваивается сравниваемому вектору (вектору целевомого товара).[0063] When the classifier block is launched, product images (cut out "boxes" of goods from the shelf image) are processed by the neural network described above, processing occurs in batches (batch), the product boxes from all shelves of all cameras are combined into batches, the batch size is set depending on computing power of the server on which the calculation takes place. By default, the batch size is 64, which means that in one forward pass, the neural network will process 64 images. The resulting product vectors are then compared by cosine distance with the averaged cluster vectors of each product in the database, and plu code labels are returned to the target product by the averaged vector closest to the target vector. Target product - the product whose plu code we want to know. The plu code is a numerical identifier of the product on the store, for example, 56789123. The larger the cosine distance (closer to 1), the closer the vectors, that is, the "similar" images, so after calculating the distances to the database vectors, a vector is selected that gives the closest possible to 1 distance value, its plu code is assigned to the compared vector (target product vector).

[0064] Кроме того, блок классификатора содержит нейронную сеть для распознавания цифр цены на ценнике с архитектурой двунаправленной LSTM, обученную с etc (англ. «Connectionist Temporal Classifications) функцией ошибки на собственных данных. Данная архитектура имеет явные преимущества в точности по сравнению с общеизвестными пакетами FineReader и Tesseract. Для распознавания цифр используются только те боксы цен, которые находятся внутри боксов ценников (превентивная мера по исключению ложноположительных детекций цен в произвольных местах полок).[0064] In addition, the classifier block contains a bidirectional LSTM price digit recognition neural network trained with etc (Connectionist Temporal Classifications) error function on own data. This architecture has clear advantages in accuracy over the well-known FineReader and Tesseract packages. To recognize numbers, only those price boxes that are inside the price tag boxes are used (a preventive measure to exclude false positive price detections in arbitrary places on the shelves).

[0065] Блок анализатора (аналитики) сравнивает реальную выкладку товаров с эталонной, а также подсчитывает различные статистики. Анализатор, используя координаты распознанных товаров, выстраивает их в последовательность товаров, стоящих на полке, сгруппированную по индивидуальному коду товаров (PLU). От клиента по заранее согласованному протоколу мы получаем планограмму (то есть мы имеем эталонную последовательность товаров на полках с учетом их количества в ширину и высоту). Также реализована возможность получения от клиента с определенной периодичностью информации о цене товара и его наличии на складе магазина. Анализатор сравнивает фактическую последовательность товаров с эталонной, и разделяет их на следующие категории:[0065] The analyzer (analytics) block compares the actual display of goods with the reference one, and also calculates various statistics. The analyzer, using the coordinates of the recognized products, builds them into a sequence of products on the shelf, grouped by individual product code (PLU). According to a pre-agreed protocol, we receive a planogram from the client (that is, we have a reference sequence of goods on the shelves, taking into account their number in width and height). Also implemented is the ability to receive from the client with a certain frequency of information about the price of the goods and its availability in the warehouse of the store. The analyzer compares the actual sequence of goods with the reference one, and divides them into the following categories:

1. По планограмме - товар находится на "своем месте".1. According to the planogram - the goods are in "their place".

2. Ошибка фейса - товар находится на своем месте, но количество товара в ширину/высоту не совпадает с планограммой.2. Face error - the product is in its place, but the quantity of the product in width / height does not match the planogram.

3. Ошибка полки - товар находится не на своей полке.3. Shelf error - the product is not on its shelf.

4. Ошибка номера - товар находится на своей полке, но порядковый номер его размещения в рамках полки не соблюден.4. Number error - the product is on its shelf, but the serial number of its placement within the shelf is not observed.

5. Не выставлен - товар отсутствует на полке.5. Not displayed - the product is not on the shelf.

6. Нет остатков - товар отсутствует на полке, а также отсутствует на складе магазина.6. No leftovers - the product is not on the shelf, and also not in the store's warehouse.

7. Ошибка оборудования - количество полок по планограмме и на фактическом стеллаже в магазине отличается.7. Equipment error - the number of shelves according to the planogram and on the actual shelf in the store is different.

[0066] Анализатор подсчитывает процент соответствия планограмме, который определяется как отношение количества позиций "по планограмме" к суммарному количеству "не выставленных" и количеству "ошибок полки". Анализатор сравнивает цену на ценниках, найденных под товарными позициями с эталонной ценой, полученной от клиента, и отображает соответствующую информацию в интерфейсе приложения.[0066] The analyzer calculates the percentage of compliance with the planogram, which is defined as the ratio of the number of positions "according to the planogram" to the total number of "not set" and the number of "shelf errors". The analyzer compares the price on the price tags found under the product items with the reference price received from the client and displays the relevant information in the application interface.

[0067] Результаты визуализируются в GUI (графический интерфейс пользователя), формирую общую картину положения дел в магазине, касающихся ключевых зон, которые влияют на клиентский опыт и привлекательность магазина (как следствие его бизнес эффективность). На основании данных, полученных: от анализаторов (очереди, контроль планограмм, цены на ценниках) и из учетных магазина (количество сотрудников в смене, количество работающих касс в моменте, наличие конкретных товаров на остатках в магазине, актуальная стоимость товаров в моменте), в GUI формируются визуальные отчеты с рекомендациями действий (нужно открыть дополнительную кассу или поменять ценники в молочном отделе) в деталях. Эти рекомендации влияют на оперативное управление и дают эффект в моменте, но помимо оперативных рекомендаций в GUI формируются отчеты за период, которые дают возможность посмотреть на ретроспективу и принять стратегические решения в бизнесе. Неотъемлемой частью рекомендаций и действий - является отправка уведомлений с определенным типом задач пользователю, а т.к. задач много и по разным бизнес-процессам в системе существует модуль приоритезации задач (критичность), исходя из присвоенного уровня критичности выставляется приоритет на исполнение задач сотрудниками магазина. Базово в системе заложено три уровня критичности по которым распределяются задачи: Обычный, Важный, Критичный. Распределение задач по этим уровням и постановка в очередь первично (первый раз в новую смену) делается на основании принятых исходных данных на старте и заложенных констант в системе: время, тип задачи (базово выложить товар на полку важнее, чем исправить ценник, но все же есть нюансы), кол-во исполнителей на старте и на каждую задачу, исходя из ее типа и уровня критичности выделяется время на выполнение. Сотрудники не видят все задачи, они видят только самые критичные в моменте и по мере их выполнения получают новые. Далее все задачи (и вновь созданные и созданные ранее) существуют в единой связанной системе координат и задачи одного модуля (например Очередей) в моменте могут становиться высшим приоритетом над всеми остальными и наоборот могут быть задачи, которые созданы с самого утра и будут закрыты в конце дня (конец смены) автоматически системой со статусом «не выполнены», потому количество приоритетных задач и количество ресурсов (сотрудников) на их выполнение не позволили во временном отрезке смены выполнять задачи, которые принесут меньше отдачи для бизнеса. У всех задач есть понятие жизненного цикла и в рамках своего жизненного цикла задача может менять уровень критичности либо сама к себе (например возникла большая очередь и продержалась достаточно долго, чтобы задача стала критичной, но большая часть людей пришли за короткими покупками, т.е. с малым количеством товаров в чеке, и очередь быстро пришла к нормативу), либо под влиянием других модулей (например на полках возникли пустоты, которые достигли уровня «Критичный», но в моменте ситуация на кассовой линии достигла уровня, когда задача открыть новую кассу становится высшим приоритетом понижая уровень других задач, снова же система берет в расчет: время суток, количество покупателей в торговом зале и на кассе в моменте, количество исполнителей в моменте для выполнения задач) и самое главное, что задачи могут закрываться пользователями в интерфейсе (Мобильное приложение), но ее жизненный цикл закроется системой только после проверки и подтверждением самой системой, что исполнитель качественно выполнил задачу (выставил товары, открыл кассу и т.д.).[0067] The results are visualized in a GUI (graphical user interface), providing an overall picture of the state of affairs in the store regarding key areas that affect customer experience and attractiveness of the store (as a consequence of its business efficiency). Based on the data received: from analyzers (queues, control of planograms, prices on price tags) and from accounting stores (number of employees per shift, number of working cash desks at the moment, availability of specific goods on the balances in the store, current cost of goods at the moment), in The GUI generates visual reports with action recommendations (you need to open an additional cash register or change the price tags in the dairy department) in detail. These recommendations affect operational management and have an immediate effect, but in addition to operational recommendations, reports for the period are generated in the GUI, which provide an opportunity to look at the retrospective and make strategic business decisions. An integral part of recommendations and actions is sending notifications with a certain type of tasks to the user, and since. There are many tasks and for different business processes in the system there is a module for prioritizing tasks (criticality), based on the assigned level of criticality, priority is set for the execution of tasks by store employees. Basically, the system has three levels of criticality according to which tasks are distributed: Normal, Important, Critical. The distribution of tasks by these levels and queuing in the first place (for the first time on a new shift) is done based on the initial data received at the start and the constants set in the system: time, type of task (basically putting the goods on the shelf is more important than correcting the price tag, but there are nuances), the number of performers at the start and for each task, based on its type and level of criticality, time is allocated for execution. Employees do not see all the tasks, they see only the most critical ones at the moment and receive new ones as they are completed. Further, all tasks (both newly created and previously created) exist in a single linked coordinate system, and tasks of one module (for example, Queues) at the moment can become the highest priority over all others, and vice versa, there can be tasks that are created in the morning and will be closed at the end day (end of the shift) automatically by the system with the status "not completed", because the number of priority tasks and the number of resources (employees) for their implementation did not allow performing tasks that would bring less return for the business in the time period of the shift. All tasks have the concept of a life cycle, and within its life cycle, a task can change the level of criticality either to itself (for example, a large queue arose and lasted long enough for the task to become critical, but most people came for short purchases, i.e. with a small number of goods in the check, and the queue quickly reached the standard), or under the influence of other modules (for example, there were voids on the shelves that reached the “Critical” level, but at the moment the situation on the cash line reached a level when the task of opening a new cash desk becomes lowering the level of other tasks as the highest priority, again the system takes into account: the time of day, the number of buyers on the trading floor and at the checkout at the moment, the number of performers at the moment to complete tasks) and most importantly, that tasks can be closed by users in the interface (Mobile application ), but its life cycle will be closed by the system only after checking and confirming by the system itself that the executor effectively completed the task (displayed goods, opened a cash register, etc.).

[0068] Как мы уже описывали выше, модуль контроль очередей и модуль контроля планограмм формируют сигналы (задачи) на исправление текущих неточностей. Проходя, через модуль приоритезации сигналы (задачи) выстраиваются в очередь на выполнение. Например, в очередях уровень критичности зависит от количества людей, одновременно стоящих в очереди и времени, которое они стоят возле кассы, чем больше людей и чем дольше они стоят - влияет на критичность. В контроле планограмм (контроле выкладки) критичность определяется количеством товара, который одновременно отсутствует на полке (при этом он есть на складе) и размером пустот на полках. Есть и общий параметр, который объединяет уровень критичности обоих модулей - это время суток, в часы пик важно, чтобы товар был на полке и «пробки» на выходе из магазина не достигали критичного характера. Таким образом, модуль приоритизации задач является точкой управления приоритетами и срочностью выполнения той или иной задачи в первую очередь. Ввиду того, что каждый магазин работает в режиме сильной ограниченности ресурсов (нехватка персонала) очень важно грамотно управлять этим ресурсом эффективно, только в этом случае магазин может получить максимально возможный результат за операционный день. Важна и еще одна деталь - система в целом позволяет снять с линейного персонала груз «принятия решения» (куда пойти в первую очередь? Какую сейчас задачу взять?) и как следствие снизить стресс, нацеливая сотрудников на выполнения конкретно очерченных задач.[0068] As we have already described above, the queue control module and the planogram control module generate signals (tasks) to correct current inaccuracies. Passing through the prioritization module, signals (tasks) are queued for execution. For example, in queues, the level of criticality depends on the number of people standing in line at the same time and the time they stand near the cash register, the more people and the longer they stand, it affects the criticality. In planogram control (layout control), criticality is determined by the amount of goods that are not on the shelf at the same time (while it is in stock) and the size of the voids on the shelves. There is also a common parameter that combines the level of criticality of both modules - this is the time of day, during peak hours it is important that the goods are on the shelf and the “traffic jams” at the exit from the store do not reach a critical nature. Thus, the task prioritization module is a point of control over the priorities and urgency of performing a particular task in the first place. Due to the fact that each store operates in a highly resource-limited mode (lack of staff), it is very important to competently manage this resource effectively, only in this case the store can get the maximum possible result for the operating day. Another detail is also important - the system as a whole allows you to remove the burden of “decision making” from the line staff (where to go first? What task to take now?) and, as a result, reduce stress by directing employees to perform specific tasks.

[0069] Данное техническое решение может быть реализовано в виде вычислительной системы компьютерного зрения в ритейле, которая содержит один или более из следующих компонентов:[0069] This technical solution can be implemented as a computer vision computer system in retail, which contains one or more of the following components:

• компонент обработки, содержащий по меньшей мере один процессор,• a processing component containing at least one processor,

• память,• memory,

• компонент мультимедиа,• multimedia component,

• компонент аудио,• audio component,

• интерфейс ввода / вывода (I/О),• input / output interface (I / O),

• сенсорный компонент,• sensory component,

• компонент передачи данных.• data transfer component.

[0070] Компонент обработки в основном управляет всеми операциями системы, например, осуществляет обработку данных о пользователе или его запросе на осуществление компьютерного зрения, а также управляет дисплеем, телефонным звонком, передачей данных, работой камеры и операцией записи мобильного устройства связи. Компонент обработки может включать в себя один или более процессоров, реализующих инструкции для завершения всех или части шагов из указанных выше способов. Кроме того, компонент обработки может включать в себя один или более модулей для удобного процесса взаимодействия между другими модулями обработки и другими модулями. Например, компонент обработки может включать в себя мультимедийный модуль для удобного облегченного взаимодействия между компонентом мультимедиа и компонентом обработки.[0070] The processing component mainly manages all system operations, such as processing data about a user or a request for computer vision, as well as managing display, phone call, data transmission, camera operation, and recording operation of a mobile communication device. The processing component may include one or more processors that implement instructions for completing all or part of the steps from the above methods. In addition, the processing component may include one or more modules for convenient interaction between other processing modules and other modules. For example, the processing component may include a media module for convenient, lightweight interaction between the media component and the processing component.

[0071] Память выполнена с возможностью хранения различных типов данных для поддержки работы системы, например, базу данных с профилями пользователей. Примеры таких данных включают в себя инструкции из любого приложения или способа, контактные данные, данные адресной книги, сообщения, изображения, видео, и т.д., и все они работают на системе. Память может быть реализована в виде любого типа энергозависимого запоминающего устройства, энергонезависимого запоминающего устройства или их комбинации, например, статического оперативного запоминающего устройства (СОЗУ), Электрически-Стираемого Программируемого постоянного запоминающего устройства (ЭСППЗУ), Стираемого Программируемого постоянного запоминающего устройства (СППЗУ), Программируемого постоянного запоминающего устройства (ППЗУ), постоянного запоминающего устройства (ПЗУ), магнитной памяти, флэш-памяти, магнитного диска или оптического диска и другого, не ограничиваясь.[0071] The memory is configured to store various types of data to support the operation of the system, such as a database of user profiles. Examples of such data include instructions from any application or method, contact data, address book data, messages, images, videos, etc., all of which run on the system. The memory may be implemented as any type of volatile memory, non-volatile memory, or a combination of both, such as static random access memory (SRAM), Electrically Erasable Programmable Read Only Memory (EEPROM), Erasable Programmable Read Only Memory (EPROM), Programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, magnetic disk or optical disk, and others, without being limited.

[0072] Компонент мультимедиа включает в себя экран, обеспечивающий выходной интерфейс между системой, которая может быть установлена на мобильном устройстве связи пользователя и пользователем. В некоторых вариантах реализации, экран может быть жидкокристаллическим дисплеем (ЖКД) или сенсорной панелью (СП). Если экран включает в себя сенсорную панель, экран может быть реализован в виде сенсорного экрана для приема входного сигнала от пользователя. Сенсорная панель включает один или более сенсорных датчиков в смысле жестов, прикосновения и скольжения по сенсорной панели. Сенсорный датчик может не только чувствовать границу прикосновения субъекта или жест перелистывания, но и определять длительность времени и давления, связанных с режимом работы на прикосновение и скольжение. В некоторых вариантах осуществления компонент мультимедиа включает одну фронтальную камеру и/или одну заднюю камеру. Когда система находится в режиме работы, например, режиме съемки или режиме видео, фронтальная камера и/или задняя камера могут получать данные мультимедиа извне. Каждая фронтальная камера и задняя камера может быть одной фиксированной оптической системой объектива или может иметь фокусное расстояние или оптический зум.[0072] The media component includes a screen providing an output interface between a system that may be installed on a user's mobile communication device and the user. In some implementations, the screen may be a liquid crystal display (LCD) or a touch panel (TP). If the screen includes a touch panel, the screen may be implemented as a touch screen to receive input from a user. The touchpad includes one or more touch sensors in terms of gestures, touching and sliding on the touchpad. The touch sensor can not only sense the subject's touch boundary or swipe gesture, but also determine the length of time and pressure associated with the touch and slide operation mode. In some embodiments, the media component includes one front camera and/or one rear camera. When the system is in an operating mode, such as shooting mode or video mode, the front camera and/or rear camera can receive media data from outside. Each front camera and rear camera can be one fixed lens optics system or can have focal length or optical zoom.

[0073] Компонент аудио выполнен с возможностью выходного и/или входного аудио сигнала. Например, компонент аудио включает один микрофон (MIC), который выполнен с возможностью получать внешний аудио сигнал, когда система находится в режиме работы, например, режиме вызова, режима записи и режима распознавания речи. Полученный аудио сигнал может быть далее сохранен в памяти или направлен по компоненту передачи данных. В некоторых вариантах осуществления компонент аудио также включает в себя один динамик выполненный с возможностью вывода аудио сигнала.[0073] The audio component is configured to output and/or input an audio signal. For example, the audio component includes one microphone (MIC) that is configured to receive an external audio signal when the system is in an operating mode such as call mode, recording mode, and speech recognition mode. The received audio signal can be further stored in memory or routed through the data component. In some embodiments, the audio component also includes a single speaker capable of outputting an audio signal.

[0074] Интерфейс ввода / вывода (I/О) обеспечивает интерфейс между компонентом обработки и любым периферийным интерфейсным модулем. Вышеуказанным периферийным интерфейсным модулем может быть клавиатура, руль, кнопка, и т.д. Эти кнопки могут включать, но не ограничиваясь, кнопку запуска, кнопку регулировки громкости, начальную кнопку и кнопку блокировки.[0074] An input/output (I/O) interface provides an interface between a processing component and any peripheral interface module. The above peripheral interface module may be a keyboard, steering wheel, button, etc. These buttons may include, but are not limited to, a start button, a volume button, a home button, and a lock button.

[0075] Сенсорный компонент содержит один или более сенсоров и выполнен с возможностью обеспечения различных аспектов оценки состояния системы. Например, сенсорный компонент может обнаружить состояния вкл/выкл системы, относительное расположение компонентов, например, дисплея и кнопочной панели, одного компонента системы, наличие или отсутствие контакта между субъектом и системой, а также ориентацию или ускорение/замедление и изменение температуры системы. Сенсорный компонент содержит бесконтактный датчик, выполненный с возможностью обнаружения присутствия объекта, находящегося поблизости, когда нет физического контакта. Сенсорный компонент содержит оптический датчик (например, КМОП или ПЗС-датчик изображения) выполненный с возможностью использования в визуализации приложения. В некоторых вариантах сенсорный компонент содержит датчик ускорения, датчик гироскопа, магнитный датчик, датчик давления или датчик температуры.[0075] The sensor component includes one or more sensors and is configured to provide various aspects of assessing the state of the system. For example, the sensor component can detect system on/off states, the relative position of components, such as a display and a keypad, of a single system component, the presence or absence of contact between the subject and the system, and the orientation or acceleration/deceleration and temperature changes of the system. The sensor component includes a proximity sensor configured to detect the presence of a nearby object when there is no physical contact. The sensor component includes an optical sensor (eg, CMOS or CCD image sensor) configured to be used in application rendering. In some embodiments, the sensor component includes an acceleration sensor, a gyroscope sensor, a magnetic sensor, a pressure sensor, or a temperature sensor.

[0076] Компонент передачи данных выполнен с возможностью облегчения проводной или беспроводной связи между системой и другими устройствами. Система может получить доступ к беспроводной сети на основе стандарта связи, таких как WiFi, 2G, 3G, 5G, или их комбинации. В одном примерном варианте компонент передачи данных получает широковещательный сигнал или трансляцию, связанную с ними информацию из внешней широковещательной системы управления через широковещательный канал. В одном варианте осуществления компонент передачи данных содержит модуль коммуникации ближнего поля (NFC), чтобы облегчить ближнюю связь. Например, модуль NFC может быть основан на технологии радиочастотной идентификации (RFID), технологии ассоциации передачи данных в инфракрасном диапазоне (IrDA), сверхширокополосных (UWB) технологии, Bluetooth (ВТ) технологии и других технологиях.[0076] The communication component is configured to facilitate wired or wireless communication between the system and other devices. The system can access a wireless network based on a communication standard such as WiFi, 2G, 3G, 5G, or combinations thereof. In one exemplary embodiment, the data communication component receives a broadcast signal or broadcast related information from an external broadcast control system via a broadcast channel. In one embodiment, the data communication component includes a near field communication (NFC) module to facilitate near field communications. For example, the NFC module may be based on radio frequency identification (RFID) technology, infrared data association (IrDA) technology, ultra-wideband (UWB) technology, Bluetooth (BT) technology, and other technologies.

[0077] В примерном варианте осуществления система может быть реализована посредством одной или более Специализированных Интегральных Схем (СИС), Цифрового Сигнального Процессора (ЦСП), Устройств Цифровой Обработки Сигнала (УЦОС), Программируемым Логическим Устройством (ПЛУ), логической микросхемой, программируемой в условиях эксплуатации (ППВМ), контроллера, микроконтроллера, микропроцессора или других электронных компонентов, и может быть сконфигурирован для реализации способа.[0077] In an exemplary embodiment, the system may be implemented by one or more Application-Specific Integrated Circuits (ASICs), a Digital Signal Processor (DSP), a Digital Signal Processor (DSP), a Programmable Logic Unit (PLU), a field programmable logic chip operation (FPGA), controller, microcontroller, microprocessor or other electronic components, and can be configured to implement the method.

[0078] В примерном варианте осуществления энергонезависимый машиночитаемый носитель содержит память, которая включает инструкции, где инструкции выполняются процессором системы для реализации описанных выше способов осуществления системы компьютерного зрения. Например, энергонезависимым машиночитаемым носителем может быть ПЗУ, оперативное запоминающее устройство (ОЗУ), компакт-диск, магнитная лента, дискеты, оптические устройства хранения данных и тому подобное.[0078] In an exemplary embodiment, the non-volatile computer-readable medium includes a memory that includes instructions, where the instructions are executed by a system processor to implement the computer vision system implementation methods described above. For example, a non-volatile computer-readable medium can be ROM, random access memory (RAM), compact disk, magnetic tape, floppy disks, optical storage devices, and the like.

[0079] Вычислительная система может включать в себя интерфейс дисплея, который передает графику, текст и другие данные из коммуникационной инфраструктуры (или из буфера кадра, не показан) для отображения на компоненте мультимедиа. Вычислительная система дополнительно включает в себя устройства ввода или периферийные устройства. Периферийные устройства могут включать в себя одно или несколько устройств для взаимодействия с мобильным устройством связи пользователя, такие как клавиатура, микрофон, носимое устройство, камера, один или более звуковых динамиков и другие датчики. Периферийные устройства могут быть внешними или внутренними по отношению к мобильному устройству связи пользователя. Сенсорный экран может отображать, как правило, графику и текст, а также предоставляет пользовательский интерфейс (например, но не ограничиваясь ими, графический пользовательский интерфейс (GUI)), через который субъект может взаимодействовать с мобильным устройством связи пользователя, например, получать доступ и взаимодействовать с приложениями, запущенными на устройстве.[0079] The computing system may include a display interface that transmits graphics, text, and other data from the communications infrastructure (or from a framebuffer, not shown) for display on a media component. The computing system further includes input devices or peripherals. Peripheral devices may include one or more devices for interacting with a user's mobile communications device, such as a keyboard, microphone, wearable device, camera, one or more audio speakers, and other sensors. Peripherals may be external or internal to the user's mobile communication device. The touch screen can display typically graphics and text, and also provides a user interface (such as, but not limited to, a graphical user interface (GUI)) through which a subject can interact with the user's mobile communication device, such as accessing and interacting with with applications running on the device.

[0080] Элементы заявляемого технического решения находятся в функциональной взаимосвязи, а их совместное использование приводит к созданию нового и уникального технического решения. Таким образом, все блоки функционально связаны.[0080] The elements of the proposed technical solution are in a functional relationship, and their joint use leads to the creation of a new and unique technical solution. Thus, all blocks are functionally connected.

[0081] Все блоки, используемые в системе, могут быть реализованы с помощью электронных компонент, используемых для создания цифровых интегральных схем, что очевидно для специалиста в данном уровне техники. Не ограничиваюсь, могут использоваться микросхемы, логика работы которых определяется при изготовлении, или программируемые логические интегральные схемы (ПЛИС), логика работы которых задается посредством программирования. Для программирования используются программаторы и отладочные среды, позволяющие задать желаемую структуру цифрового устройства в виде принципиальной электрической схемы или программы на специальных языках описания аппаратуры: Verilog, VHDL, AHDL и др. Альтернативой ПЛИС могут быть программируемые логические контроллеры (ПЛК), базовые матричные кристаллы (БМК), требующие заводского производственного процесса для программирования; ASIC - специализированные заказные большие интегральные схемы (БИС), которые при мелкосерийном и единичном производстве существенно дороже.[0081] All blocks used in the system can be implemented using electronic components used to create digital integrated circuits, which is obvious to a person skilled in the art. Not limited to, microcircuits, the logic of which is determined during manufacture, or programmable logic integrated circuits (FPGA), the logic of which is set by programming, can be used. Programmers and debugging environments are used for programming, allowing you to set the desired structure of a digital device in the form of a circuit diagram or a program in special hardware description languages: Verilog, VHDL, AHDL, etc. An alternative to FPGAs can be programmable logic controllers (PLCs), basic matrix crystals ( BMK), requiring a factory production process for programming; ASIC - specialized custom-made large integrated circuits (LSI), which are significantly more expensive for small-scale and single-piece production.

[0082] Обычно, сама микросхема ПЛИС состоит из следующих компонент:[0082] Typically, the FPGA chip itself consists of the following components:

• конфигурируемых логических блоков, реализующих требуемую логическую функцию;• configurable logical blocks that implement the required logical function;

• программируемых электронных связей между конфигурируемыми логическими блоками;• programmable electronic links between configurable logic blocks;

• программируемых блоков ввода/вывода, обеспечивающих связь внешнего вывода микросхемы с внутренней логикой.• programmable input/output blocks that provide communication between the external output of the microcircuit and the internal logic.

[0083] Также блоки могут быть реализованы с помощью постоянных запоминающих устройств.[0083] Blocks can also be implemented using read-only memories.

[0084] Таким образом, реализация всех используемых блоков достигается стандартными средствами, базирующимися на классических принципах реализации основ вычислительной техники.[0084] Thus, the implementation of all used blocks is achieved by standard means based on the classical principles of implementing the fundamentals of computer technology.

[0085] Как будет понятно специалисту в данной области техники, аспекты настоящего технического решения могут быть выполнены в виде системы, способа или компьютерного программного продукта. Соответственно, различные аспекты настоящего технического решения могут быть реализованы исключительно как аппаратное обеспечение, как программное обеспечение (включая прикладное программное обеспечение и так далее) или как вариант осуществления, сочетающий в себе программные и аппаратные аспекты, которые в общем случае могут упоминаться как «модуль», «система» или «архитектура». Кроме того, аспекты настоящего технического решения могут принимать форму компьютерного программного продукта, реализованного на одном или нескольких машиночитаемых носителях, имеющих машиночитаемый программный код, который на них реализован.[0085] As will be appreciated by one of skill in the art, aspects of the present technical solution may be implemented as a system, method, or computer program product. Accordingly, various aspects of the present technical solution may be implemented solely as hardware, as software (including application software, etc.), or as an embodiment combining software and hardware aspects, which may be generally referred to as a "module" , "system" or "architecture". In addition, aspects of the present technical solution may take the form of a computer program product implemented on one or more computer-readable media having computer-readable program code embodied thereon.

[0086] Также может быть использована любая комбинация одного или нескольких машиночитаемых носителей. Машиночитаемый носитель хранилища может представлять собой, без ограничений, электронную, магнитную, оптическую, электромагнитную, инфракрасную или полупроводниковую систему, аппарат, устройство или любую подходящую их комбинацию. Конкретнее, примеры (неисчерпывающий список) машиночитаемого носителя хранилища включают в себя: электрическое соединение с помощью одного или нескольких проводов, портативную компьютерную дискету; жесткий диск, оперативную память (ОЗУ), постоянную память (ПЗУ), стираемую программируемую постоянную память (EPROM или Flash-память), оптоволоконное соединение, постоянную память на компакт-диске (CD-ROM), оптическое устройство хранения, магнитное устройство хранения или любую комбинацию вышеперечисленного. В контексте настоящего описания, машиночитаемый носитель хранилища может представлять собой любой гибкий носитель данных, который может содержать или хранить программу для использования самой системой, устройством, аппаратом или в соединении с ними.[0086] Any combination of one or more computer-readable media may also be used. The computer-readable storage medium can be, without limitation, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or any suitable combination thereof. More specifically, examples (non-exhaustive list) of a computer-readable storage medium include: an electrical connection using one or more wires, a portable computer diskette; hard disk, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM or Flash memory), fiber optic connection, compact disc read only memory (CD-ROM), optical storage device, magnetic storage device or any combination of the above. As used herein, a computer-readable storage medium can be any flexible storage medium that can contain or store a program for use by or in connection with a system, device, apparatus.

[0087] Программный код, встроенный в машиночитаемый носитель, может быть передан с помощью любого носителя, включая, без ограничений, беспроводную, проводную, оптоволоконную, инфракрасную и любую другую подходящую сеть или комбинацию вышеперечисленного.[0087] The program code embedded in a computer-readable medium may be transmitted using any medium, including, without limitation, wireless, wired, fiber optic, infrared, and any other suitable network or combination of the foregoing.

[0088] Компьютерный программный код для выполнения операций для шагов настоящего технического решения может быть написан на любом языке программирования или комбинаций языков программирования, включая объектно-ориентированный язык программирования, например Python, R, Java, Smalltalk, С++ и так далее, и обычные процедурные языки программирования, например язык программирования «С» или аналогичные языки программирования. Программный код может выполняться на компьютере пользователя полностью, частично, или же как отдельный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере, или же полностью на удаленном компьютере. В последнем случае, удаленный компьютер может быть соединен с компьютером пользователя через сеть любого типа, включая локальную сеть (LAN), глобальную сеть (WAN) или соединение с внешним компьютером (например, через Интернет с помощью Интернет-провайдеров).[0088] The computer program code for performing the operations for the steps of the present technical solution may be written in any programming language or combinations of programming languages, including an object-oriented programming language such as Python, R, Java, Smalltalk, C++, and so on, and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may be executed in whole, in part, on the user's computer, or as a separate software package, in part on the user's computer and in part on a remote computer, or entirely on a remote computer. In the latter case, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN), a wide area network (WAN), or a connection to an external computer (eg, via the Internet via ISPs).

[0089] Аспекты настоящего технического решения были описаны подробно со ссылкой на блок-схемы, принципиальные схемы и/или диаграммы способов, устройств (систем) и компьютерных программных продуктов в соответствии с вариантами осуществления настоящего технического решения. Следует иметь в виду, что каждый блок из блок-схемы и/или диаграмм, а также комбинации блоков из блок-схемы и/или диаграмм, могут быть реализованы компьютерными программными инструкциями. Эти компьютерные программные инструкции могут быть предоставлены процессору компьютера общего назначения, компьютера специального назначения или другому устройству обработки данных для создания процедуры, таким образом, чтобы инструкции, выполняемые процессором компьютера или другим программируемым устройством обработки данных, создавали средства для реализации функций/действий, указанных в блоке или блоках блок-схемы и/или диаграммы.[0089] Aspects of the present technical solution have been described in detail with reference to block diagrams, circuit diagrams and/or diagrams of methods, devices (systems), and computer program products in accordance with embodiments of the present technical solution. It should be appreciated that each block from the block diagram and/or diagrams, as well as combinations of blocks from the block diagram and/or diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to the processor of a general purpose computer, a special purpose computer, or other data processing device to create a procedure, such that the instructions executed by the computer processor or other programmable data processing device create the means to implement the functions/actions specified in block or blocks of a flowchart and/or diagram.

[0090] Эти компьютерные программные инструкции также могут храниться на машиночитаемом носителе, который может управлять компьютером, отличным от программируемого устройства обработки данных или отличным от устройств, которые функционируют конкретным образом, таким образом, что инструкции, хранящиеся на машиночитаемом носителе, создают устройство, включающее инструкции, которые осуществляют функции/действия, указанные в блоке блок-схемы и/или диаграммы.[0090] These computer program instructions may also be stored on a computer-readable medium that can control a computer other than a programmable data processing device or other than devices that operate in a particular manner such that the instructions stored on the computer-readable medium create a device including instructions that perform the functions/actions indicated in the block diagram and/or diagram.

Claims (17)

1. Система компьютерного зрения в ритейле, содержащая: 1. Computer vision system in retail, containing: • набор видеокамер для осуществления захвата изображений в зоне полок и в кассовой зоне, объединенных одной сетью с сервером, на котором расположены:• a set of video cameras for capturing images in the shelf area and in the checkout area, united by one network with the server on which are located: • блок захвата потока с видеокамер, выполненный с возможностью независимого чтения кадров из потока кадров набора видеокамер, посредством механизма очередей, который выполняет буферизацию необходимых для обработки кадров, причем • a block for capturing the stream from video cameras, configured to independently read frames from the frame stream of a set of video cameras, by means of a queuing mechanism that buffers the frames necessary for processing, moreover блок захвата потока с видеокамер захватывает каждый текущий кадр из потока, поступающий с частотой, заранее выставленной на видеокамерах из набора видеокамер, фиксирует временные характеристики и, если разница между двумя фиксируемыми временными характеристиками превышает или равна пороговому значению, декодирует кадр и буферизует его в переменную очереди, при этом: the block for capturing a stream from video cameras captures each current frame from a stream arriving at a frequency set in advance on video cameras from a set of video cameras, captures time characteristics and, if the difference between two recorded time characteristics exceeds or equals a threshold value, decodes the frame and buffers it into a queue variable , wherein: – если данные появились в очереди, кадр направляется на обработку;– if the data appeared in the queue, the frame is sent for processing; – если переменная очереди переполнена, кадр пропускается;– if the queue variable is full, the frame is skipped; – если последовательно получено несколько битых кадров, функция захвата перезапускается;– if several bad frames are received in succession, the capture function is restarted; • блок предобработки кадров, последовательно для каждого кадра осуществляющий:• frame preprocessing block, sequentially for each frame performing: – корректировку дисторсии;- distortion correction; – применение матрицы гомографии;– application of the homography matrix; – масштабирование изображения к размеру нейросети детектора;– scaling the image to the size of the detector neural network; • блок детектора, представляющий собой искусственную нейронную сеть, которая получает на вход обработанные кадры из очереди, сформированной блоком захвата потока с камер, и возвращает координаты контуров заранее установленных детектируемых объектов с отнесением их к соответствующей зоне;• a detector block, which is an artificial neural network that receives as input processed frames from the queue formed by the camera stream capture block and returns the contour coordinates of predetermined objects to be detected with their assignment to the corresponding zone; • блок классификатора, представляющий собой искусственную нейронную сеть, которая получает на вход вырезанные области изображения объектов в соответствии с координатами, полученными от блока детектора, и распознает объекты в вырезанной области;• classifier block, which is an artificial neural network that receives cut out areas of the image of objects as input in accordance with the coordinates received from the detector block, and recognizes objects in the cut out area; • блок анализатора, выполненный с возможностью сопоставления распознанных блоком детектора объектов с эталонными состояниями, хранящимися в базе данных, и классификации результатов сопоставления по категориям с выявлением несоответствий;• an analyzer unit configured to compare the objects recognized by the detector unit with the reference states stored in the database, and to classify the results of the comparison into categories with the identification of inconsistencies; • блок отправки уведомлений и визуализации, выполненный с возможностью направления результатов выявленных блоком анализатора несоответствий в графический интерфейс пользователя.• block for sending notifications and visualization, configured to send the results of inconsistencies identified by the analyzer block to the graphical user interface. 2. Система по п.1, характеризующаяся тем, что осуществляют механизм проверки потока на неисправность: если последовательно были получены n кадров, которые являются битыми, происходит перезапуск функции, считывающей поток.2. The system according to claim 1, characterized in that the mechanism for checking the stream for a malfunction is implemented: if n frames were received in succession, which are broken, the function that reads the stream is restarted. 3. Система по п.1, характеризующаяся тем, что в блоке детектора используется архитектура искусственной нейронной сети Scaled YOLO v4.3. The system according to claim 1, characterized in that the architecture of the artificial neural network Scaled YOLO v4 is used in the detector unit.
RU2022129307A 2022-11-11 Computer vision system in retail RU2785327C1 (en)

Publications (1)

Publication Number Publication Date
RU2785327C1 true RU2785327C1 (en) 2022-12-06

Family

ID=

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030107649A1 (en) * 2001-12-07 2003-06-12 Flickner Myron D. Method of detecting and tracking groups of people
US20040075741A1 (en) * 2002-10-17 2004-04-22 Berkey Thomas F. Multiple camera image multiplexer
US20050276459A1 (en) * 2004-06-09 2005-12-15 Andrew Eames Method and apparatus for configuring and testing a machine vision detector
US20160171852A1 (en) * 2014-12-12 2016-06-16 Andy Lin Real-time video analysis for security surveillance
US20170323376A1 (en) * 2016-05-09 2017-11-09 Grabango Co. System and method for computer vision driven applications within an environment
US20180260612A1 (en) * 2016-08-08 2018-09-13 Indaflow LLC Object Recognition for Bottom of Basket Detection Using Neural Network
US20180315173A1 (en) * 2017-05-01 2018-11-01 Symbol Technologies, Llc Method and apparatus for shelf feature and object placement detection from shelf images
WO2019032304A1 (en) * 2017-08-07 2019-02-14 Standard Cognition Corp. Subject identification and tracking using image recognition
RU2703962C1 (en) * 2018-12-28 2019-10-22 Андрей Андреевич Комаров Computer vision system for servicing sales of weighted goods
KR102035592B1 (en) * 2017-12-27 2019-10-23 소프트온넷(주) A supporting system and method that assist partial inspections of suspicious objects in cctv video streams by using multi-level object recognition technology to reduce workload of human-eye based inspectors
US10474992B2 (en) * 2017-08-07 2019-11-12 Standard Cognition, Corp. Machine learning-based subject tracking
US20210279475A1 (en) * 2016-07-29 2021-09-09 Unifai Holdings Limited Computer vision systems
WO2021247420A2 (en) * 2020-06-01 2021-12-09 Trax Technology Solutions Pte Ltd. Systems and methods for retail environments

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030107649A1 (en) * 2001-12-07 2003-06-12 Flickner Myron D. Method of detecting and tracking groups of people
US20040075741A1 (en) * 2002-10-17 2004-04-22 Berkey Thomas F. Multiple camera image multiplexer
US20050276459A1 (en) * 2004-06-09 2005-12-15 Andrew Eames Method and apparatus for configuring and testing a machine vision detector
US20160171852A1 (en) * 2014-12-12 2016-06-16 Andy Lin Real-time video analysis for security surveillance
US20170323376A1 (en) * 2016-05-09 2017-11-09 Grabango Co. System and method for computer vision driven applications within an environment
US20210279475A1 (en) * 2016-07-29 2021-09-09 Unifai Holdings Limited Computer vision systems
US20180260612A1 (en) * 2016-08-08 2018-09-13 Indaflow LLC Object Recognition for Bottom of Basket Detection Using Neural Network
US20180315173A1 (en) * 2017-05-01 2018-11-01 Symbol Technologies, Llc Method and apparatus for shelf feature and object placement detection from shelf images
US10474992B2 (en) * 2017-08-07 2019-11-12 Standard Cognition, Corp. Machine learning-based subject tracking
WO2019032304A1 (en) * 2017-08-07 2019-02-14 Standard Cognition Corp. Subject identification and tracking using image recognition
KR102035592B1 (en) * 2017-12-27 2019-10-23 소프트온넷(주) A supporting system and method that assist partial inspections of suspicious objects in cctv video streams by using multi-level object recognition technology to reduce workload of human-eye based inspectors
RU2703962C1 (en) * 2018-12-28 2019-10-22 Андрей Андреевич Комаров Computer vision system for servicing sales of weighted goods
WO2021247420A2 (en) * 2020-06-01 2021-12-09 Trax Technology Solutions Pte Ltd. Systems and methods for retail environments

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHIEN-YAO WANG, "Scaled-YOLOv4: Scaling Cross Stage Partial Network" опубл. 22.02.2021, 10 с. [найдено 18.11.2022], найдено в Интернет по адресу: https://arxiv.org/pdf/2011.08036.pdf. *

Similar Documents

Publication Publication Date Title
US11151427B2 (en) Method and apparatus for checkout based on image identification technique of convolutional neural network
JP6869340B2 (en) Order information determination method and equipment
US10242267B2 (en) Systems and methods for false alarm reduction during event detection
JP7038543B2 (en) Information processing equipment, systems, control methods for information processing equipment, and programs
US20090249342A1 (en) Systems and methods for transaction queue analysis
US8681232B2 (en) Visual content-aware automatic camera adjustment
US11669738B2 (en) Context-aided machine vision
CN110866429A (en) Missed scanning identification method and device, self-service cash register terminal and system
CN109886169B (en) Article identification method, device, equipment and storage medium applied to unmanned container
US8612286B2 (en) Creating a training tool
US11475657B2 (en) Machine learning algorithm trained to identify algorithmically populated shopping carts as candidates for verification
US11488126B2 (en) Cashier fraud detecting system and method and product image selection generation for artificial neural network learning related applications
JP7264401B2 (en) Accounting methods, devices and systems
JP2020507144A (en) Optimizing human and non-human resources in the retail environment
Maizi et al. Building a digital twin for IoT smart stores: A case in retail and apparel industry
RU2730112C1 (en) System and method of identifying objects in composite object
US20220309784A1 (en) System and method for populating a virtual shopping cart based on a verification of algorithmic determinations of items selected during a shopping session in a physical store
EP3629276A1 (en) Context-aided machine vision item differentiation
CN110689389A (en) Computer vision-based shopping list automatic maintenance method and device, storage medium and terminal
JPWO2019123714A1 (en) Information processing equipment, product recommendation methods, and programs
US20210334758A1 (en) System and Method of Reporting Based on Analysis of Location and Interaction Between Employees and Visitors
US20240037111A1 (en) Intelligent Analytics For Cloud Computing Applications
RU2785327C1 (en) Computer vision system in retail
US20190297139A1 (en) Systems and methods for managing the processing of information acquired by sensors within an environment
US11386647B2 (en) System and method for processing a refund request arising from a shopping session in a cashierless store