Yolov11 OBBs discarded

Hi everyone,

I’m training a model with YOLO11-OBB using 4-point polygon OBBs (not cx/cy/w/h/angle), and I’m running into a consistent issue: some objects are disappearing during training. The polygons are being silently discarded, and I can’t figure out why.

What I’m observing

  • In train_batch.jpg, some objects that definitely have a valid 4-point polygon in the label file appear without any box.

  • Other polygons are shown correctly.

  • No warnings or errors are printed — the polygon is just ignored.

  • The dataset is 100% verified, and I already validated the polygons manually and programmatically before training:

    • no self-intersections

    • points inside image

    • normalized to [0,1]

    • clockwise ordering

    • minimum area > threshold

    • no degenerate edges

My polygon format

Each line is:

<class> x1 y1 x2 y2 x3 y3 x4 y4   (normalized)

This is the Ultralytics OBB polygon format for YOLO11.

Training configuration (relevant parts)

  • augment=False

  • mosaic=0

  • mixup=0

  • cutmix=0

  • copy_paste=0

  • nms=False (default override)

  • overlap_mask=True

  • amp=True

  • CPU training
    No geometric/crop augmentations should be affecting polygons.

What I already ruled out

  • :check_mark: Polygons fully outside the image → none

  • :check_mark: Polygons clipped to zero area → none

  • :check_mark: Polygons too small → none

  • :check_mark: Wrong class count → correct

  • :check_mark: Wrong normalization → correct

  • :check_mark: Wrong point order → all clockwise

  • :check_mark: Self-intersections → none detected

  • :check_mark: Degenerate OBBs (collinear points) → none

So the polygons should be valid.

My question

What are the internal reasons why YOLO11-OBB may discard a 4-point polygon during training, even if the annotation looks valid?

Possible causes I’m trying to confirm:

  • Does YOLO drop polygons whose minimum bounding rectangle becomes too small after resizing?

  • Does Ultralytics clip polygons again internally and reject them if area < threshold?

  • Does OBB augmentation internally convert polygons to RBOX or MASK and fail?

  • Could overlap_mask=True hide polygons in the visualization even if they exist?

  • Is there a debugging flag to print WHY a polygon was removed?

  • Is there any difference in handling polygons during caching?

What I need

I’m looking for advice on how to:

  1. Enable verbose debugging for polygon filtering

  2. Understand internal Ultralytics filters (min size, invalid clipping, etc.)

  3. Check if the polygon is being dropped during preprocessing, augmentation, caching, or visualization

  4. Confirm if the training has a hidden filter (like min_size_ratio) for OBBs

If anyone has experience with polygons being discarded in YOLO11-OBB — especially 4-point OBB polygons — I’d appreciate any insights.

Thanks!

It can be discarded if it has some extreme aspect ratio

1 Like