Skip to content

Using box_non_max_merge to Merge YOLO Boxes? #2021

@DP1701

Description

@DP1701

Search before asking

  • I have searched the Supervision issues and found no similar feature requests.

Question

Hello everyone,

maybe someone can help me out. I’m facing the following challenge: In my scene, a truck drives into an area and moves toward an unloading zone (always exactly one truck). However, YOLO returns multiple detection boxes for the same truck — for example parts of the trailer, the cab, or parts of the cargo. In principle the detection works, but I’d like to merge these boxes into a single one since they all overlap anyway.

In Supervision, I found the function box_non_max_merge(), which I think could solve this problem. However, the function doesn’t expect a Detections object but rather a 2D array of object detection predictions.

My current approach looks like this:

import supervision as sv
from supervision.detection.core import merge_inner_detections_objects_without_iou

preds = np.hstack((detections.xyxy, detections.confidence.reshape(-1, 1), detections.class_id.reshape(-1, 1) ))

merge_groups = sv.box_non_max_merge( predictions=preds, iou_threshold=0.2, overlap_metric=sv.OverlapMetric.IOU)

merged_detections = []
for group in merge_groups:
      per_detection = [detections[i] for i in group]
      merged_detections.append(merge_inner_detections_objects_without_iou(per_detection))

 detections = (
       sv.Detections.merge(merged_detections)
       if merged_detections
       else sv.Detections.empty()
   )

Is this the intended way to use the function, or are there better methods to merge all overlapping boxes into a single truck bounding box?

Additional

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions