Metropolis Microservices/RidgeRun Microservices Demo/Demo Description: Difference between revisions

From RidgeRun Developer Wiki
No edit summary
No edit summary
Line 9: Line 9:
This system is made up of the following Microservices:
This system is made up of the following Microservices:


'''NVIDIA Metropolis Microservices:'''
'''[https://developer.nvidia.com/blog/bringing-generative-ai-to-the-edge-with-nvidia-metropolis-microservices-for-jetson/ NVIDIA Metropolis Microservices:''']
#'''Video Storage Toolkit (VST):''' VST NVIDIA microservice auto-discovers ONVIF-S compliant IP cameras, and allows use of custom IP stream as video source. It then allows for video to be stored, played back at various speeds, or paused at any frame
#[https://docs.nvidia.com/moj/vst/VST_Overview.html '''Video Storage Toolkit (VST):'''] VST NVIDIA microservice auto-discovers ONVIF-S compliant IP cameras, and allows use of custom IP stream as video source. It then allows for video to be stored, played back at various speeds, or paused at any frame
#'''REDIS: ''' Redis is a message broker that contains all device metadata. VST depends on Redis streams to publish device status change events. DeepStream depends on Redis streams to publish metadata and receive VST camera status events.
#[https://docs.nvidia.com/moj/platform-services/redis.html '''REDIS: '''] Redis is a message broker that contains all device metadata. VST depends on Redis streams to publish device status change events. DeepStream depends on Redis streams to publish metadata and receive VST camera status events.
#'''INGRESS: '''Ingress is the API Gateway to all Metropolis Microservices APIs. It acts as a reverse proxy, where are incoming API requests pass through it, which it then forwards to the appropriate microservice based on path prefix.
#[https://docs.nvidia.com/moj/platform-services/ingress.html '''INGRESS: '''] Ingress is the API Gateway to all Metropolis Microservices APIs. It acts as a reverse proxy, where are incoming API requests pass through it, which it then forwards to the appropriate microservice based on path prefix.


{{Review|Add links to the respective MS nvida website|mortigoza}}
{{Review|We created our own analytics and Deepstream (detection) services}}
{{Review|From NVIDIA we are using VST, Redis and Ingress}}


'''RidgeRun Microservices:'''
'''RidgeRun Microservices:'''
#'''PTZ Microservice:'''The PTZ Microservice is designed to receive 360-degree equirectangular RTSP video streams and outputs an RTSP stream with the performed PTZ operations over the equirectangular videos using RidgeRun libpanorama.  
#[https://developer.ridgerun.com/wiki/index.php/Metropolis_Microservices/RidgeRun_Services/PTZ '''PTZ Microservice:'''] The PTZ Microservice is designed to receive 360-degree equirectangular RTSP video streams and outputs an RTSP stream with the performed PTZ operations over the equirectangular videos using RidgeRun libpanorama.  
#'''Detection Microservice:''' Detection Microservice detects in the input stream the target objects described in a text prompt.The microservice use the NanoOwl generative AI model that allows open vocabulary detection. Meaning that the user can provide a list of objects that are not bounded to any specific classes. For example, it is possible to indicate: search for dogs.
#[https://developer.ridgerun.com/wiki/index.php/Metropolis_Microservices/RidgeRun_Services/Detection '''Detection Microservice:'''] Detection Microservice detects in the input stream the target objects described in a text prompt.The microservice use the NanoOwl generative AI model that allows open vocabulary detection. Meaning that the user can provide a list of objects that are not bounded to any specific classes. For example, it is possible to indicate: search for dogs.
#'''AI Agent:''' AI Agent Microservice allows a natural communication between the user and other microservices. This service uses the Hugging Face LLM  Trelis/Llama-2-7b-chat-hf-function-calling-v3 to convert text commands into API calls, processes the LLM result and calls the correspoding API request. For example, it is possible to request: move the camera 30 degrees to the Right.
#[https://developer.ridgerun.com/wiki/index.php/Metropolis_Microservices/RidgeRun_Services/AI_Agent '''AI Agent:'''] AI Agent Microservice allows a natural communication between the user and other microservices. This service uses the Hugging Face LLM  Trelis/Llama-2-7b-chat-hf-function-calling-v3 to convert text commands into API calls, processes the LLM result and calls the correspoding API request. For example, it is possible to request: move the camera 30 degrees to the Right.
#'''Analytics:''' This Microservice reads detection metadata provided by the REDIS NVIDIA microservice and moves the camera to the detected object position using PTZ and starts video recordings using the NVIDIA VST microservice.
#[https://developer.ridgerun.com/wiki/index.php/Metropolis_Microservices/RidgeRun_Services/Analytics '''Analytics:'''] This Microservice reads detection metadata provided by the REDIS NVIDIA microservice and moves the camera to the detected object position using PTZ and starts video recordings using the NVIDIA VST microservice.
 


{{Review|Add links to the respective MS RR wikis|mortigoza}}
{{Review|Add a diagram|mortigoza}}
{{Review|Lets remove BIPS from the list as it is not part of the demo}}


In this demonstration as all the services are containerized, they can be started by using docker compose. This reduce the complexity of starting and configuring everything to a single compose command.  
In this demonstration as all the services are containerized, they can be started by using docker compose. This reduce the complexity of starting and configuring everything to a single compose command.  

Revision as of 21:26, 26 June 2024






The SmartSeek360 search for objects specified by the user in a 360-degree video stream, once the object is found the system follows it trough the video leveraging the PTZ functions, and triggers video recording at the same time.

This system is made up of the following Microservices:

NVIDIA Metropolis Microservices:

  1. Video Storage Toolkit (VST): VST NVIDIA microservice auto-discovers ONVIF-S compliant IP cameras, and allows use of custom IP stream as video source. It then allows for video to be stored, played back at various speeds, or paused at any frame
  2. REDIS: Redis is a message broker that contains all device metadata. VST depends on Redis streams to publish device status change events. DeepStream depends on Redis streams to publish metadata and receive VST camera status events.
  3. INGRESS: Ingress is the API Gateway to all Metropolis Microservices APIs. It acts as a reverse proxy, where are incoming API requests pass through it, which it then forwards to the appropriate microservice based on path prefix.


RidgeRun Microservices:

  1. PTZ Microservice: The PTZ Microservice is designed to receive 360-degree equirectangular RTSP video streams and outputs an RTSP stream with the performed PTZ operations over the equirectangular videos using RidgeRun libpanorama.
  2. Detection Microservice: Detection Microservice detects in the input stream the target objects described in a text prompt.The microservice use the NanoOwl generative AI model that allows open vocabulary detection. Meaning that the user can provide a list of objects that are not bounded to any specific classes. For example, it is possible to indicate: search for dogs.
  3. AI Agent: AI Agent Microservice allows a natural communication between the user and other microservices. This service uses the Hugging Face LLM Trelis/Llama-2-7b-chat-hf-function-calling-v3 to convert text commands into API calls, processes the LLM result and calls the correspoding API request. For example, it is possible to request: move the camera 30 degrees to the Right.
  4. Analytics: This Microservice reads detection metadata provided by the REDIS NVIDIA microservice and moves the camera to the detected object position using PTZ and starts video recordings using the NVIDIA VST microservice.


In this demonstration as all the services are containerized, they can be started by using docker compose. This reduce the complexity of starting and configuring everything to a single compose command.

...........