Skip to content

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).

LUNA CARS scheme
Figure 1. LUNA CARS scheme

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).

Sequence diagram for working with video
Figure 2. Sequence diagram for working with video

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).

Sequence diagram of work with video source ANPR camera
Figure 3. Sequence diagram of work with video source ANPR camera

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).

Sequence diagram for working with images
Figure 4. Sequence diagram for working with images

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