General Information#
VisionLabs LUNA CARS is a system designed for detection, tracking of objects, recognition of vehicle and LP attributes.
LUNA CARS includes four components:
- CARS_API – subsystem for detection and recognition of vehicles and License Plates (LP) attributes on images in real-time.
- CARS_Stream – subsystem for detecting and tracking vehicles, LPs, pedestrians and animals in the video stream and determining the best frames.
- ANPR Stream – subsystem for integrating ANPR cameras into CARS_Analytics.
- CARS_Analytics – subsystem for collecting, storing and displaying the results of the CARS_API and CARS_Stream operation through a web interface.
VisionLabs LUNA CARS allows real-time:
- detect vehicles;
- determine the type of vehicle;
- identify the brand and model of the vehicle;
- determine whether the vehicle belongs to emergency services, special, or public transport;
- determine the color of the vehicle;
- determine the number of axles of the vehicle;
- determine the orientation of the vehicle in space;
- detect the presence of a flashlight or trailer;
- calculate the speed of the vehicle;
- count the number of vehicles;
- provide access to vehicle detection and recognition events via a web interface;
- detect license plates;
- recognize license plate symbols;
- determine the country of registration from the license plate;
- detect smoke and/or fire;
- detect pedestrians;
- detect animals;
- manage video streams.
LUNA CARS Architecture#
The architecture of operation of LUNA CARS (Figure 1).
Table 1. LUNA CARS scheme description
| Name | Description |
|---|---|
| Source | RTSP stream, video files or images containing vehicles, license plates, pedestrians, and/or animals |
| ANPR camera | Source of type ANPR camera, providing images of vehicles and license plates |
| Load balancer | Service that distributes requests and responses between multiple running instances of CARS_API or CARS_Stream and external analytics systems and information collection system. CARS_API only support Nginx |
| CARS_Stream | Subsystem for detecting vehicles, license plates, pedestrians, and animals in video streams, tracking vehicles and license plates, and selecting the best frames |
| ANPR Stream | Subsystem for integrating ANPR cameras with CARS_Analytics |
| CARS_API | Subsystem for detecting and recognizing vehicle and license plate attributes |
| CARS_Analytics | Subsystem for collecting, storing, and displaying results from CARS_API and CARS_Stream via a web interface. CARS_Analytics includes PostgreSQL database |
LUNA CARS components interaction diagrams#
The diagram of LUNA CARS operation with video (Figure 2).
Table 2. Description of the sequence diagram for working with video
| Step | Description |
|---|---|
| (1) | CARS_Stream receives video stream or a video file from sources |
| (2) | CARS_Stream splits the video into frames, detects objects in each frame, forms tracks, and selects the best shot for each track |
| (3) | CARS_Analytics receives a message from CARS_Stream containing the best frame of a track. The message is sent via the callback_manager.py module and includes the best frame with the object (vehicle, license plate, pedestrian, or animal) and its location on the frame |
| (4) | CARS_Analytics sends a request through the load balancer to CARS_API with the best frame to determine vehicle attributes (brand, model, etc.) and license plate attributes (symbols, country, etc.) |
| (5) | The load balancer forwards the request to the CARS_API instance with the lowest current load |
| (6) | CARS_API processes the request containing the best frame |
| (7) | CARS_API returns the response through the load balancer, containing vehicle and license plate attributes to CARS_Analytics |
| (8) | The load balancer delivers the response to CARS_Analytics |
| (9) | CARS_Analytics determines the scenario type (event or incident) depending on the object type |
| (10) | CARS_Analytics stores the vehicle and license plate information in the database |
| (11) | CARS_Analytics displays the generated message in the web interface with the detected vehicle and license plate attributes |
The diagram of LUNA CARS operation with ANPR camera video source (Figure 3).
Table 3. Description of the sequence diagram of work with video streams from ANPR camera
| Step | Description |
|---|---|
| (1) | ANPR Stream receives a video stream from a source of type ANPR camera |
| (2) | ANPR Stream splits the video into frames, detects objects in each frame, and forms tracks |
| (3) | CARS_Analytics receives a message from CARS_Stream containing the best frame of a track. The message is sent via the callback_manager.py module and includes the best frame with the object (vehicle, license plate, pedestrian, or animal) and its location on the frame |
| (4) | CARS_Analytics sends a request through the load balancer to CARS_API with the best frame to determine vehicle attributes (brand, model, etc.) and license plate attributes (symbols, country, etc.) |
| (5) | The load balancer forwards the request to the CARS_API instance with the lowest current load |
| (6) | CARS_API processes the request containing the best frame |
| (7) | CARS_API returns the response through the load balancer, containing vehicle and license plate attributes to CARS_Analytics |
| (8) | The load balancer delivers the response to CARS_Analytics |
| (9) | CARS_Analytics determines the scenario type (event or incident) depending on the object type |
| (10) | CARS_Analytics stores the vehicle and license plate information in the database |
| (11) | CARS_Analytics displays the generated message in the web interface with the detected vehicle and license plate attributes |
The diagram of LUNA CARS operation with images (Figure 4).
Table 4. Description of the sequence diagram for working with images description
| Step | Description |
|---|---|
| (1) | CARS_API receives an image and a processing request from CARS_API Tester |
| (2) | The load balancer forwards the request to the CARS_API instance with the lowest current load |
| (3) | CARS_API processes the image |
| (4) | CARS_API returns the response through the load balancer, containing vehicle and license plate attributes to CARS_Analytics |
| (5) | The load balancer delivers the response to CARS_Analytics |
| (6) | CARS_Analytics receives the vehicle and license plate information |
| (7) | CARS_Analytics displays the generated message in the web interface with the detected vehicle and license plate attributes |