🧭 Oriented Bounding Boxes (OBB)

What’s new in 2.0.15

AlbumentationsX now supports oriented (rotated) bounding boxes as a first-class feature.

You can enable this by setting bbox_type="obb" in BboxParams.

When using OBBs, each bounding box is represented by 5 values instead of 4:

[x1, y1, x2, y2, angle]

The first four values follow the same format semantics as before. The fifth value is the rotation angle.

No new formats were introduced β€” OBB is a strict extension of existing ones.


Supported formats

All existing bounding box formats are supported with OBB:

  • coco [x_min, y_min, width, height, angle]

  • pascal_voc [x_min, y_min, x_max, y_max, angle]

  • albumentations Pascal VOC format, normalized to [0, 1], plus angle

  • yolo [x_center, y_center, width, height, angle], normalized to [0, 1]


How to enable OBB

from albumentations import BboxParams

bbox_params = BboxParams(
    format="pascal_voc",
    bbox_type="obb",
    label_fields=["class_labels"]
)

If bbox_type="obb" is set, AlbumentationsX expects exactly 5 values per box.

The default remains unchanged:

  • bbox_type="hbb" β†’ axis-aligned boxes (4 values)
  • Backward compatibility is fully preserved

Processing behavior

The bounding box pipeline remains conceptually the same:

  1. Convert to internal Albumentations format
  2. Optional clipping (clip=True)
  3. Optional invalid box filtering
  4. Apply transformations (rotation-aware)
  5. Apply area / visibility / size filtering
  6. Convert back to the original format

All existing filters (min_area, min_visibility, min_width, max_accept_ratio, etc.) continue to work.


Why this matters

Native OBB support is critical for:

  • aerial and satellite imagery
  • OCR and document analysis
  • industrial inspection
  • rotated object detection models (YOLO-OBB, MMRotate, etc.)

This release removes the need for custom hacks and keeps rotated boxes fully integrated into the AlbumentationsX augmentation pipeline.


πŸ“„ Licensing (important)

AlbumentationsX is distributed under a dual-license model:

  • AGPL β€” for open-source projects, academic research, and non-commercial use
  • Commercial license required β€” for proprietary, closed-source, or commercial products

If AlbumentationsX is used inside a commercial product, including internal training or inference pipelines, you must obtain a commercial license unless you fully comply with AGPL requirements.

πŸ‘‰ Commercial licensing details: https://albumentations.ai/pricing


❀️ Supporting the project

AlbumentationsX is widely used in production and research, but it is maintained by a very small core team.

If AlbumentationsX is useful to you, there are two meaningful ways to support continued development:

πŸ’™ GitHub Sponsors

A simple way for individual developers and researchers to support maintenance, CI, reviews, and new features.

Even small monthly contributions help keep development sustainable.

πŸ‘‰ https://github.com/sponsors/albumentations-team

🏒 Commercial license

If AlbumentationsX is part of a proprietary or revenue-generating product, a commercial license:

  • keeps you legally safe
  • directly funds ongoing development (including features like OBB support)

This is the most effective way to support long-term sustainability.


Thank you to everyone who uses, reports issues, sponsors, or supports AlbumentationsX in any form. This release exists because of that support.