Image Rotation Angle Estimation

Try the interactive demo | GitHub | Paper

Predicts the rotation angle of an image using the Circular Gaussian Distribution (CGD) method with a MambaOut Base backbone.

The model outputs a probability distribution over 360 angle bins (1 degree resolution) and extracts the predicted angle via argmax. It handles the full 360 degree range with no boundary discontinuities.

Available Checkpoints

Checkpoint Dataset MAE Median Error
cgd_mambaout_base_coco2017.ckpt COCO 2017 2.84° 0.55°
cgd_mambaout_base_coco2014.ckpt COCO 2014 3.71° 0.68°

Usage

Download the inference code from this Hub repo (model_cgd.py, architectures.py, rotation_utils.py), then:

from model_cgd import CGDAngleEstimation
from PIL import Image

# Load model (defaults to COCO 2017 checkpoint)
model = CGDAngleEstimation.from_pretrained("maxwoe/image-rotation-angle-estimation")

# Or load a specific checkpoint
# model = CGDAngleEstimation.from_pretrained(
#     "maxwoe/image-rotation-angle-estimation",
#     model_name="cgd_mambaout_base_coco2014.ckpt",
# )

image = Image.open("your_image.jpg")
angle = model.predict_angle(image)
print(f"Predicted rotation: {angle:.1f}°")

predict_angle accepts a PIL Image, numpy array, or file path.

Evaluation Results (COCO 2017, 5 seeds)

Metric Value
MAE 2.84°
Median Error 0.55°
RMSE 8.45°
P90 Error 3.54°
P95 Error 12.00°
Accuracy at 2° 90.2%
Accuracy at 5° 97.5%
Accuracy at 10° 98.1%

Model Details

  • Method: Circular Gaussian Distribution (CGD), 360 bins, sigma = 6.0°
  • Backbone: MambaOut Base (mambaout_base.in1k), pretrained on ImageNet-1K
  • Input size: 224 x 224 pixels
  • Output: Probability distribution over 360 angle bins, converted to angle via argmax
  • Loss: KL Divergence with soft Gaussian labels
  • Optimizer: AdamW with ReduceLROnPlateau scheduler

License

MIT

Downloads last month
151
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Space using maxwoe/image-rotation-angle-estimation 1

Paper for maxwoe/image-rotation-angle-estimation