Real-Time Processing with GStreamer
Budget: $25 – $50 USD
We are developing a system for processing and analyzing signals coming from various sensors (cameras, microphones, etc.). One part of the system includes algorithms that work with neural networks. For this part, the key parameter is FPS (frames per second). The hardware used for this part is I.MX8M + HAILO. Currently, the FPS is low because the process of preparing images for input into Hailo and processing the results is done on the CPU. In this regard, we would like to address the task of offloading these computations to the GPU and VPU.
We are interested in two matters:
1) Consultation on issues related to writing code in GStreamer.
2) Assistance in creating a GStreamer pipeline that performs the actions outlined below.
For a video signal, the pipeline would look as follows:
Input: RTSP stream 1920x1080 ->
The following operations are performed on the frames: proportional resizing to 640xNEW_HEIGHT, adding padding to make a square 640x640. ->
Detection is performed on Hailo (using an existing function that needs to be integrated into the pipeline). The detector returns results1, containing bounding boxes. According to the bounding boxes, cropping is applied to the original image (1920x1080). The pipeline branches into as many paths as there are bounding boxes. ->
For the frame in each branch: proportional resizing to 640xNEW_HEIGHT, adding padding to make a square 640x640. ->
Detection is performed on Hailo (using an existing function that needs to be integrated into the pipeline). The detector returns results2, containing bounding boxes. The original image (1920x1080), results1, and results2 are then assembled together and sent via gRPC.
We are interested in two matters:
1) Consultation on issues related to writing code in GStreamer.
2) Assistance in creating a GStreamer pipeline that performs the actions outlined below.
For a video signal, the pipeline would look as follows:
Input: RTSP stream 1920x1080 ->
The following operations are performed on the frames: proportional resizing to 640xNEW_HEIGHT, adding padding to make a square 640x640. ->
Detection is performed on Hailo (using an existing function that needs to be integrated into the pipeline). The detector returns results1, containing bounding boxes. According to the bounding boxes, cropping is applied to the original image (1920x1080). The pipeline branches into as many paths as there are bounding boxes. ->
For the frame in each branch: proportional resizing to 640xNEW_HEIGHT, adding padding to make a square 640x640. ->
Detection is performed on Hailo (using an existing function that needs to be integrated into the pipeline). The detector returns results2, containing bounding boxes. The original image (1920x1080), results1, and results2 are then assembled together and sent via gRPC.