Skip to main content

mobius‑mpd

Möbius Perspective Distortion (MPD) augmentation for PyTorch & Albumentations

Chhipa, Prakash Chandra, et al. "Möbius transform for mitigating perspective distortions in representation learning." European Conference on Computer Vision. Cham: Springer Nature Switzerland, 2024.

Möbius-MPD — Perspective-Distortion Augmentation



1 What is perspective distortion?

A camera viewed from an oblique pose changes the apparent shape, size, orientation and angles of objects in the image plane.:contentReference[oaicite:0]{index=0}


2 Why perspective distortion is troublesome for computer-vision models?

Camera parameters are hard to estimate, so PD can’t be synthesised easily for training.:contentReference[oaicite:1]{index=1}
Existing augmentation methods are affine and lienar in nature are not able to model perspective distortion.:contentReference[oaicite:2]{index=2}
Lack of perspective distortion data leaves models brittle in the wild for real-world applications—crowd counting, fisheye recognition, person re-ID and object detection all degrade when PD is present.:contentReference[oaicite:3]{index=3}


3 What does Möbius-MPD offer?

Möbius-MPD mathmetically models perspective distortion and translate it directly in pixel space with a conformal Möbius mapping

$$ \Phi(z)=\frac{a z + b}{c z + d}, \qquad c!=0 $$

and the real and imaginery compoents of complex parameter c controls the perspectively distorted view generations.

Orientation & intensity control – the signs and magnitudes of (\operatorname{Re}(c)) and (\operatorname{Im}(c)) yield left / right / top / bottom or corner views, scaled continuously.:contentReference[oaicite:4]{index=4}
No camera parameters or real PD images required – the transform alone synthesises realistic PD.:contentReference[oaicite:5]{index=5}
Padding variant – optionally fills black corners with edge pixels.:contentReference[oaicite:6]{index=6}
Proven gains – +10 pp on ImageNet-PD and improvements across crowd counting, fisheye recognition, person re-ID and COCO object detection.:contentReference[oaicite:7]{index=7}


Installation

pip install mobius-mpd

or in editable mode:

git clone https://github.com/prakashchhipa/mobius-mpd
cd mobius-mpd
pip install -e .

Usage

PyTorch / torchvision

from torchvision import transforms
from mobius_mpd import MobiusMPDTransform

train_aug = transforms.Compose([
    MobiusMPDTransform(
        p=0.5,      # apply 50% of the time
        min=0.1,    # minimum |c|
        max=0.3,    # maximum |c|
    ),
    transforms.ToTensor(),
])

Albumentations

import albumentations as A
from mobius_mpd import A_MobiusMPDTransform

aug = A.Compose([
    A_MobiusMPDTransform(p=0.7, min=0.05, max=0.25),
])

Parameters

name default description
p 1.0 probability of applying the transform
min 0.1 lower bound for the sampled coefficient (
max 0.3 upper bound for the sampled coefficient (
background "none" "none" → black corners · "padded" → edge-pixel padding
view_mode "random" "random", "uni-direction", or "bi-direction"
view "random" orientation; for uni: left / right / top / bottom · for bi: left-top / left-bottom / right-top / right-bottom

Examples for different configurations to generate different views. Set view and/or view_mode to random for augmentaiton purpose.

Background setting with and without padding.

Parent project page: https://prakashchhipa.github.io/projects/mpd/

BibTeX

@inproceedings{chhipa2024mobius,
  title     = {Möbius transform for mitigating perspective distortions in representation learning},
  author    = {Chhipa, Prakash Chandra et al.},
  booktitle = {European Conference on Computer Vision (ECCV)},
  year      = {2024},
  publisher = {Springer Nature Switzerland}
}

If this library helps your research, please cite the paper above 🙏.

License

MIT

Release files for mobius-mpd 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mobius-mpd 0.1.6
File Size Uploaded
mobius_mpd-0.1.6.tar.gz 6.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mobius-mpd 0.1.6
File Interpreter ABI Platform
mobius_mpd-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 13.2 kB

Release files / mobius_mpd-0.1.6.tar.gz

Download URL mobius_mpd-0.1.6.tar.gz
Size 6.2 kB
Tags Source
SHA-256 checksum
How to use checksums
6e5b62aa52170981ddce91090cd8a44ebdbbc483dd077d284d3d456e04093861
BLAKE2b-256 checksum
How to use checksums
74d73e19eb7b511c15a3bd0c9c8a3a7e16af0ccb6b61b35a87040e6b03ec72d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.4

Release files / mobius_mpd-0.1.6-py3-none-any.whl

Download URL mobius_mpd-0.1.6-py3-none-any.whl
Size 7.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d64b08be42dcbd7c5ee6f73e3e0b04753b896b6d4d2df68b4876fe03dc12a282
BLAKE2b-256 checksum
How to use checksums
213e92a719c17afaa9e6a295573693053386ded4ad9b84ecc4d5e5ead920fc84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.4

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page