Архитектура#
LCA API подсистема#
Архитектура подсистемы API показана на Рисунке 1.
Компоненты архитектуры API описаны в Таблице 2.
Таблица 2. Описание архитектуры API
| Компонент | Описание |
|---|---|
| Hub | Hub отправляет запрос на распознавание атрибутов ТС и ГРЗ: |
| - ручные запросы пользователя (подробнее см. раздел Перечень доступных методов LCA API); | |
| - внешние системы, включая Hub или любую информационную систему заказчика. | |
| Load Balancer | Сервис, обеспечивающий распределение запросов и ответов между несколькими экземплярами API и внешними системами. Поддерживается работа только с Nginx. |
| API | Подсистема, выполняющая обработку входящих запросов. Декодирует изображения во внутренний формат, последовательно запускает указанные классификаторы и формирует ответ с результатами распознавания в формате JSON. |
| Vehicle Engine | Библиотека, предоставляющая методы обработки изображений ТС и ГРЗ. |
Диаграмма взаимодействия LCA API и Vehicle Engine#
На Рисунке 2 показана диаграмма последовательности взаимодействия компонентов API и Vehicle Engine при распознавании атрибутов ТС.
Шаги диаграммы описаны в Таблице 3.
Таблица 3. Шаги диаграммы последовательности
| Шаг | Описание |
|---|---|
| 1 | Во внешней системе формируется запрос в формате JSON, содержащий изображения ТС и ГРЗ, закодированные в формате Base64, метод обработки изображения и список классификаторов. Запрос отправляется в API. |
| 2 | API проверяет, что все указанные классификаторы доступны для выполнения. |
| 3 | API последовательно запускает обработку изображения для каждого классификатора из переданного списка. |
| 4 | Vehicle Engine выполняет обработку изображений в соответствии с выбранным методом. |
| 5 | Vehicle Engine последовательно возвращает результаты работы каждого классификатора в API. |
| 6 | API формирует ответ в формате JSON и возвращает его во внешнюю систему. |
LCA Stream подсистема#
Архитектура подсистемы Stream показана на Рисунке 3.
Компоненты архитектуры Stream описаны в Таблице 4.
Таблица 4. Компоненты архитектуры Stream
| Компонент | Описание |
|---|---|
| Sources | RTSP-потоки или видеофайлы, содержащие ТС, ГРЗ, людей, животных, дым или огонь. |
| Stream | Подсистема, обеспечивающая взаимодействие с внешними системами и обработку видеопотоков и видеофайлов. Преобразует входные видеоданные в последовательность кадров для последующей детекции объектов, их трекинга и выбора лучших кадров. |
| Track Engine | Библиотека, предоставляющая алгоритмы детекции объектов, трекинга и выбора лучших кадров. Выполняет детекцию транспортных средств, государственных регистрационных знаков, людей, животных, дыма и огня, формирует треки объектов и определяет лучшие кадры. |
| Hub | Backend-компонент системы, обеспечивающий сбор, хранение и обработку данных, а также взаимодействие с внешними системами. Включает в себя Hub Server, Plugins, и Web server |
Диаграмма взаимодействия LCA Stream и Track Engine#
На Рисунке 4 показана диаграмма последовательности обработки входных видеоданных и выбора лучшего кадра.
Шаги диаграммы описаны в Таблице 5.
Таблица 5. Шаги диаграммы последовательности
| Шаг | Описание |
|---|---|
| 1 | Видеофайлы или RTSP-потоки поступают в Stream. |
| 2 | Stream преобразует видеоданные в последовательность кадров. |
| 3 | Stream передает последовательность кадров в Track Engine для обработки. |
| 4 | Track Engine выполняет детекцию объектов (ТС, ГРЗ, людей, животных, дыма и огня), формирует треки объектов на основе последовательности кадров и определяет кадр начала трека и лучший кадр каждого трека. |
| 5 | Track Engine возвращает в Stream информацию о положении объектов, треки объектов, первые кадры треков и лучшие кадры. |
| 6 | Stream передает во внешнюю систему информацию о начале трека, лучшем кадре и положении объектов для последующего извлечения атрибутов объектов. |
Подсистемы LCA: Database, Hub и UI#
Архитектура подсистем Database, Hub и UI показана на Рисунке 5.
Подсистема Database реализована на базе PostgreSQL.
Компоненты архитектуры Luna Cars Analytics описаны в Таблице 6.
Таблица 6. Компоненты архитектуры LCA
| Компонент | Описание |
|---|---|
| Sources | Видеопотоки, содержащие объекты, представляющие интерес для системы. |
| Stream | Подсистема детекции объектов, трекинга и выбора лучших кадров. |
| ANPR Stream | Подсистема интеграции ANPR-камер с Luna Cars Analytics. |
| API | Подсистема детекции и распознавания атрибутов объектов. |
| Load Balancer | Сервис, обеспечивающий распределение запросов и ответов между несколькими экземплярами API, Stream и Hub. Поддерживается работа только с Nginx. |
| Web Server | Сервис, обеспечивающий обработку входящих HTTP-запросов от LCA UI. |
| User Interface | Компонент системы, предоставляющий пользовательский веб-интерфейс. |
| Hub | Backend-компонент системы, обеспечивающий сбор, хранение, обработку и передачу данных между компонентами системы и внешними системами. Включает в себя Hub server, plugins и load balancer. |
| Hub Server | Компонент Hub, обеспечивающий обработку данных, поступающих от Stream, агрегацию результатов, выдачу информации через WebSocket и обработку запросов от UI. |
| Database | Подсистема хранения данных, реализованная на базе PostgreSQL. Предназначена для хранения результатов распознавания, настроек системы, зарегистрированных событий и служебной информации, необходимой для работы системы. |
| Plugins | Плагин с набором обработчиков. |
Диаграмма взаимодействия Database, Hub и UI#
На Рисунке 6 показана диаграмма последовательности взаимодействия подсистем Database, Hub, UI и других компонентов системы.
Шаги диаграммы описаны в Таблице 7.
Таблица 7. Шаги диаграммы последовательности
| Шаг | Описание |
|---|---|
| 1 | Stream или ANPR Stream (в зависимости от выбранного источника) передает в Hub сообщение, содержащее первый кадр трека, последний кадр трека, лучшие кадры объекта (ТС, ГРЗ, человека, животного, дыма или огня), а также информацию об объекте. |
| 2 | Hub обрабатывает полученное сообщение: |
| - создает фоновую задачу обработки изображения; | |
| - помещает задачу в очередь Celery; | |
| - обновляет очередь задач. | |
| 3 | Hub отправляет в API запрос на распознавание атрибутов ТС и ГРЗ, содержащий список классификаторов и лучший кадр. |
| 4 | Load Balancer обрабатывает запрос и передает его в API. |
| 5 | API выполняет распознавание атрибутов ТС и ГРЗ с использованием указанных классификаторов. |
| 6 | API возвращает результаты распознавания в Load Balancer. |
| 7 | Load Balancer обрабатывает и передает ответ в Hub. |
| 8 | Hub отправляет запрос в Vehicle Plugin для определения положения объекта и типа сценария (событие или инцидент). |
| 9 | Vehicle Plugin выполняет обработку запроса. |
| 10 | Vehicle Plugin возвращает в Hub информацию о типе сценария. |
| 11 | Hub агрегирует результаты обработки и проверяет их на соответствие заданным фильтрам (при наличии). |
| 12 | Hub отправляет запрос в Database на сохранение результатов распознавания. |
| 13 | Database сохраняет данные и возвращает результат выполнения операции. |
| 14 | Hub передает в UI лучший кадр и результаты распознавания атрибутов ТС и ГРЗ. |