Above gstreamer command is working perfectly fine for me. But here pipeline is :
hailonet → hailofilter → hailoaggregator
So hailofilter will run as many times as the number of tiles.
can we somehow do below pipeline : hailonet → hailoaggregator -> hailofilter
so that after hailonet directly aggregator runs and stitch the results back to original image size and the filter runs only once on full original image.
And the main reason i want this is because in my cpp code i have created one shared memory between my script and hailo_nms_decode.hpp file so as soon as hailofilter filter outs the Bounding box i can access in my script. So is there any way to use aggregator before filter ?
@omria Can Please help me in this ? I have tried making new shared memory in core/hailo/plugins/tiling/gsthailotileaggregator.cpp but i am not getting the desired results there too. If aggregator is not possible before filter then can you tell me in which file i will get final Bounding box of stitched image ?
If you need access to the final stitched bounding boxes, you’ll need to tap into the pipeline after the hailotileaggregator element. That’s where all the detections get combined and mapped back to the original frame coordinates. You won’t be able to get the final stitched bounding boxes before this stage.
Just a heads up – the pipeline structure hailonet → hailoaggregator → hailofilter isn’t supported for tiling workflows. The post-processing needs to happen per tile before aggregation, since the aggregator relies on the post-processed metadata from each tile to properly flatten and combine the results.
Implementation Details
If you want to modify or extract the final bounding boxes, take a look at:
This is where the final bounding boxes for the stitched image are handled.
How does this work in the file?
The function gst_hailotileaggregator_handle_sub_frame_roi processes each incoming tile and prepares the detections for aggregation.
The actual “flattening” – mapping detections from tile coordinates back to original image coordinates – happens as part of this process.
Once all tiles for a frame are processed, gst_hailotileaggregator_post_aggregation gets called. This handles post-processing steps like removing large landscape objects and running NMS on the aggregated detections. At this point, the bounding boxes are in the original (stitched) image coordinate space.
So the final stitched bounding boxes are available after gst_hailotileaggregator_post_aggregation runs in gsthailotileaggregator.cpp. If you want to access or modify them, that’s the function you should work with. The bounding boxes at this stage are already mapped to the original image size and have gone through any additional post-processing configured in the aggregator (gst_hailotileaggregator_post_aggregation).