DeepStream Reference Designs/Project Architecture/High Level Design

From RidgeRun Developer Connection
< DeepStream Reference Designs‎ | Project Architecture
Revision as of 10:45, 10 May 2022 by Felizondo (talk | contribs) (Reusable Infrastructure)
Jump to: navigation, search

The following diagram shows a high-level overview of the system architecture:

Deepstream Reference Designs Architecture

Reusable Infrastructure

This subsystem encapsulates all the modules that constitute the general framework of the project. The idea is that each component of the framework is independent of a specific technology or application so that these modules can be reused regardless of the specific context in which this reference design will be used. This main infrastructure is responsible for driving the application state and logic and may be reused in a wide variety of AI-powered applications. These modules need no modification in order to implement a new application. Within this type of modules, there are the following:

Camera Capture

AI Manager

Deepstream

Action Dispatcher

This block is in charge of executing specific actions on the media entities defined by the user, based on the inference information received from the internal engine depending on the inference model used. This block depends on the use of triggers that will determine whether the actions need to be executed or not, based on provided policies that work as filters. In other words, this block manages the results of the policies, that are evaluated by the triggers, and depending on its result will do the actions defined by the user.

Trigger

This block is responsible to check the inference information into policies, which are a kind of filter. If the inference information complies with the policies, this block will execute the actions. Policies, actions, and triggers are set up by the user in the application part allowing custom configuration of the data that will be processed.

Config Parser

Decoupling Interfaces

Interface modules are responsible for establishing the connection between framework components and custom application modules. The existence of these boundaries is important to avoid mixing application-specific business logic with common infrastructure. In addition, this agnostic design allows the project to decouple and rearrange components, without affecting its functionality.

Custom Application Specific

As seen in the diagram, custom application blocks represent any type of implementation or specific technology that can be included in the system design. The diagram presents some examples, however, the DeepStream Reference Designs project is not limited to those particular modules. The possibility of extending the design and incorporating specific business rules for each application is what gives this project a high degree of flexibility.

For instance, take a parking lot application. In that scenario, you could use RTSP cameras and perform inference over the captured images and receive the predictions through the MQTT message broker. These notifications trigger the Parking Lot Business Rules which evaluate the current system state and decide if the different actions should be triggered.

Now imagine you wanted to implement a shoplifting detection system. This time a GigE camera is used, however, no modification is needed in the camera capture module since it is protected by the interface. Predictions are made using a different model, which is then sent to the Shoplifting Business Rules. As you can see, there are a lot of possibilities to leverage this reference design as a starting point for your specific project.