Hailotileaggregator bug after gst-hailo-tools update to 3.31.0

Hello. I used the old version of the examples repo to develop an object counting app. Ever since the latest package updates, I decided to switch to your new wrapper. My problem is that my old pipeline which uses hailotilecropper and hailotileaggregator for detection of small objects in high-resolution images, which ran well on older package versions, doesn’t work anymore when using multi-scale tiling. I suspect there may be an issue with the hailotileaggregator after the latest updates.

The pipeline looks like this:

filesrc location="/home/pi/hailo-rpi5-examples-old/resources/detection1.mp4" name=source ! queue name=source_queue_decode leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! decodebin name=source_decodebin !  queue name=source_scale_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! videoscale name=source_videoscale n-threads=2 ! queue name=source_convert_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! videoconvert n-threads=3 name=source_convert qos=false ! video/x-raw, pixel-aspect-ratio=1/1, format=RGB, width=1920, height=1080 ! identity name=original !  queue name=cropper_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! hailotilecropper internal-offset=False name=cropper tiling-mode=1 scale-level=3 tiles-along-x-axis=3 tiles-along-y-axis=3 overlap-x-axis=0.1 overlap-y-axis=0.08 hailotileaggregator flatten-detections=true iou-threshold=0.3 border-threshold=0.1 name=agg cropper. ! queue name=agg_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! agg. cropper. ! queue name=inference_scale_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! videoscale name=inference_videoscale n-threads=2 qos=false ! queue name=inference_convert_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! video/x-raw, pixel-aspect-ratio=1/1 ! videoconvert name=inference_videoconvert n-threads=2 ! queue name=inference_hailonet_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! hailonet name=inference_hailonet hef-path=../resources/yolov5m6_6.1.hef batch-size=1  vdevice-group-id=1 nms-score-threshold=0.3 nms-iou-threshold=0.45 output-format-type=HAILO_FORMAT_TYPE_FLOAT32 is-active=true pass-through=false force-writable=true  ! queue name=inference_hailofilter_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! hailofilter name=inference_hailofilter so-path=/home/pi/hailo-rpi5-examples/venv_hailo_rpi5_examples/lib/python3.11/site-packages/hailo_apps_infra/../resources/libyolo_hailortpp_postprocess.so   function-name=filter_letterbox  qos=false ! queue name=inference_output_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0   ! agg. agg. ! queue name=identity_callback_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! identity name=identity_callback  ! queue name=hailo_display_overlay_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! hailooverlay name=hailo_display_overlay  ! queue name=hailo_display_videoconvert_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! videoconvert name=hailo_display_videoconvert n-threads=2 qos=false ! queue name=hailo_display_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0  ! fpsdisplaysink name=hailo_display video-sink=xvimagesink sync=true text-overlay=False signal-fps-measurements=true

Hey @FlorinCiobotea ,

Your project looks great!

Could you share more details about the error you’re encountering and any code modifications you’ve made to the examples? This would help me better understand and assist you with the issue.

Hi @omria . The pipeline runs with no error, it just that the resulting detections are not OK. There are lots of false positive detections for a single object as can be seen in the image attached to my first message. I assume the hailotilecropper works well. The hailonet element performs the inference for each tile; objects that find themselves in multiple said tiles may lead to multiple detections. In that case, I expect the hailotileaggregator to aggregate those multiple detections corresponding to the different tiles, resulting in a single detection per object. I assume this was the behaviour before the latest package updates, when my pipeline worked fine. I modified the pipelines in hailo-apps-infra using the multi-scale tiling example. Thank you.

Hi again @omria . I decided to run the multi scale tiling example from the TAPPAS repo in order to confirm the aforementioned bug. I made no code modifications and the unwanted behaviour is consistent. Attached to this message is a screenshot which once again contains the unaggregated detections. Please look into this. Thank you.